如何在 Matplotlib 中扩展图形底部的边距?

Posted

技术标签:

【中文标题】如何在 Matplotlib 中扩展图形底部的边距?【英文标题】:How do I extend the margin at the bottom of a figure in Matplotlib? 【发布时间】:2015-03-08 19:35:15 【问题描述】:

以下屏幕截图显示了我的 x 轴。

我添加了一些标签并将它们旋转 90 度以便更好地阅读它们。但是,pyplot 会截断底部,因此我无法完全阅读标签。 如何扩展下边距以查看完整的标签?

【问题讨论】:

【参考方案1】:

两种追溯方式:

fig, ax = plt.subplots()
# ...
fig.tight_layout()

或者

fig.subplots_adjust(bottom=0.2) # or whatever

这是一个subplots_adjust 示例:http://matplotlib.org/examples/pylab_examples/subplots_adjust.html

(但我更喜欢tight_layout

【讨论】:

你也可以告诉 pass tight_layout=Truesubplots 哪个是同样的效果。 有没有办法做到这一点没有使用tight_layoutsubplots? IE。如果一个人只是创建一个图形并通过plt.plot(...) 添加一个图。我问的原因是因为我试图为一部电影创建多个情节,如果使用subplots 和/或tight_layout,标题和轴标签会摇摆不定。任何帮助将不胜感激。 @Wolpertinger: fig = plt.figure(); fig.add_axes(...); matplotlib.org/api/_as_gen/… subplots_adjust 部分为我工作,在图例顶部添加一些空间,否则图例被切断:top=0.75 效果不足,top=1.5,奇怪的是,似乎有没有效果。 tigh_layout 在这种特殊情况下似乎没有任何效果。【参考方案2】:

Subplot-adjust 对我不起作用,因为整个图形只会在标签仍然超出范围的情况下调整大小。

我发现的一种解决方法是让 y 轴始终在最高或最低 y 值之上保持一定的余量:

x1,x2,y1,y2 = plt.axis()
plt.axis((x1,x2,y1 - 100 ,y2 + 100))

【讨论】:

这是唯一适合我的解决方案。 轴函数指定轴的视口,所以不清楚为什么plt.axis() 会帮助轴外的标签......从@987654323 期待一些东西似乎更合乎逻辑@【参考方案3】:

一种对我有用的快速单行解决方案是直接使用 pyplot 的 auto tight_layout method,可在 Matplotlib v1.1 及更高版本中使用:

plt.tight_layout()

这可以在您显示绘图 (plt.show()) 之前 立即调用,但之后 您对轴的操作(例如刻度标签旋转等)。

这种方便的方法避免了操纵子图的单个图形。

其中 plt 是标准 pyplot 来自: import matplotlib.pyplot as plt

【讨论】:

好答案。值得注意的是,“但在你的操作之后”的评论是至关重要的。否则,你的头衔可能会像我一样被切断。【参考方案4】:
fig.savefig('name.png', bbox_inches='tight')

对我来说效果最好,因为它不会减少与

相比的地块大小
fig.tight_layout()

【讨论】:

以上是关于如何在 Matplotlib 中扩展图形底部的边距?的主要内容,如果未能解决你的问题,请参考以下文章

php 在全局设置(Builder UI)中添加所有方向,即顶部,右侧,底部和左侧的边距

php 在全局设置(Builder UI)中添加所有方向,即顶部,右侧,底部和左侧的边距

(HTML) 表格的边距底部?

到达页面底部后更改固定定位元素的边距顶部位置?

绝对定位 div 的边距底部在 Chrome 中工作,但在 Safari 或 Firefox 中不可用

调整大小时 QGraphicsView 中项目位置的边距