python - Pyplot 绘制带有颜色图和 alpha 序列的图像

标签 python matplotlib colors

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

<小时/>

我想要这样的东西: Expected result 其中,颜色条的垂直部分显示 B[0] 中的值,颜色条的水平部分显示 B[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 替换为您想要的另一种颜色。

关于python - Pyplot 绘制带有颜色图和 alpha 序列的图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55028005/

相关文章:

python - DataFrame.groupby(TimeGrouper ="d"): Invalid length for values or for binner

python - 如何在Python中合并读取文档中的每3行

python - 执行 re.search() 直到行尾,然后更新数据帧

python - matplotlib - 无法无错误地绘制

python - 根据时间增量值生成绘图

iPhone objective-c 颜色

javascript - 如何改变这三个.js 脸的颜色?

python - 如何在 Python 中使用循环创建单选按钮

python - 多个数组的绘图

java - 键入按钮时 JButton 不会改变颜色