在pyplot中为axis设置xlim和ylim会删除填充。如何在不改变填充的情况下设置它们?
示例:
fig, ax = plt.subplots()
x = np.linspace(0, 200, 500)
ax.set_ylim(ymax=100)
line = ax.plot(x, data, '--', linewidth=2, label='foo bar')
plt.show()
在所示的图中,x轴将有一个填充,而y轴没有。如何使他们都有填充,而有我想要的ylim?
在pyplot中为axis设置xlim和ylim会删除填充。如何在不改变填充的情况下设置它们?
示例:
fig, ax = plt.subplots()
x = np.linspace(0, 200, 500)
ax.set_ylim(ymax=100)
line = ax.plot(x, data, '--', linewidth=2, label='foo bar')
plt.show()
在所示的图中,x轴将有一个填充,而y轴没有。如何使他们都有填充,而有我想要的ylim?
3条答案
按热度按时间vcudknz31#
Axes.set_ymargin
和Axes.set_ylim
互斥。对轴设置限制将覆盖边距。有两个选项可以设置边距(padding)。
a.使用边距
可以使用
其中
0.1
是两个轴端的10%裕度。(当然,x
轴也是如此)。这里的缺点是余量始终是对称的。B.使用限制
使用
ax.set_ylim(0, 100)
设置的限制并使其适应需要。例如,如果
data
是以numpy数组形式绘制的数据,并且我们希望底部有10%的边距,顶部有40%的边距,则可以使用当然,如果需要的话,同样可以简单地将ymax设置为
ymax = 100
。kuhbmx9i2#
您可以修改
ax.dataLim
边界框并重新应用ax.autoscale_view()
之前:
之后:
xmjla07d3#
在matplotlib 3.5中,我使用了如下自动缩放:
为我解决了这个问题。有关自动缩放的差异,请参见随附的图形图片。
使用.margins()和一个值或'tight=True'或.set_ymargin()似乎没有做任何事情,无论我用什么值来填充。
在我的例子中,当股息接近于零时,将下限或底部限制更改为<0会使零线沿y轴向上移动。
Graph with Autoscaling
Graph without Autoscaling