Ricerca Sociale con R

Una wiki per l'analisi dei dati con R

Strumenti Utente

Strumenti Sito


Il Laboratorio di Analisi dei Dati con R, dell'Università di Teramo su piattaforma Meet, inizia il 9 aprile 2021 - Iscrizione - email
r:ggplot2:mappe

Rappresentare i dati geografici

Importare i dati delle mappe

Utilizzeremo i pacchetti del tidyverse.

library(tidyverse)

Scaricare i dati dei poligoni - nell'esempio dal sito Istat - e decomprimerli in una cartella (in questo caso, sotto cartella dati della cartella di lavoro).

# pacchetto per la gestione dei dati spaziali
install.packages("sf")
library(sf)
 
#leggere shapefiles (DATI ISTAT)
reg2019 <- st_read("dati/Reg01012019_g")

Va indicata l'intera cartella (Reg01012019_g).

Mappe tematiche

Poniamo che si abbia un dataframe con valori regionali da rappresentare attraverso la mappa, organizzato in modo che ci sia una variabile comune con il dataframe dei poligoni (COD_REG = codice regione), ad esempio:

head(df)
# A tibble: 6 x 2
  COD_REG totale_casi
    <dbl>       <dbl>
1      13       12543
2      17        2788
3      18        6092
4      15       69613
5       8       62914
6       6       12264

Uniamo i due dataframe con right_join (vedi dplyr_join):

right_join(reg2019, df, by = "COD_REG") %>% 
  head()
Simple feature collection with 6 features and 6 fields
geometry type:  MULTIPOLYGON
dimension:      XY
bbox:           xmin: 313279.3 ymin: 4879338 xmax: 819674.3 ymax: 5220292
projected CRS:  WGS 84 / UTM zone 32N
  COD_RIP COD_REG             DEN_REG Shape_Leng  Shape_Area totale_casi                       geometry
1       1       1            Piemonte  1236787.2 25393891060       81409 MULTIPOLYGON (((457749.5 51...
2       1       2       Valle d'Aosta   310968.1  3258837561        3720 MULTIPOLYGON (((390652.6 50...
3       1       3           Lombardia  1410222.9 23862316681      224191 MULTIPOLYGON (((595652.4 51...
4       2       4 Trentino-Alto Adige   800893.7 13607548167       10097 MULTIPOLYGON (((743267.7 52...
5       2       4 Trentino-Alto Adige   800893.7 13607548167        9872 MULTIPOLYGON (((743267.7 52...
6       2       5              Veneto  1054697.6 18343532672       65531 MULTIPOLYGON (((768124 5175...

Ora procediamo alla costruzione della mappa con ggplot2 e geom_sf():

right_join(reg2019, df, by = "COD_REG") %>% 
  ggplot(aes(fill = totale_casi)) +
  geom_sf()
&nolink |

Miglioriamo la visualizzazione, ad esempio:

right_join(reg2019, df, by = "COD_REG") %>% 
  ggplot(aes(fill = totale_casi)) +
  geom_sf(col = "black"   # bordo dei poligoni
  ) +
  # tema vuoto
  theme_void() +
  # scala del colori
  scale_fill_distiller(direction = 1) +
  # eliminare il titolo della legenda
  theme(legend.title=element_blank())
&nolink |

Aggiungere etichette alla mappa

Per posizionare le etichette, usiamo il pacchetto ggsflabel, che contiene funzioni per inserire etichette in vari formati:

# install.packages("devtools")
devtools::install_github("yutannihilation/ggsflabel")
 
library(ggsflabel)
right_join(reg2019, df, by = "COD_REG") %>% 
  ggplot(aes(fill = totale_casi)) +
  geom_sf(col = "black") +
  theme_void() +
  scale_fill_distiller(direction = 1) +
  theme(legend.title=element_blank()) +
  # etichette
  geom_sf_text(aes(label = totale_casi),
               size = 3)
&nolink |

Vedi:

r/ggplot2/mappe.txt · Ultima modifica: 27/09/2021 15:33 da admin