1

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

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

我在想类似的东西:

第一个矩阵

000
010
000

第二矩阵

000
000
001

所以我想也许我可以将第二个矩阵转换为:

222
222
223

然后将 0->1 白色变为蓝色,将 2->3 白色变为红色。

不幸的是,我不知道如何使用 matplotlib 颜色图来做到这一点。

4

1 回答 1

6

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

在此处输入图像描述

于 2012-05-29T13:53:04.957 回答