借助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
中的实际值制作颜色条。
答案 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。