2015-09-01 4 views
1

У меня есть код для «живого» построения с Matplotlib в Python, но он закрывается после его завершения. Я хотел бы, чтобы этот сюжет оставался открытым.Стоп matplotlib участок от закрытия

Код ниже

import time 
import matplotlib.pyplot as plt 


    plt.ion() 
    plt.show() 

    for i in range(10): 
     time.sleep(1) 
     x = i ** 2 
     plt.scatter(i, x) 
     plt.draw() 

ответ

1

Может быть, вы хотите что-то вроде this:

import numpy as np 
import matplotlib.pyplot as plt 
import matplotlib.animation as animation 

def make_data(): 
     for i in range(100): 
      yield i, i*2 

fig, ax = plt.subplots() 
color = plt.cm.cubehelix(np.linspace(0.1,0.9,100)) 
plot, = ax.plot([], [],'o') 
xdata, ydata = [], [] 
ax.set_ylim(0, 1) 
ax.set_xlim(0, 1) 

def run(data): 
    x,y = data 
    xdata.append(x) 
    ydata.append(y) 
    xmin, xmax = ax.get_xlim() 
    ymin, ymax = ax.get_ylim()  
    if y > ymax: 
     ax.set_xlim(xmin, 1+xmax) 
     ax.set_ylim(ymin, 1+ymax) 
     ax.figure.canvas.draw() 

    plot.set_color(color[x]) 
    plot.set_data(xdata,ydata) 
    return plot, 

ani = animation.FuncAnimation(fig,run,make_data,blit=True,interval=10,repeat=False) 
plt.show() 

Может разброс будет лучше, так как это может позволить для различных цветов каждого круга.