Grafico della Velocità lungo il Tracciato


Adesso che abbiamo i dati pronti per essere utilizzati, prepariamo il grafico sul quale andremo a rappresentarli.

Le cose potrebbero sembrare un po’ intricate adesso ma non preoccupatevi, andremo a spiegare linea per linea cosa abbiamo inserito.

Partiamo con l’intero blocco di codice per disegnare il grafico con la rappresentazione della velcocità lungo il tracciato.

plot_size = [20, 10]
plt.rcParams['figure.figsize'] = plot_size


plot_title = f"{session1.event.year} {session1.event.EventName} - {session1.name} - {driver_1}"

fig, ax = plt.subplots()

ax.plot(telemetry_driver_1['Distance'], telemetry_driver_1['Speed'], label=label_1, color=color_1)

ax.legend(loc='lower center', bbox_to_anchor=(0.5, -0.1),)

plt.suptitle(plot_title)

plt.show()

Eseguiamo quindi questo blocco ed ecco che avremo il nostro primo grafico.

Ma vediamo, nel dettaglio, come lo abbiamo prodotto. Analizziamo le diverse linee di codice e spieghiamone il significato.

Dimensione del grafico

plot_size = [20, 10]
plt.rcParams['figure.figsize'] = plot_size

La prima linea serve per decidere la dimensione del grafico (20 di larghezza e 10 di altezza).
La seconda linea serve per far sì che il grafico utilizzi quelle dimensioni, in modo tale che vengano applicate.

Titolo del grafico

plot_title = f"{session1.event.year} {session1.event.EventName} - {session1.name} - {driver_1}"

Qui andiamo ad indicare il titolo del grafico; abbiamo utilizzato delle variabili in modo tale che, cambiando la sessione ed il pilota, il titolo del grafico rifletta automaticamente questa scelta. Se lo avessimo impostato in modo statico, avremmo dovuto modificarlo a mano ogni volta.

Lista del contenuto del grafico

fig, ax = plt.subplots()

Qui creiamo una lista ordinata (tupla) che contiene il grafico (inteso come contenitore) e la linea che rappresenterà quello che vogliamo mostrare (inteso come contenuto).
“ax” è la linea che viene mostrata, non ha indicazioni numeriche poichè al momento il nostro grafico mostrerà una sola serie di dati.

Serie dati da rappresentare

ax.plot(telemetry_driver_1['Distance'], telemetry_driver_1['Speed'], label=label_1, color=color_1)

Qui indichiamo nello specifico cosa verrà rappresentato nel grafico:
telemetry_driver_1[‘Distance’] è l’asse orizzontale, dove rappresenteremo la distanza in metri dall’inizio del giro
telemetry_driver_1[‘Speed’] è l’asse verticale, dove rappresenteremo la velocità in km/h per ciascun campionamento
label_1 è il valore che utilizzeremo per la legenda, la cui variabile abbiamo dinamicamente assegnato in precedenza
color_1 è il colore della linea, la cui variabile abbiamo assegnato staticamente in precendenza

Visualizzazione legenda

ax.legend(loc='lower center', bbox_to_anchor=(0.5, -0.1),)

Mostriamo la legenda e ne indichiamo il posizionamento:
– il parametro loc lo usiamo per scegliere posizione ed allineamento (nel nostro caso in basso e centrale)
– i valori di bbox_to_anchor li usiamo per scegliere con precisione dove collocare la legenda (in particolare il secondo valore, -0.1, serve per posizionare la legenda fuori dal grafico ed evitare che interferisca con la linea)

Visualizzazione titolo del grafico

plt.suptitle(plot_title)

Mostriamo il titolo e gli associamo il valore della variabile plot_title dinamicamente impostata in precedenza.

Visualizzazione del grafico

plt.show()

Mostriamo effettivamente il grafico, con il contenuto e le impostazioni selezionate in precedenza.


Ora abbiamo una buona base da cui partire; il grafico ha la struttura corretta ma possiamo renderlo più leggibile ed esteticamente gradevole con alcune piccole modifiche.

Nella fase successiva andremo a migliorare la visualizzazione del grafico e questo ci tornerà particolarmente utile quando, più avanti, mostreremo ulteriori serie di dati e confronteremo diversi piloti.