Imagine your arrays had points (Cartesian position
> vectors) all over the place at completely random points
> in space. The 'shape' of this plot depends on max and
> min values of each coordinate. I believe Mathematica
> plotting would automagically calculate these max and min
> values and set plot ranges for you. This is why 'shape'
> attribute of Matplotlib/Numarray seems awkward and
> unnecessary to me unless I'm missing something.
There are a variety of issues here.
- The "shape" attribute comes form Numeric/numarray and is outside
the realm of matplotlib. matplotlib plots numerix arrays.
- The pcolor interface is determined by matlab. matlab has a pcolor
function which I have tried to implement faithfully. To the
extent that matplotlib has been successful, this is due in part
because matlab has a good interface for plotting and replicating
it generally, is a good thing.
- Storing the "shape" of a data set allows for memory and efficiency
savings. To take your example of a set of x,y,z points, you are
right you cold reconstruct rectilinear grid from this data -- one
might have to use interpolation but it can be done -- but it would
require a lot of unnecessary computation for data which already
lives on a grid. So pcolor assumes your data are on a rectilinear
grid and it is incumbent upon you to get it into that form.
The meshgrid function takes regularly sampled vector data and
turns it into a rectilinear grid (this is also a matlab function).
The matlab griddata function (which is not yet implemented in
matplotlib) does the same for irregularly sampled data.