如何在更改背景色后保存Matplotlib图像?

11 浏览
0 Comments

如何在更改背景色后保存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)

当我注释掉改变图表面色的代码时,图表被正确保存,并且所有的轴和标签都正确显示。

0