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

ast*_*nlu 5 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
Run Code Online (Sandbox Code Playgroud)

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

小智 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()
Run Code Online (Sandbox Code Playgroud)

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