2015-06-06 3 views
0

Я пытаюсь сделать следующее: создать фигуру, построить график на ней, а затем через 3 секунды очистить ее оси. Когда это произойдет, новый график должен быть нанесен на один и тот же рисунок и должен быть обновлен на экране.Постройте график, очистите его оси, затем постройте новый график

Что-то вроде:

import matplotlib.pyplot as plt 
import time 

fig = plt.figure() 
ax = fig.add_subplot(111) 
ax.plot([1,2,3],[1,2,3]) 
plt.show() 
time.sleep(3) 
plt.ion() 
plt.cla() 
ax.plot([10,20,30],[10,20,30]) 
fig.canvas.draw() 

Но это не работает. Что случилось с этой логикой?

ответ

1

Если вы хотите оживить свои фигуры, вы можете использовать matplotlib.animation библиотеки. Вот что ваш код будет выглядеть следующим образом:

import matplotlib.pyplot as plt 
import time 
import matplotlib.animation as animation 

fig = plt.figure() 
ax = fig.add_subplot(111) 
line, = ax.plot([],[]) 
ax.set_xlim(3) 
ax.set_ylim(3) 
line.set_data([1,2,3],[1,2,3]) 

def init(): 
      """ Initializes the plots to have zero values.""" 
      line.set_data([],[]) 
      return line, 

def animate(n, *args, **kwargs): 
    if(n%2==0): 
     line.set_data([],[]) 
    else: 
     line.set_data([1,2,3],[1,2,3]) 

    return line, 

ani = animation.FuncAnimation(fig, animate, init_func=init,frames =100, interval=10, blit=False, repeat =False) 
fig.show() 

Посмотрите в matplotlib.animation для получения более подробной информации. Этот link может помочь вам.

+0

Спасибо, это было очень информативно. –

Смежные вопросы