Edit: Teraz łatwiej i lepiej używać matplotlib.animation
:
import numpy as np
import matplotlib.pyplot as plt
import matplotlib.animation as animation
def animate(frameno):
x = mu + sigma * np.random.randn(10000)
n, _ = np.histogram(x, bins, normed=True)
for rect, h in zip(patches, n):
rect.set_height(h)
return patches
mu, sigma = 100, 15
fig, ax = plt.subplots()
x = mu + sigma * np.random.randn(10000)
n, bins, patches = plt.hist(x, 50, normed=1, facecolor='green', alpha=0.75)
ani = animation.FuncAnimation(fig, animate, blit=True, interval=10,
repeat=True)
plt.show()
Jest przykładem podejmowania animowany wykres here. Opierając się na tym przykładzie, można spróbować czegoś takiego:
import numpy as np
import matplotlib.pyplot as plt
plt.ion()
mu, sigma = 100, 15
fig = plt.figure()
x = mu + sigma*np.random.randn(10000)
n, bins, patches = plt.hist(x, 50, normed=1, facecolor='green', alpha=0.75)
for i in range(50):
x = mu + sigma*np.random.randn(10000)
n, bins = np.histogram(x, bins, normed=True)
for rect,h in zip(patches,n):
rect.set_height(h)
fig.canvas.draw()
mogę dostać około 14 klatek na sekundę w ten sposób, w porównaniu do 4 klatek na sekundę przy użyciu kodu I first posted. Sztuką jest unikanie pytania matplotlib o narysowanie pełnych figur. Zamiast tego zadzwoń raz plt.hist
, następnie zmodyfikuj istniejące matplotlib.patches.Rectangle
s w patches
, aby zaktualizować histogram, i zadzwoń pod numer fig.canvas.draw()
, aby aktualizacje były widoczne.
Jeśli chodzi o szybki rozwój, polecam Tkintera. To znacznie bardziej intuicyjne IMO niż PyQt. –
Nie widzę trudności. Po prostu użyj matplotlib, aby narysować histogramy. Jakiś konkretny problem? –
@Bernardo, chcę je zaktualizować, ponieważ podstawowe struktury danych są aktualizowane. Jeśli wykreślić przy użyciu matplotlib, otrzymam wykres dla każdego kroku czasowego? To będzie trudne do śledzenia, kiedy mam okno na każdy krok. –