Skip to main content
 首页 » 编程设计

python之Matplotlib imshow之显示不同的颜色

2025年05月04日21haluo1

我有 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()