为什么matplotlib中的图表没有显示坐标轴

11

我在处理图表时遇到了问题,因为当我在Jupyter Notebooks上工作时,轴标签似乎可以显示。

然而,当我将文件导出到.py文件并在终端中运行时,生成的图表没有轴标签。

fig = plt.figure(figsize = (15,5))

ax = fig.add_axes([0,0,1,1])
ax.set_title('Oil vs Banks Mean Return')
ax.set_xlabel('Date')
ax.set_ylabel('Price')

ax.plot(all_returns['Mean'], label = 'Banks Mean', color = 'green')
ax.plot(all_returns['Oil'], label = 'Oil', color = 'black')
ax.plot(movavg['Mean'], label = 'Mean MA', color = 'blue')
ax.plot(movavg['Oil'], label = 'OIL MA', color = 'red')

ax.legend()

plt.tight_layout();

在Jupyter笔记本中,它显示坐标轴和标签,例如年份等: 在Jupyter笔记本中,它显示坐标轴和标签,例如年份等: 然而,当我导出时,它们消失了: 然而,当我导出时,它们消失了

1
plt.tight_layout() 可能是问题所在。尝试使用 plt.show() 代替。 - An economist
你要如何导出它们?使用 savefig("文件名.png") 吗? - Sharku
1
请问您能否展示一下生成第二张图片所使用的完整代码? - Thomas Kühn
1
我认为这行代码ax = fig.add_axes([0,0,1,1])是问题所在——它使用了所有的图形空间进行绘图,导致轴无法显示。请尝试使用ax=fig.add_subplot(111)代替。 - Thomas Kühn
在Jupyter笔记本中,我只需点击下载为.py文件,然后在终端中运行该.py文件,图表就会像第二张图片一样显示。 - rcshon
显示剩余2条评论
3个回答

20

这条线

ax = fig.add_axes([0,0,1,1])

原因在于代码中指定了matplotlib使用所有的图形空间用于绘制实际图形,而剩余的空间则不留给坐标轴和标签。如果按照此方式创建Axes实例,则tight_layout()函数将不起作用。可以通过替换该行代码解决问题。

ax = fig.add_subplot(111)

然后你就可以开始了。


2
我遇到了这个问题,也许将来我还会遇到。问题出在subplot配置工具上, subplot配置工具 所以,我只需要给显示器提供更多的空间即可。
plt.subplots_adjust(left=0.2,bottom=0.2, top = 0.9, right = 0.9)

0

尝试使用这个选项:

color_name = "grey"
ax.spines["top"].set_color(color_name)
ax.spines["bottom"].set_color(color_name)
ax.spines["left"].set_color(color_name)
ax.spines["right"].set_color(color_name)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接