Recap Giorno 1

Riepilogo Geometrie ed Estetiche

Marco Chiapello

Benvenuti al Giorno 2!

Oggi iniziamo con un riepilogo del Giorno 1

Cosa abbiamo visto:

  1. Geometrie Base - I mattoni della visualizzazione
  2. Estetiche e Mappature - Come collegare dati a proprietà visive

Obiettivi di questo recap:

  • Consolidare concetti chiave
  • Chiarire dubbi
  • Preparare la base per argomenti avanzati
  • Esercizio pratico di riscaldamento

Geometrie Base

Categorie di Geometrie

1. Relazioni (2 variabili continue)

  • geom_point() - scatter plot
  • geom_line() - time series (ordinato per x)
  • geom_path() - traiettorie (ordine dati)
  • geom_smooth() - trend lines

2. Distribuzioni 1D

  • geom_histogram() - barre di frequenza
  • geom_density() - curve smooth
  • geom_freqpoly() - histogram come linea
  • geom_dotplot() - ogni punto visibile

3. Distribuzioni 2D

  • geom_bin2d() - heatmap rettangolare
  • geom_hex() - heatmap esagonale
  • geom_density2d() - contour lines

4. Statistiche Riassuntive

  • geom_boxplot() - mediana, quartili, outliers
  • geom_violin() - forma distribuzione completa
  • geom_bar() / geom_col() - conteggi/valori

5. Incertezza

  • geom_errorbar(), geom_pointrange(), geom_ribbon()

Geometrie: Punti Chiave

Cosa ricordare:

  1. Ogni geom interpreta i dati in modo specifico

    geom_point()      # ogni riga = 1 punto
    geom_histogram()  # conta frequenze
    geom_boxplot()    # calcola statistiche riassuntive
  2. Si possono combinare più geom

    ggplot(mpg, aes(x = displ, y = hwy)) +
      geom_point(alpha = 0.3) +
      geom_smooth(method = "lm")
  3. Ogni geom ha parametri specifici

    • geom_histogram(): bins, binwidth
    • geom_smooth(): method, se, level
    • geom_point(): size, shape, alpha

Regola pratica

Inizia sempre con il geom più semplice, poi aggiungi complessità.

Estetiche e Mappature

Le 6 Estetiche Principali

1. Color (bordi/linee)

aes(color = class)
  • Discrete: colori distinti per categoria
  • Continue: gradient di colore

2. Fill (riempimento aree)

aes(fill = drv)
  • Per bar, histogram, density, violin
  • Indipendente da color

3. Size (dimensione)

aes(size = cyl)
  • Bubble charts
  • Enfatizzare importanza

4. Shape (forma punti)

aes(shape = drv)
  • Max 6-7 forme distinguibili
  • Utile per accessibilità

5. Alpha (trasparenza)

aes(alpha = depth)
# oppure fisso:
geom_point(alpha = 0.3)
  • Gestire overplotting
  • Mostrare densità

6. Linetype (tipo linea)

aes(linetype = type)
  • Per linee e bordi

Mapping vs Setting: LA Distinzione Chiave

MAPPING (dentro aes())

Proprietà dipende dai dati

ggplot(mpg, aes(x = displ, y = hwy,
                color = class,    # VARIA
                size = cyl)) +    # VARIA
  geom_point()

✅ Crea scala automatica
✅ Genera legenda
✅ Usa nome variabile

Quando usare: - Vuoi che colore/size/etc. cambi con i dati - Vuoi distinguere gruppi - Hai bisogno di legenda

SETTING (fuori aes())

Proprietà fissa per tutti

ggplot(mpg, aes(x = displ, y = hwy)) +
  geom_point(color = "blue",    # FISSO
             size = 3,          # FISSO
             alpha = 0.6)       # FISSO

❌ Nessuna scala
❌ Nessuna legenda
✅ Valore diretto

Quando usare: - Vuoi migliorare leggibilità - Stile costante per tutto il layer - Non servono legende

Errore più comune

aes(color = "blue") ❌ crea variabile chiamata “blue”!
Usa geom_point(color = "blue") ✅ per colore fisso.

Combinazioni di Estetiche

Si possono combinare mapping e setting:

# Color mappato + size fisso + alpha fisso
ggplot(mpg, aes(x = displ, y = hwy, color = class)) +
  geom_point(size = 3, alpha = 0.6)

