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()
我尝试在 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()