# Contents of /trunk/pyvisi_old/examples/surfacePlotExample.py

Revision 786 - (show annotations)
Tue Jul 25 04:58:05 2006 UTC (13 years, 1 month ago) by gross
File MIME type: text/x-python
File size: 4722 byte(s)
```switched off pyvisi
```
 1 # \$Id: surfacePlotExample.py,v 1.6 2005/05/05 00:46:44 paultcochrane Exp \$ 2 3 """ 4 Example of plotting surfaces with pyvisi 5 6 @var __author__: name of author 7 @var __license__: licence agreement 8 @var __copyright__: copyrights 9 @var __url__: url entry point on documentation 10 @var __version__: version 11 @var __date__: date of the version 12 """ 13 14 __copyright__=""" Copyright (c) 2006 by ACcESS MNRF 15 16 Primary Business: Queensland, Australia""" 17 __license__="""Licensed under the Open Software License version 3.0 18 19 __author__="Paul Cochrane" 20 __url__= 21 __version__="\$Revision\$" 22 __date__="\$Date\$" 23 24 25 # what plotting method are we using? 26 method = 'pyvisi' 27 28 # set up some data to plot 29 from Numeric import * 30 31 # the x and y axes 32 x = arange(-2,2,0.2, typecode=Float) 33 y = arange(-2,3,0.2, typecode=Float) 34 35 # pick some interesting function to generate the data in the third dimension 36 # this is the one used in the matlab docs: z = x*exp(-x^2-y^2) 37 z = zeros((len(x),len(y)), typecode=Float) 38 39 # boy do *I* feel old fashioned writing it this way 40 # surely there's another way to do it: - something to do later 41 for i in range(len(x)): 42 for j in range(len(y)): 43 z[i,j] = x[i]*exp(-x[i]*x[i] - y[j]*y[j]) 44 45 # plot it with either gnuplot, vtk or pyvisi 46 if method == 'pyvisi': 47 #### pyvisi version of code 48 49 # import the general pyvisi stuff 50 from esys.pyvisi import * 51 # import the gnuplot overrides of the interface 52 #from esys.pyvisi.renderers.gnuplot import * 53 from esys.pyvisi.renderers.plplot import * 54 55 # define a scene object 56 # a Scene is a container for all of the kinds of things you want to put 57 # into your plot, for instance, images, meshes, arrow/vector/quiver 58 # plots, contour plots, spheres etc. 59 scene = Scene() 60 61 # create a SurfacePlot object 62 plot = SurfacePlot(scene) 63 64 # add some helpful info to the plot 65 plot.title = 'Example surface plot' 66 plot.xlabel = 'x' 67 plot.ylabel = 'y' 68 plot.zlabel = 'z' 69 70 # assign the data to the plot 71 # this version assumes that we have x, then y, then z and that z is 2D 72 # and that x and y are 1D arrays 73 plot.setData(x,y,z) 74 # alternative syntax 75 #plot.setData(xData=x, yData=y, zData=z) 76 # or (but more confusing depending upon one's naming conventions) 77 #plot.setData(x=x, y=y, z=z) 78 79 # render the scene to screen 80 scene.render(pause=True, interactive=True) 81 82 # save the scene to file 83 plot.setData(x,y,z) # have to do this now because we've already 84 # render()ed the scene. This requirement will be 85 # removed in the future 86 scene.save(fname="surfacePlot.png", format=PngImage()) 87 88 elif method == 'vtk': 89 print "vtk surface plotting not yet implemented" 90 91 elif method == 'plplot': 92 import plplot 93 94 # determine the min and max of x, y, and z in world coordinates 95 xMin = min(x) 96 xMax = max(x) 97 98 yMin = min(y) 99 yMax = max(y) 100 101 zMin = min(z.flat) 102 zMax = max(z.flat) 103 104 # min and max of x and y variables in normalised coordinates 105 # (these are values recommended by plplot in an example) 106 xMin2D = -2.5 107 xMax2D = 2.5 108 109 yMin2D = -2.5 110 yMax2D = 4.0 111 112 # sides of box in normalised coordinates 113 # (these are values recommended by plplot in an example) 114 basex = 2.0 115 basey = 4.0 116 height = 3.0 117 118 # angle to view box 119 alt = 45.0 120 az = 30.0 121 122 side = 1 123 opt = 3 # plots a net of lines 124 125 plplot.plsdev("xwin") 126 plplot.plinit() 127 plplot.plenv(xMin2D, xMax2D, yMin2D, yMax2D, 0, -2) 128 plplot.plw3d(basex, basey, height, 129 xMin, xMax, yMin, yMax, zMin, zMax, 130 alt, az) 131 plplot.plmtex("t", 1.0, 0.5, 0.5, "Example surface plot") 132 plplot.plbox3("bnstu", "x axis", 0.0, 0, 133 "bnstu", "y axis", 0.0, 0, 134 "bcdmnstuv", "z axis", 0.0, 0) 135 plplot.plsurf3d(x, y, z, 0, ()) 136 plplot.plend() 137 138 # to save as well, have to set everything up again, and replot 139 # save as png 140 plplot.plsdev("png") 141 plplot.plsfnam("surfacePlot.png") 142 plplot.plinit() 143 plplot.plenv(xMin2D, xMax2D, yMin2D, yMax2D, 0, -2) 144 plplot.plw3d(basex, basey, height, 145 xMin, xMax, yMin, yMax, zMin, zMax, 146 alt, az) 147 plplot.plmtex("t", 1.0, 0.5, 0.5, "Example surface plot") 148 plplot.plbox3("bnstu", "x axis", 0.0, 0, 149 "bnstu", "y axis", 0.0, 0, 150 "bcdmnstuv", "z axis", 0.0, 0) 151 plplot.plsurf3d(x, y, z, 0, ()) 152 plplot.plend() 153 154 else: 155 print "Eeek! What plotting method am I supposed to use???" 156 157 # vim: expandtab shiftwidth=4: