Сохранять автомасштаб при очистке осей в 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(). Есть ли другой способ сохранить свойства осей при удалении всех графиков?

4 голоса | спросил astrojuanlu 27 Maypm12 2012, 13:42:33

1 ответ


0

Не вызывайте 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 есть несколько хороших примеров анимации, которые вы можете проверить это из.

ответил Mayli 27 Maypm12 2012, 16:28:31

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132