如何在 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
)
【讨论】:
你也可以告诉 passtight_layout=True
到 subplots
哪个是同样的效果。
有没有办法做到这一点没有使用tight_layout
或subplots
? 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)中添加所有方向,即顶部,右侧,底部和左侧的边距