Matplotlib imshow - 显示不同的颜色

时间:2012-05-29 12:52:34

标签: python numpy matplotlib

我有浮点数的n个矩阵(np.array),我想使用imshow将它们一起绘制,但每个颜色的值都有不同的颜色范围。例如n =白色 - >蓝色,n + 1 =白色 - >红色等 有没有办法做到这一点?

矩阵具有相同的大小,并且相互着色不是太大的问题,因为大多数矩阵的值都是0(希望是白色的)。

我想的是:

第一个矩阵

000
010
000

第二个矩阵

000
000
001

所以我想也许我可以把第二个矩阵转换成:

222
222
223

然后使0-> 1白色到蓝色和2-> 3白色到红色。

我很遗憾不知道如何使用matplotlib色图来完成此操作。

1 个答案:

答案 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()

enter image description here