我有 n 个 float 矩阵 (np.array),我想使用 imshow 将它们绘制在一起,但每个矩阵的值都有不同的颜色范围。例如n = 白色-> 蓝色,n+1 = 白色-> 红色等。 有办法做到这一点吗?
矩阵的大小相同,相互着色并不是什么大问题,因为大多数矩阵的值为 0(希望是白色)。
我在想这样的事情:
第一个矩阵
000
010
000
第二矩阵
000
000
001
所以我想也许我可以将第二个矩阵转换成:
222
222
223
然后让 0->1 白变蓝,2->3 白变红。
不幸的是,我不知道如何使用 matplotlib 颜色图来做到这一点。
请您参考如下方法:
imshow 不会绘制设置为 None 的值。如果数据足够稀疏,您可以将它们放在一起。
import numpy as np
import pylab as plt
# Your example data
A1 = np.zeros((3,3))
A2 = np.zeros((3,3))
A1[1,1] = 1
A2[2,2] = 1
# Apply a mask to filter out unused values
A1[A1==0] = None
A2[A2==0] = None
# Use different colormaps for each layer
pwargs = {'interpolation':'nearest'}
plt.imshow(A1,cmap=plt.cm.jet,**pwargs)
plt.imshow(A2,cmap=plt.cm.hsv,**pwargs)
plt.show()
