我想填充数组,然后将其显示为图像。我想为每个数组元素设置两个参数:“颜色值”和“透明度值”。 我正在使用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()
提前致谢。
答案 0 :(得分:2)
文档(http://matplotlib.sourceforge.net/api/pyplot_api.html#matplotlib.pyplot.imshow)表示您可以将MxNx4 RGBA值数组传递给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], ...)
答案 1 :(得分: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()