Leggenda in Seaborn Plot
Una legenda è solitamente una piccola casella, che appare in un angolo del grafico e viene utilizzata per raccontare i diversi elementi della trama. E se ci sono più dati nel grafico, allora indica quale componente rappresenta quali dati.
In questo tutorial impareremo come aggiungere o personalizzare una leggenda a una semplice trama di Seaborn.
Per impostazione predefinita, seaborn aggiunge automaticamente una legenda al grafico.
Per esempio,
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
df = pd.DataFrame(
{"Day 1": [7, 1, 5, 6, 3, 10, 5, 8], "Day 2": [1, 2, 8, 4, 3, 9, 5, 2]}
)
sns.lineplot(data=df)
Notare che la legenda è nell’angolo in alto a destra.
Se vogliamo aggiungere esplicitamente una legenda, possiamo usare la funzione legend()
dalla libreria matplotlib. In questo modo, possiamo aggiungere le nostre etichette in modo esplicito.
Per esempio,
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
df = pd.DataFrame(
{"Day 1": [7, 1, 5, 6, 3, 10, 5, 8], "Day 2": [1, 2, 8, 4, 3, 9, 5, 2]}
)
sns.lineplot(data=df)
plt.legend(labels=["Legend_Day1", "Legend_Day2"])
Si noti che la libreria seaborn si basa e utilizza il modulo matplotlib per creare i suoi grafici. Quindi possiamo usare la funzione legend()
anche per i grafici seaborn.
Possiamo anche eseguire piccole personalizzazioni sulla legenda. Ad esempio, possiamo aggiungere un titolo alla legenda utilizzando il parametro titolo
nella funzione legend()
, come mostrato di seguito.
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
df = pd.DataFrame(
{"Day 1": [7, 1, 5, 6, 3, 10, 5, 8], "Day 2": [1, 2, 8, 4, 3, 9, 5, 2]}
)
sns.lineplot(data=df)
plt.legend(labels=["Legend_Day1", "Legend_Day2"], title="Title_Legend")
Il fontsize
e title_fontsize
sono i due parametri che vengono usati per alterare il carattere del contenuto nella legenda e il suo titolo, rispettivamente.
Vedi il codice qui sotto.
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
df = pd.DataFrame(
{"Day 1": [7, 1, 5, 6, 3, 10, 5, 8], "Day 2": [1, 2, 8, 4, 3, 9, 5, 2]}
)
sns.lineplot(data=df)
plt.legend(
labels=["Legend_Day1", "Legend_Day2"],
title="Title_Legend",
fontsize="large",
title_fontsize="10",
)
Nota che title_fontsize
non è presente in tutte le versioni di matplotlib quindi controlla la tua versione prima di usarla.
Possiamo specificare la dimensione e la posizione del riquadro della legenda utilizzando i parametri loc
e bbox_to_anchor
.
loc
viene utilizzato per specificare la posizione della legenda. Numeri diversi specificano posizioni diverse. Il suo valore è 0 per impostazione predefinita, il che significa che cerca la posizione migliore per posizionare la legenda in cui si verifica la sovrapposizione minima.
Il bbox_to_anchor
specifica la posizione della legenda rispetto alla posizione specificata nel parametro loc
. Se impostiamo il parametro bbox_to_anchor
con una tupla di 2 elementi, allora considera i loro valori come i valori x e y per il posizionamento lungo la loc
specificata.
Per esempio,
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
df = pd.DataFrame(
{"Day 1": [7, 1, 5, 6, 3, 10, 5, 8], "Day 2": [1, 2, 8, 4, 3, 9, 5, 2]}
)
sns.lineplot(data=df)
plt.legend(labels=["Legend_Day1", "Legend_Day2"], loc=2, bbox_to_anchor=(1, 1))
Nota che il valore dell’argomento loc
è 2, che indica la posizione in alto a sinistra.
Manav is a IT Professional who has a lot of experience as a core developer in many live projects. He is an avid learner who enjoys learning new things and sharing his findings whenever possible.
LinkedIn