2

我想填充一个数组,然后像图像一样显示它。我想为每个数组元素设置两个参数:“颜色值”和“透明度值”。我正在使用 matplotlib 中的 imshow,但我对其他解决方案持开放态度。我试过这样的东西,其中 ca_map 是一个 MxN 数组。

ca_map = np.array(ca_map)

palette = cm.jet
palette.set_under('w', 1.0)

plt.axis('off')
plt.imshow(ca_map, cmap=palette, norm=colors.Normalize(vmin=0, clip=False), interpolation='sinc')
plt.show()

提前致谢。

4

2 回答 2

2

文档(http://matplotlib.sourceforge.net/api/pyplot_api.html#matplotlib.pyplot.imshow)说您可以将 RGBA 值的 MxNx4 数组传递给 imshow。因此,假设 ca_map 是 MxNx3,您可以执行以下操作:

plt.imshow(np.dstack([ca_map, alpha], ...)

或者如果 ca_map 是 MxN,那么:

plt.imshow(np.dstack([ca_map, ca_map, ca_map, alpha], ...)
于 2012-07-12T02:33:24.117 回答
1

Luke 的回答对 MxNx3 很好,但对于 MxN 情况,他的解决方案将为您的图像提供灰色阴影(相等的 rgb 值)。如果您想要图像中的任何颜色,以下可能会有所帮助:

import matplotlib.pyplot as plt
import numpy

data = numpy.arange(12.).reshape(3, 4)

import matplotlib.colors
norm = matplotlib.colors.Normalize(data.min(), data.max())


img_array = plt.get_cmap('jet')(norm(data))
print img_array.shape
img_array[..., 3] = 1 - (norm(data)/2)  # <- some alpha values between 0.5-1

plt.imshow(img_array)
plt.show()
于 2012-07-13T12:57:21.000 回答