使用Spyder IDE,我创建了matplotlib图,并将图形对象和轴对象的面(背景)颜色更改为黑色。当我尝试使用plt.savefig(...)
保存图形时,不包括轴,标题和轴标签。
我尝试实现standard advice,在轴被切断时将bbox_inches='tight'
添加到plt.savefig()
函数中:
plt.savefig("my_fig_name.png", bbox_inches='tight')
无济于事。 Others suggested,我在Jupyter Notebook或Spyder中将绘图方法从“自动”更改为“内联”。这没有效果。我还尝试使用以下方法来确保图中有足够的空间容纳我的轴:
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)) # Adding tight_layout=True has no effect
ax = fig.add_subplot(1, 1, 1)
# When the following block is commented out, the color of the
# plot is unchanged and the plt.savefig function works perfectly
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(...)
给了我以下结果:
奇怪的是,即使我将tight_layout=True
参数添加到matplotlib图形构造函数中,绘图周围似乎也没有空白。
fig = plt.figure(figsize=(6, 6), tight_layout=True)
然后,当我注释掉更改绘图的面部颜色的代码时,将正确保存图形,并正确显示所有轴和标签。
答案 0 :(得分:2)
为了解决您的问题,您只需要在facecolor
调用中指定plt.savefig
关键字参数,在这种情况下:
plt.savefig("my_fig_name.png", bbox_inches="tight", facecolor="#121111")
给出预期的.png
输出:
有关更多信息,请参见plt.savefig documentation。