如何在Jupyter笔记本中保存带不透明白色边框的Matplotlib图像?
解决Jupyter Notebook中Matplotlib保存图像时边框透明的问题
我之前也碰到过一模一样的困扰!在使用%matplotlib notebook交互式后端时,单纯设置savefig(transparent=False)经常没办法把默认的透明边框改成不透明——这是因为这个后端默认会给Figure设置透明背景,而且这个设置会覆盖savefig的部分参数。下面给你几个亲测有效的解决办法:
方法1:创建Figure时直接指定背景色
在初始化Figure和Axes的时候,显式设置facecolor为不透明颜色(比如白色):
%matplotlib notebook import numpy as np import matplotlib.pyplot as plt # 创建带白色背景的Figure fig, ax = plt.subplots(facecolor='white') x = np.linspace(-6, 6, 100) ax.plot(x, np.sinc(x)) plt.savefig('test.png', transparent=False)
方法2:保存时强制指定背景色
如果不想修改Figure的创建代码,可以在savefig里直接加上facecolor参数,强制覆盖背景设置:
plt.savefig('test.png', transparent=False, facecolor='white')
方法3:手动设置Figure的背景色
也可以在绘图完成后,手动给Figure的补丁(patch)设置背景色,再保存:
fig.patch.set_facecolor('white') plt.savefig('test.png', transparent=False)
为什么会出现这个问题?
%matplotlib notebook是交互式后端,它默认的Figure背景是透明的,方便在Notebook里和页面融合。而transparent=False这个参数主要控制的是图像内容的透明度,并不会主动覆盖Figure本身的背景设置。所以必须显式给Figure指定一个不透明的背景色,才能让保存后的图像边框区域变成不透明状态。
内容的提问来源于stack exchange,提问作者Steven C. Howell
相关产品推荐
相关产品推荐

