【问题标题】:Python/Matplotlib - Adjusting the spacing between the edge of the plot and the x-axisPython/Matplotlib - 调整绘图边缘和 x 轴之间的间距
【发布时间】:2011-02-22 15:23:15
【问题描述】:

如何调整 x 轴与绘图窗口边缘之间的空间量?我的 x 轴标签是垂直方向的,它们超出了 Matplotlib 绘制的窗口边缘。

下面是一些示例代码:

import matplotlib.pyplot as plt
x=[1,2,3,4,5]
y=[1,2,3,4,5]
plt.plot(x,y)
plt.xticks(rotation='vertical')
plt.show()

【问题讨论】:

  • 如果你有一个轴对象,例如ax,那么你可以通过这样做来访问图形对象:fig = ax.figure
  • 嗨,保罗。我添加了一些示例代码。
  • 这是一个很好的例子,展示了如何获取垂直 xtick 标签,谢谢。 :)

标签: python matplotlib


【解决方案1】:

正如保罗所说,您使用的是数字。您可以使用 gcf() 获取对当前图形的引用,然后按照 FAQ 设置间距。我在您的代码中添加了两行:

import matplotlib.pyplot as plt
x=[1,2,3,4,5]
y=[1,2,3,4,5]
plt.plot(x,y)
plt.xticks(rotation='vertical')

fig = plt.gcf()
fig.subplots_adjust(bottom=0.2)

plt.show()

【讨论】:

  • 只需申请fig.tight_layout() 即可解决此问题,无需任何手动操作。
  • 确实,虽然在问这个问题时,tight_layout() 还不存在。显然,八年后,tight_layout 仍被标记为“实验性”(但是,我希望它在大多数典型用例中都能很好地工作,因此您的评论是对这个答案的宝贵补充)。
【解决方案2】:

这是题为Move the edge of an axes to make room for tick labels的常见问题解答中的一个解决方案。

【讨论】:

  • 我没有使用数字;这样做会使我的程序变得非常复杂。
  • @thenickname 您正在使用数字。它们是自动创建的。它们只是在全局范围内不可见。您可以通过多种方式访问​​这些对象。如果您发布一些代码,您将获得有关如何尽可能简洁明了地调整这些数字的更具体的答案。
  • 我添加了一些示例代码。我在整个程序的各个循环中将各种数据集添加到绘图中。添加子图会使事情复杂化。