与 imshow使用 pyplot 中的函数,我可以绘制 (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 选项必须是标量或 None
使用 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
中的实际值制作颜色条。
最佳答案
第一部分相对简单:
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 替换为您想要的另一种颜色。
关于python - Pyplot 绘制带有颜色图和 alpha 序列的图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55028005/