是否有从透明变为黑色(或任何其他颜色)的 cmap?

cmap="binary"在带有零和一的数据集上使用以下内容。cmap 从白色变为黑色。结果如下图所示:

黑白图:


因为我想将此图与现有图重叠,所以我想保留黑色但使白色透明。

与白色重叠的图像:

有没有从透明到黑色的cmap?

我使用以下代码来绘制图表:

plt.pcolor(mp1,cmap="binary",alpha=0.5)


慕沐林林
浏览 147回答 3
3回答

守候你守候我

找到解决方案了!            c_white = matplotlib.colors.colorConverter.to_rgba('white',alpha = 0)            c_black= matplotlib.colors.colorConverter.to_rgba('black',alpha = 1)            cmap_rb = matplotlib.colors.LinearSegmentedColormap.from_list('rb_cmap',[c_white,c_black],512)                                    pl = plt.pcolor(mp1,cmap=cmap_rb)

慕婉清6462132

如果mp1只有值 0 和 1,中间没有任何值,则可以屏蔽掉零并仅绘制零。np.where(mp1 == 1, 1, np.nan)只会显示那些。使用vmin=0将确保 0 映射到“二元”颜色图的白色,并将vmax=11 映射到黑色。import matplotlib.pyplot as pltimport numpy as npmp0 = np.random.randn(15, 30).cumsum(axis=1).cumsum(axis=0) # random backgroudmp1 = np.zeros((15, 30)) # start with all zerosmp1[np.random.randint(0, 15, 30), np.random.randint(0, 30, 30)] = 1 # set some random positions to 1plt.pcolormesh(mp0, cmap='rainbow')plt.pcolormesh(np.where(mp1 == 1, 1, np.nan), cmap='binary', vmin=0, vmax=1)plt.tight_layout()plt.show()

哈士奇WWW

定义自己的 RGBA 颜色图并不太困难(来源)。例如,要定义具有线性变化透明度的黑色贴图:from matplotlib.colors import ListedColormapcmap = np.zeros([256, 4])cmap[:, 3] = np.linspace(0, 1, 256)cmap = ListedColormap(cmap)用法示例:import numpy as npimport matplotlib.pyplot as pltfrom matplotlib.colors import ListedColormapx = 2 * np.pi * np.linspace(-1, 1, 100)z = np.sin(x.reshape(1, -1) + x.reshape(-1, 1))cmap = np.zeros([256, 4])cmap[:, 3] = np.linspace(0, 1, 256)cmap = ListedColormap(cmap)plt.figure()plt.pcolormesh(z + 1, cmap='bwr', edgecolors=None)plt.pcolormesh(np.fliplr(z), cmap=cmap, edgecolors=None)plt.savefig("temp")
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python