giovedì 5 novembre 2015

Creare un grafico animato con Python/Matplotlib

In questo post viene indicato come creare uno scatterplot dinamico basato da dati ripresi da un file csv (nel dettaglio il file csv e' costituito da dati di Latitudine e Longitudine misurati da un Gps e delimitati da punto e virgola)

Questo sistema puo' essere puo' essere utile per verificare la presenza di un pattern all'interno dei dati




il codice e' auto esplicativo. Tramite Numpy si carica il file csv e lo si trasforma in una matrice a due colonne e poi si passa a Matplotlib (devono essere indicati il numero di dati, ovvero 86, l'intervallo di visualizzazione tra un punto ed il successivo,50, e le dimensioni della finestra di visualizzazione)

------------------------------------------------------
import csv
import numpy
import matplotlib.pyplot as plt
import matplotlib.animation as animation

def update_line(num, data, line):
    line.set_data(data[..., :num])
    return line,

test = numpy.loadtxt(open("tetto2.csv","rb"),delimiter=";",unpack=True)

fig1 = plt.figure()

l, = plt.plot([], [], 'r-')
plt.xlim(438334400, 438336000)
plt.ylim(113104800, 113105400)

line_ani = animation.FuncAnimation(fig1, update_line, 86, fargs=(test, l),interval=50, blit=True)
line_ani.save('gps.avi')
plt.show()
------------------------------------------------------
Attenzione : questo sistema crea un file temporaneo png per ogni fotogramma quindi animazioni molto lunghe possono creare una significativa occupazione di spazio disco