matplotlib使用savefig保存图片时标题及坐标轴标签背景与绘图区不一致如何解决
问题原因及解决方案
核心原因
该问题是Matplotlib保存图片时未显式指定画布背景色,继承了全局样式的非白色背景,和Jupyter Notebook渲染时的默认背景不一致导致的,常见触发场景有两类:
- 之前在代码中全局设置过Matplotlib的暗黑/深色主题样式(比如调用过
plt.style.use('dark_background')或者同类自定义样式),Jupyter Notebook内显示时因为渲染机制会自动适配画布背景,但保存图片时没有主动覆盖背景色参数就会沿用全局配置的深色背景。 - 部分版本的Matplotlib中,
savefig方法默认不会继承创建画布时设置的facecolor属性,就算创建画布时指定了白色背景,保存时也可能会调用默认的透明/深色背景值。
修复方法
修改plt.savefig代码行,显式指定背景色为白色即可,修改后代码如下:
plt.savefig("dummy.png", bbox_inches='tight', facecolor='white')
如果需要彻底避免该问题,也可以在创建画布时就显式指定背景色,双重保险:
fig, ax1 = plt.subplots(1, 1, sharex=True, facecolor='white')
如果是之前误设置了全局深色主题,可以在绘图代码前重置Matplotlib的默认样式:
plt.style.use('default')
内容的提问来源于stack exchange,提问作者user1245262
相关产品推荐
相关产品推荐

