# creating a flat surface in python

I'm trying to create a figure of particle distribution from a reference surface in python. I plan to get a distribution in python and then prettify it with tikz. I tried this:

xs = np.linspace(-1, 1, 10)
ys = np.linspace(-1, 1, 10)
X, Y = np.meshgrid(xs, ys)

Z = X
for i in range (0, 10):
for j in range (0, 10):
Z[i][j] = 0

xs = randomrange(10, -1, 1)
ys = randomrange(10, -1, 1)
zs = randomrange(10, 0, 10)
ax.plot_surface(X, Y, Z)
ax.scatter(xs, ys, zs)


However, I get a single line with an error message:

/usr/lib/python3.2/site-packages/mpl_toolkits/mplot3d/axes3d.py:1478: RuntimeWarning: nvalid value encountered in true_divide for n in normals])

I assume that this is due to division by 0 (trying to color the surface).

How can I generate a reference surface then?

Edit:

I tried MRocklin's solution and replaced

Z = X


with

Z = np.zeros_like(X)


Now I don't get any surface at all...

In the line

Z = X


You're just renaming X to Z, not making a copy. Your code then proceeds to zero out all elements of X. You might want to try replacing this with the following:

Z = X.copy()


Actually, the first bit of your code could be replaced with

X, Y = np.mgrid[-1:1:10j, -1:1:10j]
Z = np.zeros_like(X)


Here is the full Python code to produce a flat surface using the mpl toolkit mplot3d running python 2.7.2 from the EPD academic distribution 7.1-2

\$ ipython --pylab
In : from mpl_toolkits import mplot3d

In : f = figure()

In : ax = mplot3d.Axes3D(f)

In : X, Y = mgrid[-1:1:10j, -1:1:10j]

In : Z = zeros_like(X)

In : ax.plot_surface(X,Y,Z)
/home/mrocklin/Software/epd/lib/python2.7/site-packages/mpl_toolkits/mplot3d/axes3d.py:777: RuntimeWarning: invalid value encountered in divide
n = n / proj3d.mod(n)
Out: <mpl_toolkits.mplot3d.art3d.Poly3DCollection at 0xaa13d2c>

In : show() • Those two lines produce what I believe to be the original intent for the variables X,Y, and Z. I believe that this does cover the first two sections. The variables xs, ys, and zs are defined separately in the third section. – MRocklin Jan 16 '12 at 19:08
• I tried this and I don't get any surface at all. – Yotam Jan 16 '12 at 20:32
• @Yotam: When you tried it, what errors did you receive, if any? – Paul Jan 16 '12 at 22:14
• I don't get any. I am trying to generate the surface with other particles though – Yotam Jan 17 '12 at 7:01