在matplotlib中为特定点设置不同颜色的矩阵
我有一个矩阵,使用 self.ax.imshow(arr,cmap=plt.cm.Greys_r, interpolation = 'none')
在 matplotlib 中绘制出来。现在这些矩阵的颜色都是一样的。不过,我还有一个和这个矩阵大小相同的数组,这个数组里包含从 0 到 1 的数字。这个数组里的每个数字都对应矩阵上的一个点。
我想知道怎么才能让这个包含 0 到 1 的数组对应到矩阵上点的颜色上。
我有一个数组 numberlist = [(1,34),(2,35),(5,78) 等等]
,一直到 310。然后我执行了
data = np.array(number list)
N=data.max()+5
arr=np.ones((N,N),dtype='bool')
arr[data[:,1],data[:,0]]=0
接着就是上面的 imshow。
1 个回答
0
根据你的修改,我觉得你想表达的是:
- 你有一个
boolean
数组,用来告诉你某个点是否应该被绘制。 - 你还有一个
float
数组,用来告诉你如果这个点被绘制,它应该是什么颜色。
我想把这两个数组称为: arr_bool
和 arr_val
。
把它们相乘,当 arr_bool
是真的时候,你会得到一个浮点数(颜色值),而当它是假的时候,你会得到零。我们可以用它们的乘积来上色:
N = 10
arr_bool = np.random.random_integers(0,1,(N,N))
arr_val = np.random.rand(N,N)
imshow(arr_bool*arr_val, cmap = cm.spectral_r, interpolation = 'nearest')
所以,如果我们只绘制 arr_bool
,它看起来会是这样:
如果我们只绘制颜色,也就是
arr_val
:
把它们结合在一起,
arr_bool * arr_val
: