Voglio creare un grafico tracciato programma in tempo reale che prende in ingresso dalla porta seriale. Inizialmente, avevo provato un sacco di codice che ha postato su siti web, ma nessuno di loro ha lavorato. Così, ho deciso di scrivere il codice per conto mio, integrando parti di codice che ho visto sui siti web. Ma il problema è il grafico apparirà solo quando il programma termina, in altre parole, fuori dal giro. Mentre è nel ciclo, non mostra nulla, solo una tela bianca. Sono ancora abbastanza nuovo per Python. Ecco il mio codice.trama matplotlib in tempo reale non funziona, mentre ancora in un ciclo
import matplotlib.pyplot as plt
import time
import random
from collections import deque
import numpy as np
# simulates input from serial port
def random_gen():
while True:
val = random.randint(1,10)
yield val
time.sleep(0.1)
a1 = deque([0]*100)
ax = plt.axes(xlim=(0, 20), ylim=(0, 10))
d = random_gen()
line, = plt.plot(a1)
plt.ion()
plt.ylim([0,10])
plt.show()
for i in range(0,20):
a1.appendleft(next(d))
datatoplot = a1.pop()
line.set_ydata(a1)
plt.draw()
print a1[0]
i += 1
time.sleep(0.1)
Inoltre, utilizzo la licenza accademica di Enthought Canopy versione 1.1.0.
e http://stackoverflow.com/questions/14265513/matplotlib-real-time-linear-line/14266609# 14266609 – tacaswell
e http://stackoverflow.com/questions/18791722/can-you-plot-live-data-in-matplotlib/18793416#18793416 – tacaswell