It looks like the 'spy' function ignores negative values
> (matplotlib 0.87.5).
> In [30]:spy( ones( (5, 5) ) )[0].get_xdata() Out[30]:
> array([ 0.5, 0.5, 0.5, 0.5, 0.5, 1.5, 1.5, 1.5, 1.5, 1.5,
> 2.5, 2.5, 2.5, 2.5, 2.5, 3.5, 3.5, 3.5, 3.5, 3.5, 4.5,
> 4.5, 4.5, 4.5, 4.5])
> In [31]:spy( -ones( (5, 5) ) )[0].get_xdata()
> Out[31]:array(, type=Float)
The implementation of spy is pretty simple:
def spy(self, Z, marker='s', markersize=10, **kwargs):
"""
SPY(Z, **kwargs) plots the sparsity pattern of the matrix Z
using plot markers.
The line handles are returned
kwargs control the Line2D properties of the markers:
%(Line2D)s
"""
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)
I am not a spy user, though I wrote it. I assume the test should be Z!=0?
Note spy2 (which arguably makes a nicer plot) has the same potential
problem. If there is consensus that it should be !=0 I am happy to
change it.
JDH