Il grafico di dispersione è la rappresentazione grafica più corretta ed efficace per analizzare le possibili relazioni tra due variabili quantitative. Questa tipologia di grafico è anche nota con il suo nome in inglese scatterplot e in questo articolo impareremo tutto il necessario per crearne uno con Excel e Python.
Quando usare un grafico di dispersione
Supponiamo di aver raccolto i dati relativi a due variabili quantitative per uno stesso gruppo di unità statistiche, pensiamo ad esempio al numero di ore studiate per preparare un esame e al voto finale raggiunto.
Ore studiate | Voto |
11 | 20 |
12 | 18 |
20 | 24 |
21 | 22 |
17 | 19 |
29 | 24 |
31 | 28 |
21 | 28 |
Per quanto può sembrare scontato, è importante sottolineare che le rilevazioni devono essere accoppiate, cioè su una stessa riga devono essere riportate le ore e il voto dello stesso esame. In un caso come questo il diagramma a dispersione ci sarà utilissimo per studiare graficamente la relazione tra le due variabili!
Se anche una sola delle due variabili fosse stata qualitativa, ad esempio se a posto del numero di ore studiate ci fosse stata la sede regionale dell’università, allora il diagramma di dispersione non sarebbe stato il grafico migliore, ma sarebbe stato più opportuno utilizzare un diagramma a barre (https://www.jmp.com/it_it/statistics-knowledge-portal/exploratory-data-analysis/bar-chart.html).
Come creare un grafico di dispersione

Creare manualmente lo scatter-plot è molto semplice: occorre disegnare due assi cartesiani relativi alle due variabili e segnare con un cerchietto ogni coppia di punti a disposizione. Vediamo un esempio ottenuto con Excel.Nel grafico avremo un asse per la variabile Voto, uno per la variabile Ore e un punto nel piano per ogni coppia di valori. Per realizzare un grafico a dispersione con Excel possiamo seguire questi passi:
- selezionare le due colonne contenenti i dati
- spostarci in alto nel menù Inserisci
- cliccare su Grafici consigliati
- spostarci nel tab Tutti i grafici
- selezionare il grafico Dispersione (XY) e confermare con OK
- una volta creato il grafico possiamo selezionarlo e schiacciare sul tasto + che appare in alto a destra
- possiamo aggiungere il Titolo degli Assi
- possiamo aggiungere le Etichette Dati
- cliccando con il tasto destro su un’etichetta possiamo scegliere la voce Formato etichette dati e selezionare il Valore X e il Valore Y
- modificare in modo opportuno i titoli degli assi e del grafico
Diagramma di dispersione con Python
Vediamo come creare un diagramma di dispersione con l’ausilio delle librerie pandas e seaborn di Python. Creiamo preliminarmente un DataFrame con i dati precedenti.
import pandas as pd
ore = [11, 12, 20, 21, 17, 29, 31, 21]
voti = [20, 18, 24, 22, 19, 24, 28, 28]
df = pd.DataFrame(data = {"ore":ore,
"voti":voti},
columns = ["ore","voti"])
a questo punto tramite seaborn possiamo creare lo scatter plot con pochissime righe di codice!
import seaborn as sns
g = sns.scatterplot(data = df,
x = "ore",
y = "voti")
g.set(xlim = (0, 30),
ylim = (0, 35))
Nel codice precedente abbiamo importato la libreria, creato il grafico e impostato le dimensioni degli assi. Ecco il risultato.

Eseguire analisi dettagliate con Seaborn
Prendiamo ora come esempio il famoso dataset Titanic importabile tramite Seaborn.
titanic = sns.load_dataset("titanic")
Eseguiamo il metodo scatterplot visto in precedenza utilizzando due variabili quantitative presenti all’interno dei dati: fare (il costo del biglietto) e age (l’età dei passeggeri). Questa volta però aggiungiamo con il parametro hue la variabile qualitativa alive (che indica quali passeggeri sono sopravvissuti).
g = sns.scatterplot(data = titanic, x = "age", y = "fare", hue = "alive")
Analizziamo il risultato:

Con una sola istruzione abbiamo rappresentato la distribuzione dei dati all’interno dello stesso grafico di dispersione, utilizzando colori diversi in base al valore della variabile alive. In questo modo possiamo andare alla ricerca di relazioni tra le variabili valide solo per alcuni sottoinsiemi del nostro campione. Per lo stesso obiettivo possiamo utilizzare anche la classe relplot in questo modo:
g = sns.relplot(data = titanic,
x = "age",
y = "fare",
row = "alive")
Il risultato sarà costituito da due grafici distinti, ognuno relativo alle righe con un determinato valore della variabile alive.

Continua a imparare
- Studiamo come creare con Python altre tipologie di grafici: istogramma, grafico 3d e boxplot.
- Per un percorso completo sull’analisi dei dati e il Machine Learning, puoi visitare la pagina della mia videolibreria https://www.yimp.it/corso-completo-di-analisi-dei-dati/