Matplotlib / Imshow / 透明层无处不在但某些点

Matplotlib / Imshow / transparent layer everywhere but certain points

我尝试在 imshow 上绘制图层。该层基于矩阵,其中每个值都等于 0,但某些特定像素等于 1。

如果我使用 alpha 参数,我也会失去 mycolor...我如何在图层中具有“1”值的地方获得 0% 的透明度,在等于 0 的地方获得 100% 的透明度?

这是一个例子:

import matplotlib.pyplot as plt
import numpy as np

x = np.linspace(0,5,6)
y = x

X, Y = np.meshgrid(x,y)

Z = (X**2+Y-11)**2

plt.imshow(Z,cmap='jet')

layer = np.zeros((6,6))
layer[3,3] = 1
layer[2,4] = 1
plt.imshow(layer,alpha=0.1,cmap = 'Purples')

谢谢你的帮助!

编辑:我如何尝试给出 alpha 矩阵

import numpy as np
import matplotlib.pyplot as plt

x = np.linspace(0,5,6)
y = x

X, Y = np.meshgrid(x,y)

Z = (X**2+Y-11)**2

plt.subplot(1,3,1)
plt.imshow(Z,cmap='jet')

layer = np.zeros((6,6))
layer[3,3] = 1
layer[2,4] = 1

alphas = layer.copy()

alphas[alphas==0]=0.1
alphas[alphas==1]=0.9


plt.subplot(1,3,2)
plt.imshow(layer,alpha=0.9,cmap = 'Reds')

plt.subplot(1,3,3)
plt.imshow(Z,cmap='jet')
plt.imshow(layer,alpha=alphas,cmap = 'Reds')

您可以使用给定的掩蔽想法 。这里,masked_where 将 return 一个 MaskedArray 如果 layer=0 将被屏蔽,如果 layer=1 将屏蔽 1。这样,您将获得 100% 的透明度,其中 layer 等于 0 和 0% 的透明度,其中图层为“1”

ax = plt.subplot(1,3,1)
plt.imshow(Z,cmap='jet')

layer = np.zeros((6,6))
layer[3,3] = 1
layer[2,4] = 1

masked = np.ma.masked_where(layer == 0, layer)
ax.imshow(masked,alpha=1,cmap = 'Reds')
plt.show()