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 )

Matplotlib con due assi y

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

Aggiungi un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *