Rappresentazione del Grafico sull’utilizzo dell’Acceleratore


Per rappresentare il grafico relativo ai dati dell’acceleratore possiamo, semplicemente, partire da quanto abbiamo fatto per il grafico relativo alla velocità.

Copiamo quindi tutte le linee di codice relative alla grafico della velocità ed incolliamole subito sotto, prima della linea plt.show()

Modifichiamole quindi per lo scopo che ci interessa e, quindi:
– il commento sarà “Grafico dell’acceleratore
– tutti i riferimenti ax[0] di questa sezione andranno cambiati in ax[1] visto che parliamo del secondo grafico
– il valore rappresentato sull’asse verticale sarà telemetry_driver_1[‘Throttle’] perchè “Throttle” è il nome della colonna relativa all’utilizzo dell’acceleratore nel DataFrame con i dati telemetrici
– il titolo di questo grafico sarà ax[1].title.set_text(‘Throttle’)
– l’etichetta dell’asse orizzontale di questo grafico sarà ax[1].set(ylabel=f”Throttle (%)”) visto che i dati indicano l’utilizzo in percentuale

# Grafico dell'acceleratore
ax[1].plot(telemetry_driver_1['Distance'], telemetry_driver_1['Throttle'], label=label_1, color=color_1)
ax[1].legend(loc='lower center', bbox_to_anchor=(0.5, -0.12),)
ax[1].set_facecolor(subplot_bgcolor)
ax[1].grid(which='major', color='#CCCCCC', linewidth=0.8)
ax[1].grid(which='minor', color='#DDDDDD', linestyle=':', linewidth=0.5)
ax[1].minorticks_on()
ax[1].title.set_text('Throttle')
ax[1].set(xlabel=f"Distance (meters)")
ax[1].set(ylabel=f"Throttle (%)")
# ------------------------

La situazione finale del blocco di codice sarà quindi questa.

Ed eseguendolo avremo questa nuova rappresentazione.

Dal momento che stiamo rappresentando i valori dello stesso pilota nella stessa sezione, potrebbe avere senso rimuovere una legenda in modo da lasciarne una soltanto; rimuoviamo quindi la legenda dal grafico superiore (quello della velocità, ax[0]) cancellando la seguente linea dal nostro codice.

ax[0].legend(loc='lower center', bbox_to_anchor=(0.5, -0.12),)

Una nuova esecuzione del codice ci mostrerà l’effetto.

A questo punto non ci resta che sistemare il posizionamento della legenda inferiore, in modo che non si sovrapponga all’etichetta dell’asse orizzontale.

Per farlo sarà sufficiente modificare il secondo valore di posizionamento (relativo alla posizione verticale) della legenda di ax[1] dal valore attuale -0.12 a qualcosa tipo -0.3

ax[1].legend(loc='lower center', bbox_to_anchor=(0.5, -0.3),)

Come di consueto, eseguiamo il blocco di codice per verificare risultato.

Modifichiamo la linea con il rapporto tra i due grafici, impostando che il primo (velocità) sia grande il doppio rispetto al secondo (acceleratore).

fig, ax = plt.subplots(2, height_ratios=[2, 1])

Dovremo poi aggiustare nuovamente la posizione della legenda, spostandola leggermente in basso e modificando il valore di posizionamento verticale da -0.3 a -0.4

ax[1].legend(loc='lower center', bbox_to_anchor=(0.5, -0.4),)

Allo stato attuale, l’ultimo blocco di codice, nel complesso, sarà quindi così.

# Parametri generali del grafico
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(2, height_ratios=[2, 1])
subplot_bgcolor = '#FAFAFA'
plt.suptitle(plot_title)
# ------------------------

# Grafico della velocità
ax[0].plot(telemetry_driver_1['Distance'], telemetry_driver_1['Speed'], label=label_1, color=color_1)
ax[0].set_facecolor(subplot_bgcolor)
ax[0].grid(which='major', color='#CCCCCC', linewidth=0.8)
ax[0].grid(which='minor', color='#DDDDDD', linestyle=':', linewidth=0.5)
ax[0].minorticks_on()
ax[0].title.set_text('Speed')
ax[0].set(xlabel=f"Distance (meters)")
ax[0].set(ylabel=f"Speed (km/h)")
# ------------------------

# Grafico dell'acceleratore
ax[1].plot(telemetry_driver_1['Distance'], telemetry_driver_1['Throttle'], label=label_1, color=color_1)
ax[1].legend(loc='lower center', bbox_to_anchor=(0.5, -0.4),)
ax[1].set_facecolor(subplot_bgcolor)
ax[1].grid(which='major', color='#CCCCCC', linewidth=0.8)
ax[1].grid(which='minor', color='#DDDDDD', linestyle=':', linewidth=0.5)
ax[1].minorticks_on()
ax[1].title.set_text('Throttle')
ax[1].set(xlabel=f"Distance (meters)")
ax[1].set(ylabel=f"Throttle (%)")
# ------------------------

plt.show()

Ed eseguendolo avremo questo risultato.

Se volessimo aggiungere ulteriori grafici (freno, DRS e simili) la procedura sarebbe la medesima:
– indichiamo il numero di grafici nella tupla
– sempre nella tupla indichiamo il rapporto tra le dimensioni dei grafici
– creiamo nuove sezioni ax[2] ax[3] e via dicendo e scegliamo quali dati rappresentare in ciascuna di essere

Per il momento ci accontentiamo dei due grafici che abbiamo creato ma facciamo qualcosa di più. Andiamo ad aggiungere i valori di un altro pilota per confrontarli con quelli di Hamilton.

Il nostro scopo è quindi quello di avere in entrambi i grafici (velocità ed acceleratore) sia i valori di Hamilton sia i valori di un secondo pilota, ad esempio Verstappen.