HW 04 - ggplot2

Data di consegna: lunedì 28 ottobre 2024

Introduzione

In questo compito utilizzerai i comandi utili per:

  • costruire rappresentazioni grafiche usando la logica del package ggplot2

Obiettivi di apprendimento

Lo svolgimento di questo compito ti permetterà di:

  • creare rappresentazione grafiche univariate e bivariate
  • creare rappresentazione grafiche utillizzando variabili aggiuntive a quelle usate per il grafico di base per visualizzare più caratteristiche di interesse dei dati

Istruzioni per l’uso

  • Crea un progetto associandolo ad una cartella “RLab_hw04_cognome_nome” sul tuo disco: nel mio caso il nome della cartella sarebbe: “RLab_hw04_vistocco_domenico” e copia all’interno della cartella il seguente file: dati-citta-italiane.xlsx.
Descrizione del dataset

Una descrizione del contenuto del file con la corrispondente legenda delle variabili è disponibile sul primo foglio (Descrizione variabili) della cartella di lavoro MS-Excel.

  • Rispondi ai vari punti salvando le risposte in un file R con il nome “hw04_cognome_nome.R”: ad esempio nel mio caso il nome del file sarebbe “hw04_vistocco_domenico.R”.

  • Per rispondere ad ogni punto inserisci un’etichetta di sezione (che puoi inserire nello script usando la combinazione di testi CTRL/CMD + SHIFT + R) utilizzando il punto cui sta rispondendo. Ad esempio, per rispondere al punto 1 del compito, usa un’etichetta di sezione:

# PUNTO 1 ------------------------------------------------
  • Utilizza i commenti per rispondere alle domande in cui viene chiesta un’interpretazione da parte tua: lo script deve cioè essere funzionante quando si eseguono tutti i comandi con il pulsante Source.

  • Lo script viene valutato sia in base alla correttezza del codice che in base alla qualità (stile utilizzato per rendere lo script leggibile ed ordinato).

Esercizi

Nota

Ricordati di utilizzare i commenti per le risposte aperte.

Parte 1: Importazione, pulizia e preparazione dei dati

  1. Importa il foglio Dati del file dati-citta-italiane-ggplot2.csv nell’oggetto dati_province uniformando i nomi della tabella sfruttando la funzione clean_names {janitor}

  2. Aggiungi alla tabella dati_province una nuova colonna classi_reddito categorizzando la variabile reddito in tre classi di uguale ampiezza usando le seguenti etichette per le tre classi: basso, medio e alto

Parte 2: Rappresentazioni grafiche

  1. Costruisci un grafico utilizzando boxplot paralleli per confrontare l’andamento della variabile reddito tra le varie zone geografiche

  2. Costruisci un grafico che permetta di confrontare l’andamento della variabile reddito tra le varie zone geografiche utilizzando degli istogrammi

Suggerimento

Sfrutta la divisione in pannelli del grafico per ottenere una rappresentazione separata per i vari livelli della variabile reddito

  1. Costruisci un grafico che permetta di confrontare l’andamento della variabile reddito tra le varie zone geografiche utilizzando delle funzioni di densità
Suggerimento

Rappresenta le quattro funzioni di densità in un unico grafico sfruttando il colore per distinguerle

  1. Ripeti il grafico precedente sfruttando il package ggridges per ottenere delle funzioni di densità parallele e non sovrapposte

  2. Costruisci una rappresentazione grafica che sfrutti un diagramma a barre, rappresentando una barra per ciascuna area geografica (asse orizzontale), la cui altezza (asse verticale) corrisponda al valore del reddito medio delle regioni dell’area. Nella rappresentazione ordina le barre in senso decrescente rispetto ai valori del reddito e sovraimponi una spezzata che mostri l’andamento del reddito nelle varie aree geografiche

