HOWTO · Seaborn

Impostare la dimensione dei marcatori nei grafici a dispersione di Seaborn

Scopri come impostare un’area uniforme con `s`, associare le dimensioni dei marcatori a una variabile numerica oppure usare i parametri `size` e `sizes` di Seaborn per creare una legenda con scala controllata.

In questa pagina

Per usare la stessa dimensione per tutti i punti di un grafico a dispersione creato con Seaborn, passa s a sns.scatterplot: il valore rappresenta l’area secondo le unità di Matplotlib, cioè punti quadrati. Per variare l’area dei marcatori in base ai dati, passa a s un array numerico. Per ottenere una mappatura gestita da Seaborn con relativa legenda, usa size per la variabile e sizes per l’intervallo delle dimensioni.

Metodo 1: usare il parametro s in scatterplot

Usa s quando vuoi che tutti i punti abbiano la stessa area. Il valore è espresso in punti quadrati: raddoppiarlo, quindi, non raddoppia la larghezza del marcatore. Aumentalo o riducilo finché i punti risultano leggibili senza nascondersi a vicenda.

Esegui questo esempio. Il titolo del grafico, “Fixed marker area”, e l’etichetta stampata, “Marker area”, sono in inglese: il titolo indica che l’area dei marcatori è fissa, mentre l’etichetta riporta l’area assegnata.

import matplotlib.pyplot as plt
import seaborn as sns

x = [1, 2, 3, 4]
y = [2, 3, 2, 5]
area = 64

sns.scatterplot(x=x, y=y, s=area, color="teal", marker="o")
plt.xlabel("X")
plt.ylabel("Y")
plt.title("Fixed marker area")
print(f"Marker area: {area} pt^2")
plt.close()
Marker area: 64 pt^2

Il valore fisso di s si applica a tutti i punti di questa chiamata. Aggiungi una mappatura hue se vuoi distinguere i gruppi con il colore; questa mappatura è indipendente dall’area dei marcatori.

Metodo 2: regolare la dimensione dei marcatori con una variabile

Per fare in modo che l’area di ciascun marcatore rappresenti i valori di una colonna numerica, passa a s un valore numerico per ogni riga. Poiché i valori rappresentano aree, scala la colonna in un intervallo utile invece di usare alla cieca le misure grezze. Per esempio, con un DataFrame chiamato data, s=data["party_size"] * 20 assegna un’area a ogni riga; regola il moltiplicatore in base ai dati e alle dimensioni della figura. Mantieni allineati per riga i valori di x, y e della dimensione.

Puoi affiancare hue="day" quando vuoi codificare con il colore una variabile categoriale distinta. I valori delle dimensioni devono restare numerici: assegna i gruppi categoriali a hue invece di moltiplicarli per s.

Metodo 3: personalizzare le dimensioni dei marcatori con parametri aggiuntivi

Usa la semantica size di Seaborn se vuoi che Seaborn associ una variabile dei dati alle dimensioni dei marcatori e crei la legenda corrispondente. Per esempio, con un DataFrame chiamato data, chiama sns.scatterplot(data=data, x="total_bill", y="tip", size="size", sizes=(30, 180)). Qui size indica la colonna da mappare, mentre sizes definisce le aree minima e massima dei marcatori, espresse in punti quadrati. I valori numerici vengono distribuiti lungo questo intervallo; una variabile categoriale per size viene rappresentata con livelli distinti.

Puoi combinare size con hue per distinguere i gruppi con il colore e con style per distinguerli con la forma dei marcatori. Usa palette per scegliere i colori della mappatura hue, oppure color per assegnare un unico colore quando non usi hue. Imposta marker per scegliere una forma comune a tutti i marcatori. Queste opzioni possono facilitare il confronto tra gruppi, ma limita il numero di codifiche visive così che la legenda delle dimensioni resti leggibile.

Conclusione

Scegli s per impostare un’area fissa o passare un array numerico di aree, una per ogni punto. Scegli size e sizes di Seaborn se vuoi mappare una variabile dei dati sulle dimensioni, con una legenda dedicata e un intervallo controllato. Ricorda che la dimensione del marcatore si riferisce all’area; regola quindi i valori per mantenere i punti ben distinguibili nella figura finale.

Domande frequenti

  1. Come cambio la dimensione predefinita dei marcatori in Seaborn? Passa un’area con s a sns.scatterplot, per esempio s=64, per assegnare una dimensione uniforme.

  2. In un grafico a dispersione posso usare dimensioni diverse per i punti? Sì. Passa a s un array numerico con un valore per riga, oppure usa size insieme a sizes per ottenere la scala e la legenda gestite da Seaborn.

  3. A cosa serve hue? Associa una variabile al colore, spesso per distinguere categorie. È indipendente dalla mappatura delle dimensioni dei marcatori.

  4. Come posso rendere il grafico più leggibile? Regola l’intervallo delle aree, usa colori o forme diverse solo quando aiutano a distinguere gruppi significativi e assegna etichette agli assi. Se i punti si sovrappongono, possono aiutare marcatori più piccoli o la trasparenza.

  5. Come salvo un grafico a dispersione di Seaborn? Salva la figura Matplotlib prima di visualizzarla o chiuderla, per esempio chiamando plt.savefig("scatterplot.png", dpi=150, bbox_inches="tight") dopo aver creato il grafico.