Python 清除matplotlib中的轴时保留自动缩放

Python 清除matplotlib中的轴时保留自动缩放,python,plot,matplotlib,Python,Plot,Matplotlib,我想制作一系列绘图(用于创建动画),因此我想重用轴并在所有绘图中保留x和y限制,因此我设置了ax.autoscale(False)。但是,当我使用plt.cla()清除轴以绘制下一幅图像时,自动缩放设置被覆盖,因此我必须在每次迭代中设置ax.autoscale(False)和x和y限制 因此,我最终执行了ax.lines=[]或ax.lines.pop(),但这迫使我在每个绘图上设置颜色,以避免颜色循环。如果我将hold设置为False,则每次调用ax.plot(),自动缩放设置都会重置。删除所

我想制作一系列绘图(用于创建动画),因此我想重用轴并在所有绘图中保留x和y限制,因此我设置了
ax.autoscale(False)
。但是,当我使用plt.cla()清除轴以绘制下一幅图像时,自动缩放设置被覆盖,因此我必须在每次迭代中设置
ax.autoscale(False)
和x和y限制

因此,我最终执行了
ax.lines=[]
ax.lines.pop()
,但这迫使我在每个绘图上设置颜色,以避免颜色循环。如果我将
hold
设置为
False
,则每次调用
ax.plot()
,自动缩放设置都会重置。删除所有绘图时是否有其他方法保留轴属性?

不要调用
plt.cla()
,它将清除当前轴。如果要创建动画,请使用
matplotlib.pyplot.draw()
,它将重新绘制当前图形,我想这正是您想要的

from pylab import *
import matplotlib.pyplot as plt
ion()
ax=plt.subplot(111)

line1, = ax.plot(x,y,label='x')

for i in xrange(20):
 #update your data to new x,y
 line1.set_xdata(x)
 line1.set_ydata(y)
 draw()

有一些关于动画的好例子,你可能想看看。

为什么不更新艺术家的数据,而不是每次调用
plot
?不知道我该怎么做。你能把它作为一个答案吗?谢谢你的答案和食谱链接!我将检查您的代码和建议的一些性能改进。关键是
行。set_data
技巧,它发挥了我所需要的魔力,但是你的例子和出现在烹饪书中的那些对我来说似乎毫无用处,因为它们以
for
循环的速度更新动画-页面本身声明信息非常过时,新的动画API()似乎更有价值。事实上,如果我在循环中添加一个
sleep()
调用,它在I^C之前根本不会更新。如果绘图上的点在移动呢?此方法仅在每一步添加数据时有效,但在删除点或需要在其他坐标重新绘制点时无效。
from pylab import *
import matplotlib.pyplot as plt
ion()
ax=plt.subplot(111)

line1, = ax.plot(x,y,label='x')

for i in xrange(20):
 #update your data to new x,y
 line1.set_xdata(x)
 line1.set_ydata(y)
 draw()