Leggenda in Seaborn Plot

Manav Narula 21 dicembre 2022
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)

leggenda di Seaborn 1

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"])

leggenda di Seaborn 2

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")

leggenda dei nati marini 3

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",
)

leggenda di Seaborn 4

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))

leggenda dei nati marini 5

Nota che il valore dell’argomento loc è 2, che indica la posizione in alto a sinistra.

Autore: Manav Narula
Manav Narula avatar Manav Narula avatar

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

Articolo correlato - Seaborn Legend