1 
# $Id: meshPlotExample.py,v 1.2 2005/05/24 01:33:54 paultcochrane Exp $ 
2 

3 
""" 
4 
Example of plotting meshed 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^2y^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 pyvisi import * 
33 
# import the gnuplot overrides of the interface 
34 
from pyvisi.renderers.gnuplot import * 
35 

36 
# define a scene object 
37 
# a Scene is a container for all of the kinds of things you want to put 
38 
# into your plot, for instance, images, meshes, arrow/vector/quiver 
39 
# plots, contour plots, spheres etc. 
40 
scene = Scene() 
41 

42 
# create a MeshPlot object 
43 
plot = MeshPlot(scene) 
44 

45 
# add some helpful info to the plot 
46 
plot.title = 'Example mesh plot' 
47 
plot.xlabel = 'x' 
48 
plot.ylabel = 'y' 
49 
plot.zlabel = 'z' 
50 

51 
# assign the data to the plot 
52 
# this version assumes that we have x, then y, then z and that z is 2D 
53 
# and that x and y are 1D arrays 
54 
plot.setData(x,y,z) 
55 
# alternative syntax 
56 
#plot.setData(xData=x, yData=y, zData=z) 
57 
# or (but more confusing depending upon one's naming conventions) 
58 
#plot.setData(x=x, y=y, z=z) 
59 

60 
# render the scene to screen 
61 
scene.render(pause=True, interactive=True) 
62 

63 
# save the scene to file 
64 
plot.setData(x,y,z) # have to do this now because we've already 
65 
# render()ed the scene. This requirement will be 
66 
# removed in the future 
67 
scene.save(fname="meshPlot.png", format=PngImage()) 
68 

69 
elif method == 'vtk': 
70 
print "vtk mesh plotting not yet implemented" 
71 

72 
else: 
73 
print "Eeek! What plotting method am I supposed to use???" 
74 

75 
# vim: expandtab shiftwidth=4: 