matplotlib 如何计算最小/最大轴值?或者如何在设置限制时自动添加 matplotlib 边距

How does matplotlib calculate the min / max axis values? Or how to automatically add the matplotlib margin when setting the limits

当我们绘制曲线时,matplotlib 会自动为最小值和最大值添加一些偏移量。 matplotlib如何计算这个'offset'?

例如

plt.plot(range(0,10))
plt.ylim()

给出 y 限制 (-0.45, 9.45)。 而

plt.plot(np.array(range(1,10))/100)
plt.ylim()

给出 y 限制 (0.006, 0.094)。 毫不奇怪,当我设置 axis

plt.plot(range(0,10))
plt.ylim(0,9)
plt.ylim()

我得到 (0.0, 9.0)

我经常想设置限制,但仍然希望限制有一些余量,例如当限制在一条线上时,这条线应该很好地显示。

当然我可以在设置 y 限制时添加一些分数,但这总是需要一些调整。我想知道是否有更聪明的方法来做到这一点。

根据我在源代码中可以找到的内容,边距设置为数据范围的一小部分 axes.xmargin/axes.ymargin parameters, but the computation is rather more involved

根据@DavidG 的评论,我们使用边距 plt.margins()ax.margins().

添加正确的金额

以问题中给出的例子为例:

d = range(0, 10)
plt.plot(d)
ymarg = (max(d) - min(d)) * plt.margins()[1]

plt.ylim(min(d) - ymarg, max(d) + ymarg)
plt.ylim()

其中 returns (-0.45, 9.45).