python - 从 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])
解决方案
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()
推荐阅读
- python - 如何在 GPU 上运行这个简单的脚本(使用 PyOpenCL)
- node.js - 在命令行中输入 < npm install --global expo-cli > 后,终端中没有显示 expo 的版本
- javascript - JavaScript 中的异步执行顺序
- java - SQL Server(或任何其他数据库)的 Quarkus 问题
- java - Mockito, refeq() 方法带有下划线“将'null'参数传递给注释为@NotNull 的参数”
- android - prineside.tdi / infinitode Progress.xml 解码
- javascript - 在数据表中添加输入
- snowflake-cloud-data-platform - 雪花中的消费者账户收费
- android - 如何使用 ActivityResultContracts.CreateDocument() 添加意图类型
- python - Pyinstaller:无法在 pyi-makespec 中正确添加二进制文件和数据