|
From: John H. <jdh...@ac...> - 2004-11-11 15:25:53
|
>>>>> "Nils" == Nils Wagner <nw...@me...> writes:
Nils> Hi all, Structure plots provide a quick visual check on the
Nils> sparsity pattern of the matrix. A structure plot is a
Nils> rectangular array of dots; a dot is black if the
Nils> corresponding matrix element is nonzero otherwise it is
Nils> white.
Nils> Is it possible to generate such plots with scipy or should
Nils> we switch over to matplotlib ?
Here's another implementation that uses images - likely to be much
faster for very large matrices.
import random
from matplotlib.colors import LinearSegmentedColormap
from matplotlib.matlab import *
def spy2(Z):
"""
SPY(Z) plots the sparsity pattern of the matrix S as an image
"""
#binary colormap min white, max black
cmapdata = {
'red' : ((0., 1., 1.), (1., 0., 0.)),
'green': ((0., 1., 1.), (1., 0., 0.)),
'blue' : ((0., 1., 1.), (1., 0., 0.))
}
binary = LinearSegmentedColormap('binary', cmapdata, 2)
Z = where(Z>0,1.,0.)
imshow(transpose(Z), interpolation='nearest', cmap=binary)
def get_sparse_matrix(M,N,frac=0.1):
'return a MxN sparse matrix with frac elements randomly filled'
data = zeros((M,N))*0.
for i in range(int(M*N*frac)):
x = random.randint(0,M-1)
y = random.randint(0,N-1)
data[x,y] = rand()
return data
data = get_sparse_matrix(50,60)
spy2(data)
show()
|