John Hunter wrote:

> Does it work for SciPy sparse matrices

> (e.g. scipy.sparse.csr_matrix)? I don't think so... That

> is why I provided my solution. Otherwise, of course, I am

> well aware of spy, spy2

>> I see -- can you post a simple example (with version nums for

>> numpy/scipy/mpl) that exposes the bug. Hopefully there will be

>> an easy fix.

> Sure:

> matplotlib: 0.87.2-r2

> from SVN: numpy: Checked out revision 2433. scipy:

> Checked out revision 1888.

> The problem is, that you cannot use 'where' for sparse

> matrices yet...

For spy we can use

def spy(self, Z, marker='s', markersize=10, **kwargs):

"""

SPY(Z, **kwargs) plots the sparsity pattern of the matrix Z

using plot markers.

kwargs give the marker properties - see help(plot) for more

information on marker properties

The line handles are returned

"""

if hasattr(Z, 'tocoo'):

c = Z.tocoo()

x = c.row

y = c.col

z = c.data

else:

x,y,z = matplotlib.mlab.get_xyz_where(Z, Z>0)

return self.plot(x+0.5,y+0.5, linestyle='None',

marker=marker,markersize=markersize, **kwargs)

you may want to plug this into your axes.py and test.

For spy2 it is a bit tricker, since it uses an image. One option

would be to create a regular array of dimensions MxN and fill in the

nonempty cells, but this kind of defeats the purpose of using sparse

arrays. Another is to use a special purpose RegularPolygonCollection,

and build rectangles at each non-zero pixel. I like this option best

because it preserves sparsity and allows colormapping, etc..

JDH