Per una migliore visione, attiva JavaScript

Introduzione a GGPLOT2

 ·  🕘 4 min lettura  ·  🤖 Matteo Miotto

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:
  • Data
  • Mapping
  • Geometries
  • Statistics
  • Scales
  • Facets
  • Coordinates
  • Theme
  • 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_.

    Stessi dati ma geom_ diverse. In alto geom_point(), in basso geom_smooth()

    Fig.1: Stessi dati ma geom_ diverse. In alto geom_point(), in basso geom_smooth()

    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)
    Combinazione di due geometrie nello stesso grafico

    Fig.2: Combinazione di due geometrie nello stesso grafico

    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))
    Scatter plot base

    Fig.3: Scatter plot base

    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)
    Scatter plot a cui sono stati cambiati forma e colore dei punti

    Fig.4: Scatter plot a cui sono stati cambiati forma e colore dei punti

    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))
    Scatter plot con colorazioni diverse in base al peso dell'auto

    Fig.5: Scatter plot con colorazioni diverse in base al peso dell’auto

    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):

    Quattro esempi di come si possono evidenzire i punti in base ad una variabile categorica: colore, dimensione, trasparenza e forma

    Fig.6: Quattro esempi di come si possono evidenzire i punti in base ad una variabile categorica: colore, dimensione, trasparenza e forma

    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.

    Condividi
    Supporta l'autore con

    Matteo Miotto
    SCRITTO DA
    Matteo Miotto
    Genomic Data Science master student