jlc*_*lin 31 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()
Run Code Online (Sandbox Code Playgroud)
第一个绘图命令生成一个图[0,1],我可以看到一切都很好.最后,y数据阵列的[0,10)大部分都大于1,但数字的y限制仍然存在[0,1].
我知道我可以手动更改限制pyplot.ylim(...),但我不知道要改变它们的内容.在for循环中,我可以告诉pyplot缩放限制,就好像它是第一次被绘制一样吗?
pel*_*son 46
您需要更新轴的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()
Run Code Online (Sandbox Code Playgroud)