如何在更改背景色后保存Matplotlib图像?
如何在更改背景色后保存Matplotlib图像?
使用Spyder IDE,我创建了一个matplotlib图表,并将图形对象和轴对象的背景色(面色)都更改为黑色。当我尝试使用plt.savefig(...)
保存图表时,轴、标题和轴标签都没有包含在内。
我尝试了实施标准建议,在plt.savefig()
函数中添加bbox_inches='tight'
,以便在轴被截断时使用:
plt.savefig("my_fig_name.png", bbox_inches='tight')
但没有成功。他人建议我在Jupyter Notebook或Spyder中将绘图方式从"automatic"改为"inline"。但这没有影响。我还尝试确保图表中有足够的空间容纳我的轴:
fig.add_axes([0.1,0.1,0.75,0.75])
这也没有起作用。下面的代码足以重现我的经历。
import matplotlib.pyplot as plt xs, ys = [0,1], [0,1] fig = plt.figure(figsize=(6, 6)) # 添加tight_layout=True没有效果 ax = fig.add_subplot(1, 1, 1) # 当下面的代码块被注释掉时,图表的颜色不变,plt.savefig函数能正常工作 fig.patch.set_facecolor("#121111") ax.set_facecolor("#121111") ax.spines['top'].set_color("#121111") ax.spines['right'].set_color("#121111") ax.spines['bottom'].set_color('white') ax.spines['left'].set_color('white') ax.xaxis.label.set_color('white') ax.tick_params(axis='x', colors='white') ax.yaxis.label.set_color('white') ax.tick_params(axis='y', colors='white') ax.set_title("My Graph's Title", color="white") plt.plot(xs, ys) plt.xlabel("x-label") plt.ylabel("y-label") plt.savefig("my_fig_name.png", bbox_inches="tight")
我期望获得如下的图像:
然而,plt.savefig(...)
给我提供了以下结果:
奇怪的是,似乎在图表周围有空白区域,即使当我在matplotlib图表构造函数中添加tight_layout=True
参数时,它也不会消失。
fig = plt.figure(figsize=(6, 6), tight_layout=True)
当我注释掉改变图表面色的代码时,图表被正确保存,并且所有的轴和标签都正确显示。