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

时间:2012-05-27 09:42:34

标签: python plot matplotlib

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

In [49]: fig = plt.figure(1)

In [50]: ax = fig.add_subplot(1, 1, 1)

In [59]: ax.get_autoscale_on()
Out[59]: True

In [60]: ax.autoscale(False)

In [61]: ax.get_autoscale_on()
Out[61]: False

In [62]: plt.cla()

In [63]: ax.get_autoscale_on()
Out[63]: True

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

1 个答案:

答案 0 :(得分:4)

不要拨打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()

CookBook of Matplotlib有一些很好的动画示例,您可能需要查看它。