在matplotlib中设置轴限制,但在其中自动缩放

时间:2019-02-04 16:12:10

标签: python matplotlib

是否可以在matplotlib中设置轴的最大值和最小值,但是当这些值比这些限制小得多时可以自动缩放?

例如,我希望百分比变化的图限制在-100到100之间,但是我的许多图都在-5和5之间。当我使用ax.set_ylim(-100, 100)时,该图是非常不清楚。

我想我可以使用ax.set_ylim(max((-100, data-n)), min((100, data+n)))之类的东西,但是有没有更多内置的方法来实现这一目标?

3 个答案:

答案 0 :(得分:1)

作为ImportanceOfBeingErnest pointed out,不支持此功能。最后,我只是使用了最初的想法,而是通过max和min的值对其进行了缩放,以产生自动缩放的印象。

ax.set_ylim(max((-100, data_min+data_min*0.1)), min((100, data_max+data_max*0.1)))

我的情况是

data_min <= 0, data_max >= 0

答案 1 :(得分:0)

为什么不只是根据每次更新图时的数据范围来设置轴限制?

ax.set_ylim(min(data), max(data))

或者检查数据范围是否低于某个阈值,然后设置轴限制。

if min(abs(data)) < thresh:
    ax.set_ylim(min(data), max(data))

答案 2 :(得分:0)

如果要删除极端离群值,可以使用numpy quantile函数来查找数据的前0.001%和后99.999%。

near_min = np.quantile(in_data, 0.0001)
near_max = np.quantile(in_data, 0.9999)
ax.set_ylim(near_min, near_max)

您将需要根据丢弃的数据量来调整分位数。您可能需要进行一些测试,以证明Near_min和true min之间的差异是否显着?