Aggiunta del Secondo Grafico
Sino a questo momento abbiamo rappresentato nel nostro grafico una singola serie di dati e ci siamo riferiti ad essa con ax.
Volendo aggiungere altri grafici con la rappresentazione di ulteriori dati, dobbiamo fare un paio di modifiche.
Modifica della tupla per indicare la presenza di 2 grafici
La prima modifica si riferisce alla lista ordinata (tupla) che indica sostanzialmente quanti grafici verranno mostrati nella nostra rappresentazione.
Nel nostro ultimo blocco di codice cerchiamo quindi la seguente linea.
fig, ax = plt.subplots()
E modifichiamola in questo modo.
fig, ax = plt.subplots(2, height_ratios=[1, 1])
Quello che abbiamo fatto è dire che vogliamo 2 grafici (il primo numero dopo la parentesi) e che entrambi devono avere le stesse dimensioni (il rapporto tra i due è 1:1, indicato dai valori 1, 1 al termine).
Modifica della serie di dati esistente (velocità), aggiungendo l’indice
Ora che abbiamo impostato di avere 2 grafici, i valori della velocità non possono più essere indicati solo da ax ma dobbiamo indicare in quale dei 2 grafici disegnare quella linea.
Per farlo è sufficiente aggiungere un indice dove ax[0] si riferirà al primo grafico, ax[1] si riferirà al secondo.
Se, quindi, vogliamo che il nostro grafico della velocità sia il primo, dovremo sostituire nel nostro ultimo blocco di codice tutti i riferimenti ax con ax[0]
Nuova rappresentazione del grafico con 2 grafici integrati
Se avremo fatto tutto correttamente, il nostro ultimo blocco di codice apparirà in questo modo.
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=[1, 1])
ax[0].plot(telemetry_driver_1['Distance'], telemetry_driver_1['Speed'], label=label_1, color=color_1)
ax[0].legend(loc='lower center', bbox_to_anchor=(0.5, -0.12),)
plt.suptitle(plot_title)
subplot_bgcolor = '#FAFAFA'
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)")
plt.show()
Ed eseguendolo avremo questo risultato.

Il primo grafico rappresenta la velocità, come da nostre indicazioni.
Il secondo grafico è al momento vuoto dal momento che non abbiamo ancora deciso qual è la serie di dati che deve essere rappresentata; detto in altri termini, abbiamo valorizzato ax[0] ma non abbiamo ancora fatto alcun riferimento a ax[1].
Notare come la dimensione totale del grafico sia la stessa di prima (20 x 10) ed avendo impostato un rapporto dei due grafici pari ad 1:1, entrambi sono uguali (il grafico della velocità attuale è quindi più piccolo del precedente, è circa la metà).
Per il momento ignoriamo il fatto che la legenda, in seguito al ridimensionamento dei grafici, sia parzialmente sovrapposta all’etichetta dell’asse orizzontale. Sistemeremo in seguito.
Infine, per dare un ordine un po’ più chiaro al tutto, sistemiamo l’ordine del codice dell’ultimo blocco e mettiamo qualche commento (le linee che iniziano con #), ci tornerà utile per capire meglio quali modifiche fare.
# 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=[1, 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].legend(loc='lower center', bbox_to_anchor=(0.5, -0.12),)
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)")
# ------------------------
plt.show()
Al solito, eseguiamo il blocco per essere certi che sia tutto a posto.

Adesso siamo pronti per disegnare il secondo grafico con i dati che ci interessano, quelli relativi all’utilizzo dell’acceleratore.