使用Spyder IDE,我创建了一个matplotlib图,并将图对象和轴对象的面(背景)颜色更改为黑色。当我尝试使用plt.savefig(...)
保存图时,轴,标题和轴标签都不包括在内。
我尝试过实现standard advice,将bbox_inches='tight'
添加到plt.savefig()
函数中,用于轴被切断时:
plt.savefig("my_fig_name.png", bbox_inches='tight')
没有用。Others suggested我改变绘图方法从“自动”在任何一个笔记本电脑或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")
我希望得到这样的图像:
What I Expect to Get
但是,plt.savefig(...)
给出了以下结果:
What I Actually Get
奇怪的是,图的周围似乎有白色空间,即使我将tight_layout=True
参数添加到matplotlib图构造函数中,它也不会消失。
fig = plt.figure(figsize=(6, 6), tight_layout=True)
而且,当我注解掉改变图的面颜色的代码时,图被正确保存,所有的轴和标签都正确显示。
1条答案
按热度按时间wnvonmuf1#
为了解决这个问题,您只需在
plt.savefig
调用中指定facecolor
关键字参数,在本例中:这给出了预期的
.png
输出:有关详细信息,请参阅plt.savefig documentation。