带颜色图和Alpha序列的Pyplot图图像

时间:2019-03-06 16:36:14

标签: python matplotlib colors

借助pyplot中的imshow函数,我可以绘制(M,N)大小的图像,其中(M,N)大小的数组中的每个值都与颜色图中的颜色相关联

import numpy as np
import matplotlib.pyplot as plt

A = np.random.rand(5,5)
plt.imshow(A, cmap='jet')
plt.colorbar()
plt.show()

我有一个要显示的(2,M,N)大小的数组(我们称之为B)。 B[0]给出了色相,B[1]是Alpha。这里,B[0]与第一个示例中的A相同。

我想写类似plt.imshow(B[0], cmap='jet', alpha=B[1])的东西。但是alpha的值对于整个图像必须相同,因为alpha选项必须为标量或无

使用imshow,我还可以指定(M,N,3)或(M,N,4)数组,其中给出R,G,B和alpha的值。但是,我不知道如何从初始(M,N)大小的数组A中获取RGB值。


我尝试通过HSV方案从值中设置颜色,然后转换为RGB并使用这些颜色进行绘制

from matplotlib import colors

B = np.random.rand(2,5,5)

hue = B[0]
sat = B[1]
val = np.ones(B[0].shape)

rgb = colors.hsv_to_rgb(np.array([hue, sat, val]).T)

plt.imshow(rgb)
plt.show()

但是,我不知道如何根据B中的实际值制作颜色条。


我要这样的事情: Expected result 颜色栏的垂直部分显示B[0]中的值,颜色栏的水平部分显示B[1]中的值。

1 个答案:

答案 0 :(得分:1)

第一部分相对简单:



import numpy as np
import matplotlib.pyplot as plt

A = np.random.rand(5,5)
cmap = plt.get_cmap('jet')

rgba_img = cmap(A)
rgba_img[:, :, 3] = np.random.rand(5, 5)

plt.imshow(rgba_img)
plt.colorbar()
plt.show()

制作颜色条更加困难。基本上,您将需要用另一种看起来像您想要的颜色替换用于制作颜色条的pcolor。