# Multiple aesthetics mappate
ggplot(mpg, aes(x = displ, y = hwy, 
                color = class,    # gruppi principali
                shape = drv)) +   # sottogruppi
  geom_point(size = 3)            # dimensione fissa

Linee guida:

  • Max 3-4 aesthetics mappate (oltre x, y)
  • Usa ridondanza intelligente: color + shape per stesso gruppo
  • Setting per migliorare leggibilità: alpha, size fissi
  • Priorità percettiva: Posizione > Size > Color > Shape

Concetti Trasversali

Color vs Fill

COLOR = bordi, linee, punti

# Punti
ggplot(mpg, aes(x = displ, y = hwy,
                color = class)) +
  geom_point()

# Linee
ggplot(economics, aes(x = date, y = unemploy)) +
  geom_line(color = "blue")

# Bordi di barre
ggplot(mpg, aes(x = class)) +
  geom_bar(color = "black")

FILL = riempimento aree

# Barre
ggplot(mpg, aes(x = class, fill = drv)) +
  geom_bar()

# Densità
ggplot(mpg, aes(x = hwy, fill = drv)) +
  geom_density(alpha = 0.5)

# Boxplot
ggplot(mpg, aes(x = class, y = hwy,
                fill = class)) +
  geom_boxplot()

Spesso insieme:

geom_bar(fill = "lightblue", color = "black")  # fill interno + color bordo

Scale Automatiche

Quando mappi un’estetica, ggplot2 crea automaticamente la scala appropriata:

Variabili Discrete:

aes(color = class)

scale_color_discrete() automatica
→ Colori distinti per categoria
→ Legenda con tutti i livelli

Variabili Continue:

aes(color = cty)

scale_color_continuous() automatica
→ Gradient blu scuro → blu chiaro
→ Legenda con barra colore

Personalizzabili:

# Palette migliori
+ scale_color_viridis_d()  # discrete
+ scale_color_viridis_c()  # continuous

# Manuale
+ scale_color_manual(
    values = c("red", "blue", "green")
  )

# Gradient custom
+ scale_color_gradient(
    low = "yellow", 
    high = "red"
  )

(Approfondimento: Giorno 2!)

Gestire Overplotting

Problema comune: troppi punti sovrapposti

Soluzioni imparate:

  1. Alpha (trasparenza)

    geom_point(alpha = 0.3)  # più punti = più scuro
  2. Jitter (rumore casuale)

    geom_jitter(width = 0.1, height = 0.1)
  3. Heatmaps 2D

    geom_bin2d()  # o geom_hex()
  4. Dimensione ridotta

    geom_point(size = 0.5, alpha = 0.2)
  5. Combinazioni

    geom_hex() + geom_density2d(color = "white")

Domande e Chiarimenti

Spazio per Domande

Temi comuni da chiarire:

  • Quando usare geom_bar() vs geom_col()?
  • Come scegliere il numero di bins in geom_histogram()?
  • Differenza tra geom_line() e geom_path()?
  • Quando mappare alpha vs quando fissarlo?
  • Come combinare color e fill efficacemente?

Domande dal gruppo:

(Spazio per discussione)

Preview Giorno 2

Cosa Vedremo Oggi

Mattina:

  1. Facets e Coordinate
    • facet_wrap() e facet_grid() - small multiples
    • Sistemi di coordinate: cartesiano, flip, polare
    • Quando usare facets vs aesthetics
  2. Scale e Trasformazioni
    • Personalizzare scale (color, size, x, y)
    • Trasformazioni (log, sqrt, reverse)
    • Limiti e breaks
    • Palette avanzate

Pomeriggio:

  1. Themes e Personalizzazione
    • Theme predefiniti
    • Customizzare ogni elemento
    • Creare il tuo theme
  2. Visualizzazioni Avanzate
    • Annotazioni e labels
    • Plot composition (patchwork)
    • Export e ottimizzazione

Risorse Utili

Documentazione:

Cheat sheets:

Dataset per pratica:

  • mpg, diamonds, economics (già usati)
  • mtcars, iris, faithful (altri built-in)
  • I tuoi dati! Prova a replicare questi concetti

Ricorda

La pratica è fondamentale! Continua a sperimentare con gli esercizi.