在Matplotlib中自动重新缩放ylim和xlim

2024-04-27 02:05:54 发布

您现在位置:Python中文网/ 问答频道 /正文

我使用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]生成一个plot,我可以看到一切都很好。最后,y数据数组从[0,10)开始,其中大部分大于1,但是图形的y限制仍然是[0,1]

我知道我可以使用pyplot.ylim(...)手动更改限制,但我不知道如何更改它们。在for循环中,我能告诉pyplot像第一次绘制一样缩放限制吗?


Tags: 数据inimport绘图forplotmatplotlib绘制
1条回答
网友
1楼 · 发布于 2024-04-27 02:05:54

您需要更新轴的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()

相关问题 更多 >