6

我想制作一系列图(用于创建动画),因此我想重用轴并保留所有图的 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 = []or ax.lines.pop(),但这迫使我在每个情节上设置颜色以避免颜色循环。如果我设置holdFalse,那么每次调用时都会重置自动缩放设置ax.plot()。有没有其他方法可以在删除所有图的同时保留轴属性?

4

1 回答 1

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()

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

于 2012-05-27T12:28:31.290 回答