 Contents of /trunk/pyvisi/examples/surfacePlotExample.py

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