首页 > 解决方案 > 从 matplotlib 调色板中删除白色或浅色

问题描述

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])

标签: pythonmatplotlib

解决方案


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()

在此处输入图像描述


推荐阅读