Corso
In questo tutorial ti guiderò nella creazione e personalizzazione degli istogrammi nel linguaggio di programmazione R. Vedremo cos’è un istogramma, come preparare i dati, come costruire un istogramma di base e come modificare colori, etichette, classi (bins) e limiti degli assi.
Useremo il linguaggio R base senza pacchetti aggiuntivi. Questo approccio è particolarmente utile quando non si possono usare pacchetti extra o quando cerchi analisi esplorative rapide. In altri casi, potresti considerare l’uso di ggplot2, come spiegato nel nostro tutorial How to Make a ggplot2 Histogram in R.
TL;DR
-
Usa
hist(x)per creare un istogramma di base in R base senza pacchetti extra -
Personalizza l’aspetto con
col(colore di riempimento),border(contorno),main(titolo),xlabeylab -
Controlla il raggruppamento in classi con l’argomento
breaks: passa un numero, un vettore di punti di taglio o un nome di metodo ("Sturges","Scott","Freedman-Diaconis") -
Sovrapponi statistiche descrittive usando
abline()per la media elines(density())per una curva di densità -
Per istogrammi raggruppati o di qualità da pubblicazione, passa a
ggplot2
Cos’è un istogramma?
Un istogramma è un grafico che mostra le distribuzioni di frequenza su variabili continue (numeriche). Gli istogrammi ci permettono di vedere il conteggio delle osservazioni all’interno degli intervalli coperti dalla variabile.
Gli istogrammi assomigliano ai grafici a barre. Una differenza chiave è che i grafici a barre associano un valore a una specifica categoria o variabile discreta, mentre un istogramma visualizza le frequenze per variabili continue.
Preparare i dati per gli istogrammi
Useremo questo dataset immobiliare che include dettagli su diversi annunci di case, come la dimensione dell’abitazione, il numero di stanze, il prezzo e informazioni sulla posizione. Possiamo leggere i dati usando la funzione read.csv(), direttamente dall’URL oppure scaricando il file csv in una cartella e leggendolo dall’archivio locale. Possiamo anche specificare di voler salvare solo le colonne che ci interessano per questo tutorial: price e condition.
home_data <- read.csv("https://raw.githubusercontent.com/rashida048/Datasets/master/home_data.csv")[ ,c('price', 'condition')]
Diamo un’occhiata alle prime righe dei dati usando la funzione head().
head(home_data, 5)

Creare istogrammi con R base
Ora creeremo un istogramma usando la funzione hist() per osservare la distribuzione dei prezzi nel nostro dataset.
hist(home_data$price)
Istogramma di base dei prezzi delle case. Immagine dell’autore.
Aggiungere statistiche descrittive
Possiamo aggiungere statistiche descrittive all’istogramma usando la funzione abline(). Questa aggiunge una linea verticale al grafico.
-
Imposta l’argomento
valla posizione sull’asse x per la linea verticale. Qui otteniamo il prezzo medio delle case usandomean(). -
L’argomento
colimposta il colore della linea, in questo caso rosso. -
L’argomento
lwdimposta lo spessore della linea. Un valore pari a 3 aumenta lo spessore per renderla più visibile.
hist(home_data$price)
abline(v = mean(home_data$price), col='red', lwd = 3)
Tracciare le densità di probabilità
Per aggiungere una linea di densità di probabilità all’istogramma, innanzitutto cambiamo l’asse y in densità. Nella chiamata a hist(), impostiamo l’argomento probability a TRUE.
La linea di densità è creata combinando density(), che calcola la posizione della curva di densità di probabilità, e lines(), che aggiunge la linea al grafico esistente.
hist(home_data$price, probability = TRUE)
abline(v = mean(home_data$price), col='red', lwd = 3)
lines(density(home_data$price), col = 'green', lwd = 3)

