Michael V. De Palatis wrote:
If you data is regularly spaced, you can just use imshow or pcolor. If
it's not regularaly spaced, see
http://www.scipy.org/Wiki/Cookbook/Matplotlib/Gridding_irregularly_spaced_data
Perhaps I'm missing something or did not explain my problem
properly. I am well aware that what I want to use is imshow (or,
apparently, pcolor). However, my problem is that I have all THREE
values in data form, not just x and y (that is, I do not have a
function to get z(x, y), but rather I have data points for z).
I do not see a straightforward way to use imshow or pcolor to be able
to plot this data as they want a matrix that I have no idea how to
generate.
Okay, so your x,y data is regularly spaced. What you have to do is create an
array of the appropriate size to put all of your z values in. Then go through
your list of points and populate the z array in the appropriate places. You will
have to convert your x,y coordinates into i,j indices. If you know the spacing,
this should not be difficult.
Alternatively, you can sort the (x,y,z) tuples, turn it into an array, extract
the z column, reshape the z column into the appropriate matrix, and transpose it
(presuming you want y to be vertical):
In [18]: xyz = [(1, 0, 10), (0, 1, 20), (0, 0, 30), (1, 1, 40)]
In [19]: xyz.sort()
In [20]: xyz
Out[20]: [(0, 0, 30), (0, 1, 20), (1, 0, 10), (1, 1, 40)]
In [21]: xyza = array(xyz)
In [22]: z = xyza[:,-1]
In [23]: z
Out[23]: array([30, 20, 10, 40])
In [24]: z = transpose(reshape(z, (2,2)))
In [25]: z
Out[25]:
array([[30, 10],
[20, 40]])
···
On Sat, Apr 29, 2006 at 09:59:14AM -0700, Andrew Straw wrote:
--
Robert Kern
robert.kern@...287...
"I have come to believe that the whole world is an enigma, a harmless enigma
that is made terrible by our own mad attempt to interpret it as though it had
an underlying truth."
-- Umberto Eco