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

标签 python matplotlib

我正在使用 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()

第一个绘图命令从 [0,1] 生成一个绘图,我可以看到一切正常。最后,y 数据数组从 [0,10) 开始,其中大部分大于 1,但图的 y 限制仍然是 [0,1]

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

最佳答案

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

关于python - 在 Matplotlib 中自动重新缩放 ylim 和 xlim,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10984085/

相关文章:

python - 如何在 Seaborn relplot 中自定义标题和 y 标签

python - sklearn : Using pretrained hyperparameters Gaussian Process Regression

python - Pandas :合并数据框和替换值

python - 如何在Python中获取 "config"?

python - 使用 while 循环添加和减去当前位置

python - matplotlib clabel 上的 set_clip_path 没有正确剪裁

python - 对于某些数据集,Matplotlib 不会遵循 set_major_formatter 或 set_minor_formatter 设置的日期格式

python - matplotlib log scales 导致缺失点

matplotlib - 在ipython中调用pylab.savefig而不显示

python - theano 中的 MLP 分类器稳定在局部最小值