Istogramma dei prezzi delle case con la media evidenziata. Immagine dell’autore.
Nota che i numeri sull’asse y sono cambiati.
Personalizzare il colore
Il parametro col di hist() imposta il colore di riempimento delle barre, mentre border imposta il colore del contorno. Qui imposto il riempimento a blu e i bordi a bianco.
hist(home_data$price, col = 'blue', border = "white")
Istogramma dei prezzi delle case con colore aggiunto. Immagine dell’autore.
Aggiungere etichette e titoli
Possiamo modificare le etichette del grafico per renderlo più leggibile e presentabile. È utile se condividi il grafico con altri.
-
xlabimposta l’etichetta dell’asse x -
ylabimposta l’etichetta dell’asse y -
mainimposta il titolo del grafico
hist(home_data$price, xlab = 'Price (USD)', ylab = 'Number of Listings', main = 'Distribution of House Prices')
Istogramma dei prezzi delle case con etichette degli assi. Immagine dell’autore.
Definire le classi con breaks
Con gli argomenti predefiniti, è difficile vedere l’intera distribuzione dei prezzi delle case sull’intero range. Si vede che sono concentrati nelle prime classi, ma non sono molto descrittive.
Possiamo aggiungere più classi usando il parametro breaks. Con questo argomento possiamo passare un vettore di specifici punti di taglio da usare, una funzione per calcolarli, un numero di classi desiderato o una funzione per calcolare il numero di celle.
In questo esempio passeremo il numero di classi desiderato. Questo numero dipende dal contesto, in base a ciò che vuoi mostrare nel grafico.
hist(home_data$price, breaks = 100)
Istogramma dei prezzi delle case con ampiezza delle classi modificata. Immagine dell’autore.
Con breaks impostato a 100, abbiamo molta più visibilità sulla distribuzione nelle prime classi.
Possiamo anche specificare il numero di classi usando i nomi di metodi comuni per calcolare i breaks ottimali in un istogramma. Per impostazione predefinita, hist() usa il metodo “Sturges”. Qui specifichiamo esplicitamente il metodo.
hist(home_data$price, breaks = "Sturges")
Istogramma dei prezzi delle case con metodo Sturges. Immagine dell’autore.
Possiamo anche passare “Scott” come argomento per l’attributo breaks per usare il metodo di Scott.
hist(home_data$price, breaks = "Scott")

Istogramma dei prezzi delle case con metodo Scott. Immagine dell’autore.
Infine, possiamo anche usare il metodo di Freedman-Diaconis (FD).
hist(home_data$price, breaks = "Freedman-Diaconis")
Istogramma dei prezzi delle case con metodo Freedman-Diaconis. Immagine dell’autore.
Confrontare i metodi di breaks
La tabella seguente riassume i tre metodi nominati per i breaks disponibili in hist(). Il predefinito è Sturges.
| Metodo | Come funziona | Ideale per |
|---|---|---|
| Sturges | Classi = 1 + log₂(n). Presuppone dati approssimativamente normali. | Dataset piccoli o medi con distribuzioni quasi normali |
| Scott | Ampiezza classe = 3,49 × sd × n⁻¹ᐟ³. Minimizza l’errore quadratico medio integrato. | Dati normalmente distribuiti in cui la varianza è importante |
| Freedman-Diaconis | Ampiezza classe = 2 × IQR × n⁻¹ᐟ³. Usa l’intervallo interquartile invece della deviazione standard. | Dati asimmetrici o distribuzioni con outlier |
Impostare i limiti degli assi
Possiamo impostare i limiti dell’asse x del grafico usando l’argomento xlim per fare zoom sui dati che ci interessano. Ad esempio, a volte è utile concentrarsi sulla parte centrale della distribuzione, invece della lunga coda che vediamo osservando l’intero grafico.
È possibile anche cambiare i limiti dell’asse y (usando l’argomento ylim), ma è meno utile per gli istogrammi perché i valori calcolati automaticamente sono quasi sempre ideali.
Faremo zoom sui prezzi tra $0 e $2M.
hist(home_data$price, breaks = 100, xlim = c(0, 2000000))
Istogramma dei prezzi delle case con limiti degli assi modificati. Immagine dell’autore.
Prossimi passi nella visualizzazione con istogrammi
Man mano che prendi dimestichezza con R, puoi provare pacchetti di visualizzazione dedicati che offrono maggior controllo su estetica, layout e interattività. Una libreria molto popolare e facile da usare per i grafici in R è ggplot2. Qui sotto creiamo una vista interessante delle distribuzioni dei prezzi in base al numero di camere da letto della casa.
Istogramma dei prezzi delle case con ggplot2. Immagine dell’autore.
ggplot2 è il pacchetto di visualizzazione più usato in R. Puoi imparare a creare istogrammi con esso nel nostro tutorial How to Make a ggplot2 Histogram in R, oppure esplorare il tutorial Graphics with ggplot2 per un’introduzione più ampia. Dai un’occhiata anche ai nostri corsi Introduction to ggplot2 course e Intermediate ggplot2 course per approfondire.
Considerazioni finali
In questo tutorial abbiamo visto che gli istogrammi sono ottime visualizzazioni per analizzare le distribuzioni di variabili continue. Abbiamo imparato a creare un istogramma in R, a tracciare statistiche riassuntive sopra l’istogramma, a personalizzare elementi del grafico come titoli degli assi, colori, il modo in cui segmentiamo l’asse x e come impostare i limiti degli assi. Infine, abbiamo mostrato parte della potenza della libreria ggplot2.
Per ulteriori letture e risorse su DataCamp, dai un’occhiata ai nostri corsi interattivi:
Autrice di Data Science | Senior Technical Marketing Analyst presso Wayfair | MSE in Data Science all'Università della Pennsylvania


