Ggplot2 è un utilissimo pacchetto grafico che ci permette di ricreare praticamente qualunque tipologia di grafico, esattamente nel modo in cui l’abbiamo pensato, grazie ad una vasta gamma di funzioni di personalizzazione e di pacchetti aggiuntivi compatibili. In questo post partiamo vedendo le basi di questo pacchetto, ovvero come creare grafici basilari analizzando le 3 componenti necessarie per la creazione di un grafico con Ggplot2.
Quando parlo di “componenti”, mi riferisco a tipologie di comandi che bisogna inserire per la costruzione di un grafico con questo pacchetto. Queste componenti sono in tutto 8:Oggi ci focalizzeremo sulle prime 3, in quanto sono le uniche 3 di cui ggplot2 ha bisogno di informazioni; le altre infatti possono essere omesse in quanto hanno già dei valori di default. Di seguito una versione minimal del comando da utilizzare per creare un grafico base con ggplot2:
ggplot(data = <data>) +
<geom_function>(mapping = aes(<mapping>))
Spesso data =
e mapping =
sono sottointesi.
Data
Partiamo dalla parte più semplice, ovvero data. A <data> va sostituito il dafarame/tibble da cui prendere i dati. In questo post useremo il dataframe standard di R mtcars.
Geometries
Il secondo comando da definire è quello legato alle geometrie, ovvero alla forme che dovranno assumere i dati nel grafico.
Le classiche geometri sono geom_point()
per gli scatter plot, geom_bar()
e geom_col()
per i barplot, geom_boxplot()
per i boxplot e via dicendo.
Le geometrie sono davvero tante, e sono legate anche al concetto di statistics.
Verranno affrontate le relazioni in un post dedicato.
Di seguito un paio di esempi giusto per far vedere vari tipi di geom_
.
Una cosa interessante e molto utile di ggplot2 è la facilità con cui si possono usare più geometrie sugli stessi dati (o su dati diversi) in un solo plot.
Tutte le caratteristiche comuni si mettono dentro ggplot()
, mentre le caratteristiche peculiari si mettono dentro le geometrie.
Per esempio, combinando i due plot di sopra:
ggplot(mtcars, aes(x = mpg, y = hp)) +
geom_point() +
geom_smooth(se = F)
Mapping
Tramite il mapping noi andiamo a dire a ggplot quali variabili plottare e a definire altri parametri estetici come colore, riempimento, forma ecc. Vediamo subito tramite qualche esempio come funziona:
ggplot(data = mtcars) +
geom_point(mapping = aes(x = mpg, y = hp))
In questo esempio c’era uno scatter plot molto semplice, in cui sono state mappate in x e y, dentro aes()
, le colonne mpg
e hp
del dataset mtcars
.
Cambiare estetiche a tutto il grafico
Se vogliamo cambiare estetiche quali colori, forme ecc di tutto ciò che è plottato bisogna mettere queste specifiche al di fuori diaes()
.
Per esempio, se si vogliono cambiare forma e colore dei punti plottati nel grafico precente, si procede così:
ggplot(data = mtcars) +
geom_point(mapping = aes(x = mpg, y = hp), color = "blue", shape = 3)
Ci sono varie estetiche nel grafico che si possono modificare, ogni <geom> ha la sua, per questo non verranno analizzate nel dettaglio in questo post.
Cambiare estetiche in base ad un’altra variabile
Le stesse estetiche di sopra possono essere cambiate anche in base ad una variabile/condizione.
In questo caso si mappano dentro aes()
in quanto non tutte le osservazioni avranno le stesse caratteristiche estetiche nel grafico.
Esempio
Si vogliano evidenziare in uno scatter plot tra mpg e hp, quali vetture pesano meno di 3.250.
ggplot(data = mtcars) +
geom_point(mapping = aes(x = mpg, y = hp, color = wt < 3.25))
Come si può vedere, è comparsa una legenda che ci aiuta a capire lo schema grafico utilizzato.
Questo mappamento può essere fatto anche utilizzando una variabile categorica (o anche continua):
Ora abbiamo visto i comandi base per creare un plot con il pacchetto ggplot2, seguiranno post in cui si entrerà nel merito delle altre componenti, con esempi e spiegazioni più dettagliate.