matplotlib 自动重新缩放ylim和xlim

cqoc49vn  于 2023-05-23  发布在  其他
关注(0)|答案(1)|浏览(160)

我正在使用matplotlib在Python中绘制数据。我更新了一些计算的基础上绘制的数据,并希望ylim和xlim自动重新缩放。相反,所发生的是基于初始图的限制来设置比例。MWE是

import random
import matplotlib.pyplot as pyplot

pyplot.ion()

x = range(10)
y = lambda m: [m*random.random() for i in range(10)]

pLine, = pyplot.plot(x, y(1))

for i in range(10):
    pLine.set_ydata(y(i+1))
    pyplot.draw()

第一个plot命令从[0,1]生成一个图,我可以看到一切都很好。最后,y数据数组从[0,10)开始,其中大部分大于1,但图中的y限制仍然是[0,1]
我知道我可以使用pyplot.ylim(...)手动更改限制,但我不知道要将其更改为什么。在for循环中,我可以告诉pyplot缩放限制,就像它是第一次被绘制一样?

flseospp

flseospp1#

您需要更新轴的dataLim,然后根据dataLim更新轴的viewLim。适用的方法是axes.relim()ax.autoscale_view()方法。你的例子看起来像这样:

import random
import matplotlib.pyplot as pyplot

pyplot.ion()

x = range(10)
y = lambda m: [m*random.random() for i in range(10)]

pLine, = pyplot.plot(x, y(1))

for i in range(10):
    pLine.set_ydata(y(i+1))

ax = pyplot.gca()

# recompute the ax.dataLim
ax.relim()
# update ax.viewLim using the new dataLim
ax.autoscale_view()
pyplot.draw()

相关问题