是否可以在matplotlib中设置轴的最大值和最小值,但是当这些值比这些限制小得多时可以自动缩放?
例如,我希望百分比变化的图限制在-100到100之间,但是我的许多图都在-5和5之间。当我使用ax.set_ylim(-100, 100)
时,该图是非常不清楚。
我想我可以使用ax.set_ylim(max((-100, data-n)), min((100, data+n)))
之类的东西,但是有没有更多内置的方法来实现这一目标?
答案 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之间的差异是否显着?