繁体   English   中英

从 matplotlib 调色板中删除白色或浅色

[英]Removing white or light colors from matplotlib color palette

matplotlib 调色板通常具有白色或非常浅的颜色,这些颜色在散点图或线图上显示效果不佳。

我正在制作一个我使用的情节

norm = mpl.colors.Normalize(vmin=0, vmax=1)
cmap = mpl.cm.ScalarMappable(norm=norm, cmap=mpl.cm.Blues)
plt.plot(x, y, c=cmap.to_rgba(z))
cbar = plt.colorbar(cmap)

绘制多条线。 我想修改调色板以删除第一个,比如 30% 的颜色。 如何做到这一点?


我的解决方案相当糟糕,是修改以下两行:

norm = mpl.colors.Normalize(vmin=-0.4, vmax=1)
cbar = plt.colorbar(cmap, boundaries=[0,0.2,0.4,0.6,0.8,1])

您可以使用LinearSegmentedColormap轻松创建自定义颜色LinearSegmentedColormap并选择所需的颜色(在本例中为原始颜色图的子集)

min_val, max_val = 0.3,1.0
n = 10
orig_cmap = plt.cm.Blues
colors = orig_cmap(np.linspace(min_val, max_val, n))
cmap = matplotlib.colors.LinearSegmentedColormap.from_list("mycmap", colors)

演示

gradient = np.linspace(0, 1, 256)
gradient = np.vstack((gradient, gradient))

fig, (ax1, ax2) = plt.subplots(2,1, figsize=(5,2))
ax1.imshow(gradient, cmap=orig_cmap, aspect='auto')
ax1.set_title('original')
ax2.imshow(gradient, cmap=cmap, aspect='auto')
ax2.set_title('custom')
plt.tight_layout()

在此处输入图片说明

为了将来参考,我的 CMasher 包提供了一个功能,可以很容易地制作任何颜色图的子版本,同时还注意使用足够的颜色段( https://cmasher.readthedocs.io/user/usage.html#sub -颜色图)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM