You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python Matplotlib如何恢复colormap色图默认设置

Matplotlib colormap默认配置恢复方法

问题背景

  • 此前调用set_under('w')设置了低于阈值显示白色的规则后,该配置全局生效,所有绘图中数值小于set_under阈值的部分都会被绘制为白色
  • 已知可通过copy()方法创建色图副本,避免修改全局默认配置,但需要将已被修改的colormap恢复为默认状态,让超出colorbar范围的数值直接映射到colorbar最小/最大边界对应的颜色,而非被替换为自定义的白色

可用解决方案

  • 全量重置所有内置colormap:matplotlib 3.5及以上版本可直接执行plt.colormaps.reload(),一键将所有色图的set_under/set_over/set_bad自定义配置清空,恢复为出厂默认状态,执行后超范围数值会自动匹配色条边界颜色
  • 单种色图重置:如果不需要重置全部色图,可直接重新调用plt.get_cmap('你的目标色图名称')获取该色图的原始默认实例,用新获取的实例覆盖之前被修改的色图变量即可,后续绘图传入该新实例就不会受之前自定义规则的影响
  • 低版本兼容方案:如果使用matplotlib 3.5以下版本,直接重启Python内核、重新导入matplotlib即可清空所有全局色图的自定义修改

最佳实践

后续需要自定义色图的超范围显示规则时,优先创建色图副本再修改,不会污染全局配置:

# 先创建副本再修改,不会影响全局默认配置
cmap_custom = plt.get_cmap('viridis').copy()
cmap_custom.set_under('w')
# 仅在需要用到白色超界显示的绘图任务中传入cmap_custom即可
plt.imshow(data, cmap=cmap_custom, vmin=0, vmax=1)

效果验证代码

执行重置后可运行以下代码验证效果,超范围值不会再显示为白色:

import matplotlib.pyplot as plt
import numpy as np

# 执行重置
plt.colormaps.reload()

# 生成带超出[-1,1]范围值的测试数据
test_data = np.random.randn(12, 12) * 2
plt.imshow(test_data, vmin=-1, vmax=1, cmap='viridis')
plt.colorbar(extend='both')
plt.show()

内容的提问来源于stack exchange,提问作者tgbnez

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.03 11:27:47