假设我有两个 numpy 数组(我提供的只是示例):
import numpy as np
A = np.arange(144).reshape((12, 12))
np.random.shuffle(A)
B = np.ones((12,12))
B[0:10:4,:] = None
我想使用 imshow 绘制 A:
import matplotlib.pyplot as mplt
mplt.imshow(A, cmap = mplt.gray())
并覆盖 B,使 None 区域完全透明,one 区域的 alpha 为(例如 alpha = 0.3。) .
我已经尝试过使用类似的东西:
mplt.imshow(B, cmap = mplt.get_cmap('Reds), alpha = 0.3)
但这行不通。还尝试使用掩码数组来创建 B,但无法理解它。有什么建议吗?
谢谢
编辑:
我最终使用了
my_red_cmap = mplt.cm.Reds
my_red_cmap.set_under(color="white", alpha="0")
这非常有效(我也测试了 Bill 的解决方案,它也非常有效)。
最佳答案
如果您使用 0 作为透明颜色而不是 None
,您可以使用您最喜欢的 matplotlib 颜色图并在它的开头添加透明颜色:
my_red_cmap = mplt.cm.Reds
my_red_cmap.set_under(color="white", alpha="0")
然后您可以使用您想要的全局 alpha 0.3 绘制数组 B
,使用您的自定义颜色图,它将使用透明白色作为其第一个值。
关于python - Matplotlib 透明叠加 & pdf 透明,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22328981/