Grafici a bolle (ggplot)
I grafici a bolle, con ggplot2, sono in pratica una variazione dei Grafici a dispersione (scatterplot), che si producono con geom_point()
:
cars %>% ggplot(aes(speed, dist)) + geom_point(aes(size = dist, col = speed)) # oppure cars %>% ggplot(aes(speed, dist, size = dist, col = speed)) + geom_point()

Per rappresentare le dimensioni delle bolle, abbiamo utilizzato: aes(size = dist)
.
Possiamo anche definire la scala in cui rappresentare le quantità. Della “bolla”, infatti, possiamo far corrispondere alla quantità il raggio oppure l'area. Si consideri nella figura 2 la differenza (si tratta dei contagi cumulativi di SARS-Cov-2 al 12 marzo 2020, dati OMS):

Per fare in modo che sia l'area della bolla a rappresentare i valori, utilizzeremo la funzione
scale_size_area()
Per fare in modo che sia invece il raggio (il default):
scale_radius()
Possiamo anche definire i limiti di tali grandezze:
scale_size_area(max_size = 10)
e
scale_radius(range = c(1, 10))
La bolla “grande” è infatti identica nei due grafici (in entrambi i casi il valore massimo è 10).
Di seguito il codice dei due grafici:
# dati dati_es <- data.frame("Country" = c("Italy", "China"), "Cases" = c(12462, 80981)) # primo grafico ggplot(dati_es, aes(x = Country, y = 0.5)) + geom_point(aes(size = Cases), alpha = 0.8, fill = "orange", col = "orange") + # sistema di riferimento ylim(0, 1) + # scala scale_size_area(max_size = 10) + geom_text(aes(label = Country, x = Country, y = 0.34), size = 3.5) + geom_text(aes(label = Cases, x = Country, y = 0.25), size = 3) + # eliminare griglie, assi e legenda theme(axis.text = element_blank(), axis.title = element_blank(), panel.grid.major = element_blank(), panel.grid.minor = element_blank(), legend.position = "none") + # sottotitolo labs(subtitle = "quantità rappresentata dall'area")
Il secondo grafico è identico, a parte:
scale_radius(range = c(1, 10))
labs(subtitle = "... e dal raggio")
Vedi anche: