Come creare un grafico matplotlib con due assi y
Il modo più semplice per creare un grafico Matplotlib con due assi y è utilizzare la funzione twinx() .
L’esempio seguente mostra come utilizzare questa funzione nella pratica.
Esempio: creare un grafico Matplotlib con due assi Y
Supponiamo di avere i seguenti due DataFrames panda:
import pandas as pd #createDataFrames df1 = pd. DataFrame ({' year ': [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], ' sales ': [14, 16, 19, 22, 24, 25, 24, 24, 27, 30]}) df2 = pd. DataFrame ({' year ': [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], ' leads ': [4, 4, 4, 5, 4, 5, 7, 8, 5, 3]})
Entrambi i DataFrame condividono la variabile “anno” che va da 1 a 10, ma il primo DataFrame mostra le vendite totali ogni anno mentre il secondo DataFrame mostra i lead totali ogni anno.
Possiamo utilizzare il codice seguente per creare un grafico Matplotlib che mostri vendite e lead su un grafico con due assi Y:
import matplotlib. pyplot as plt
#define colors to use
col1 = ' steelblue '
col2 = ' red '
#define subplots
fig,ax = plt. subplots ()
#add first line to plot
ax. plot (df1. year , df1. sales , color=col1)
#add x-axis label
ax. set_xlabel (' Year ', fontsize= 14 )
#add y-axis label
ax. set_ylabel (' Sales ', color=col1, fontsize= 16 )
#define second y-axis that shares x-axis with current plot
ax2 = ax. twinx ()
#add second line to plot
ax2. plot (df2. year , df2. leads , color=col2)
#add second y-axis label
ax2. set_ylabel (' Leads ', color=col2, fontsize= 16 )
L’asse Y sul lato sinistro del grafico mostra le vendite totali per anno mentre l’asse Y sul lato destro del grafico mostra i lead totali per anno.
La linea blu nel grafico rappresenta le vendite totali all’anno e la linea rossa rappresenta i lead totali all’anno.
Sentiti libero di utilizzare gli argomenti indicatore e larghezza della linea per modificare l’aspetto delle linee nel grafico:
import matplotlib. pyplot as plt
#define colors to use
col1 = ' steelblue '
col2 = ' red '
#define subplots
fig,ax = plt. subplots ()
#add first line to plot
ax. plot (df1. year , df1. sales , color=col1, marker=' o ', linewidth= 3 )
#add x-axis label
ax. set_xlabel (' Year ', fontsize= 14 )
#add y-axis label
ax. set_ylabel (' Sales ', color=col1, fontsize= 16 )
#define second y-axis that shares x-axis with current plot
ax2 = ax. twinx ()
#add second line to plot
ax2. plot (df2. year , df2. leads , color=col2, marker=' o ', linewidth= 3 )
#add second y-axis label
ax2. set_ylabel (' Leads ', color=col2, fontsize= 16 )
Tieni presente che entrambe le linee sono ora più larghe e contengono indicatori “o” per visualizzare i singoli punti dati.
Risorse addizionali
I seguenti tutorial spiegano come eseguire altre operazioni comuni in Matplotlib:
Come regolare la posizione dell’etichetta dell’asse in Matplotlib
Come impostare gli intervalli degli assi in Matplotlib
Come impostare i valori dell’asse X in Matplotlib