Matplotlib中带num_steps参数的get_cmap代码如何适配新版本?
解决Matplotlib 3.7+中
get_cmap弃用后的离散色阶替代方案 原来的plt.cm.get_cmap("coolwarm", num_steps)是用来生成包含num_steps个离散颜色的色阶,在Matplotlib新版本里可以通过以下两种方式实现相同效果:
方法1:用resampled()一步到位
先获取完整的色阶对象,再调用resampled()方法指定离散步数即可:
import matplotlib.pyplot as plt # 获取完整的coolwarm色阶 cmap = plt.colormaps["coolwarm"] # 生成包含指定步数的离散色阶 discrete_cmap = cmap.resampled(num_steps)
方法2:手动提取颜色创建离散色阶
如果需要更精细的颜色控制,也可以手动从原色阶中提取均匀间隔的颜色,再用ListedColormap生成离散色阶:
import matplotlib.pyplot as plt from matplotlib.colors import ListedColormap cmap = plt.colormaps["coolwarm"] # 从原色阶中均匀提取num_steps个颜色 colors = cmap([i/(num_steps-1) for i in range(num_steps)]) discrete_cmap = ListedColormap(colors)
两种方法都能实现和旧代码完全一致的离散色阶效果,且兼容Matplotlib 3.7及以上版本。
内容的提问来源于stack exchange,提问作者juerg
相关产品推荐
相关产品推荐