Suggerimento
  • per ordinare le barre rispetto ai valori del reddito medio puoi sfruttare una tra le funzioni reorder {base} o fct_reorder {forcats}. Nota: puoi effettuare l’ordinamento sia prima di costruire il grafico in un’operazione di mutate della tabella, che direttamente nel passaggio della aesthetics del grafico
  • per ottenere il diagramma richiesto puoi sfruttare la funzione geom_bar impostando a identity la statistica utilizzata, oppure direttamente la funzione geom_col che permette di ottenere un diagramma a barre ma richiede di specificare sia i valori in x che in y
  1. Costruisci una rappresentazione grafica che sfrutti un diagramma a barre, rappresentando una barra per ciascuna regione (asse verticale), la cui altezza (asse orizzontale) corrisponda al valore del reddito medio della regione, usando un colore di riempimento per le barre in base all’area geografica delle regioni. Nella rappresentazione ordina le barre in senso decrescente rispetto ai valori del reddito

  2. Costruisci un cartogramma dell’Italia rappresentando i contorni delle singole province

Suggerimento
  • per ottenere la tabella dati da rappresentare puoi usare il seguente comando R: italy <- map_data("italy") che sfrutta la funzione map_data disponibile in ggplot2 che permette di scaricare i dati necessari alla rappresentazione
  • per costruire la mappa usa il seguente codice ggplot(italy, aes(long, lat, group = group)) e a questo sovraimponi uno strato geom_polygon usando il blu come colore dei bordi e il bianco come colore di riempimento
  1. Costruisci un cartogramma dell’Italia usando come colore di riempimento il valore del reddito delle singole province
Suggerimento
  • per procedere effettua un join tra la tabella dati importata in risposta al punto 1 del compito e la tabella italy creata per rispondere al punto precedente
  • prima di procedere all’operazione di join controlla che i nomi delle province nelle due tabella siano uguali: per le province in cui sono presenti difformità puoi sfruttare le operazioni di mutate e recode per uniformare le stringhe di testo
  1. Riproduci il seguente grafico che permette di studiare la relazione tra il reddito e l’indicatore relativo alle librerie per le varie province, differenziandole per zona geografica di appartenenza:

Suggerimento
  • per ordinare i pannelli nell’ordine sopra utilizzato sfrutta una variabile di tipo factor per la zona geografica
  • gli argomenti nrow ed ncol di facet_wrap ti permettono di fissare la struttura in cui sono organizzati i pannelli
  1. Riproduci il seguente grafico che riporta il ranking delle regioni italiane (asse verticale) in termini del reddito medio (asse orizzontale) dei capoluoghi di provincia di ciascuna regione:

Prova a riprodurre il grafico usando le tre strade alternative indicate nei seguenti suggerimenti.

Suggerimento variante 1
  • per ordinare le regioni in ordine decrescente del reddito medio sfrutta la funzione fct_reorder {forcats}, disponibile quando si carica tidyverse
  • sfrutta uno strato geom_segment per ottenere le aste
  • sfrutta uno strato geom_point per sovraimporre i punti
  • sfrutta il tema theme_clean disponibile nel package ggthemes
Suggerimento variante 2
  • per ordinare le regioni in ordine decrescente del reddito medio sfrutta la funzione fct_reorder {forcats}, disponibile quando si carica tidyverse
  • sfrutta uno strato geom_bar per ottenere le aste regolando l’attributo width per fissarne l’ampiezza e cambiando la statistica di default in stat = "identity"
  • sfrutta uno strato geom_point per sovraimporre i punti
  • sfrutta il tema theme_clean disponibile nel package ggthemes
Suggerimento variante 3
  • per ordinare le regioni in ordine decrescente del reddito medio sfrutta la funzione fct_reorder {forcats}, disponibile quando si carica tidyverse
  • sfrutta la funzione geom_lollipop {ggalt} per ottenere direttamente l’oggetto geometrico lollipop
  • sfrutta il tema theme_clean disponibile nel package ggthemes
  1. Riproduci il seguente grafico:

Anche in questo caso prova a riprodurre il grafico usando le tre strade alternative indicate nei suggerimenti riportati per il precedente grafico.

Consegna

Per inviare la tua soluzione:

  • Salva il file .R con le tue soluzioni
  • Chiudi il progetto RStudio
  • Comprimi in un file .zip la cartella associata al progetto
  • Carica il file .zip salvato in risposta al compito assegnato su Teams

Valutazione

Totale punti disponibili: 110 punti

Component Punti
Es 1 - 15 100
Workflow & formattazione 101

Footnotes

  1. La valutazione al “Workflow & formattazione” tiene conto del principio di riproducibilità del codice: lo script caricato deve funzionare senza errori su qualunque PC dando gli stessi risultati↩︎