gpt4 book ai didi

python - 更改背景颜色后如何保存 Matplotlib 图?

转载 作者:太空宇宙 更新时间:2023-11-04 01:53:06 24 4
gpt4 key购买 nike

使用 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")

我希望得到这样的图像:

What I Expect to Get

但是,plt.savefig(...) 给我以下结果:

What I Actually Get

奇怪的是,绘图周围似乎有空白,即使我将 tight_layout=True 参数添加到 matplotlib 图形构造函数中,该空白也不会消失。

fig = plt.figure(figsize=(6, 6), tight_layout=True)

而且,当我注释掉更改绘图表面颜色的代码时,图形会正确保存,所有轴和标签都正确显示。

最佳答案

为了解决您的问题,您只需在 plt.savefig 调用中指定 facecolor 关键字参数,在这种情况下:

plt.savefig("my_fig_name.png", bbox_inches="tight", facecolor="#121111")

它给出了预期的 .png 输出:

correct_output

有关详细信息,请参阅 plt.savefig documentation .

关于python - 更改背景颜色后如何保存 Matplotlib 图?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57539155/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com