我有浮点数的n个矩阵(np.array),我想使用imshow将它们一起绘制,但每个颜色的值都有不同的颜色范围。例如n =白色 - >蓝色,n + 1 =白色 - >红色等 有没有办法做到这一点?
矩阵具有相同的大小,并且相互着色不是太大的问题,因为大多数矩阵的值都是0(希望是白色的)。
我想的是:
第一个矩阵
000
010
000
第二个矩阵
000
000
001
所以我想也许我可以把第二个矩阵转换成:
222
222
223
然后使0-> 1白色到蓝色和2-> 3白色到红色。
我很遗憾不知道如何使用matplotlib色图来完成此操作。
答案 0 :(得分:5)
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()