在matplotlib中设置轴限制时保留填充

时间:2017-03-15 06:12:32

标签: python matplotlib

在pyplot中为轴设置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?

1 个答案:

答案 0 :(得分:3)

Axes.set_ymarginAxes.set_ylim是互斥的。设置轴的限制会覆盖边距。

有两个选项可以设置边距(填充)。

一个。使用边距

可以使用

调整保证金
ax.set_ymargin(0.1)   or   ax.margins(y=0.1)

其中0.1两个轴端的边距为10%。 (当然,x轴也一样)。这里的缺点是边距总是对称的。

湾使用限制

使用ax.set_ylim(0, 100)设置的限制并根据需要进行调整 例如。如果data是以numpy数组的形式绘制的数据,并且我们希望底部有10%的边距,顶部有40%的边距,我们可以使用

ymin = data.min()-0.1*(data.max()-data.min())
ymax = data.max()+0.4*(data.max()-data.min())
ax.set_ylim((ymin, ymax))

如果需要,当然可以简单地将ymax设置为ymax = 100