-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy path14-cartogramm.Rmd
139 lines (109 loc) · 4.56 KB
/
14-cartogramm.Rmd
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
# Créer des cartogrammes
Un cartogramme est une carte pour laquelle une variable continue, remplace la surface des territoires représentés. La géométrie de l'espace de la carte est déformée afin de se conformer aux informations relatives à cette variable.
Les fonctions du package `cartogramm` permettent de réaliser l'opération de déformation attendue. La sortie de ces fonctions est un *spatial dataframe* avec une nouvelle géométrie. On peut ensuite utiliser cette nouvelle géométrie pour la visualiser avec tout package de cartographie.
Dans ce chapitre nous allons utiliser les packages suivants.
```{r}
library(cartogram)
library(tmap)
library(ggplot2)
#remotes::install_github("MaelTheuliere/variousdata")
library(variousdata)
data("World")
```
## Cartogramme d'aire contigue
Définition de la couche à partir de la variable d'une table. Ici en l'occurence le taux de mortalité de la mère à la naissance.
La fonction `cartogram_cont()` permet de définir la déformation attendue.
```{r, message = F,warning = F}
mmr_cont <- cartogram_cont(sdg_indicators_sf %>%
filter(timeperiod == "2015"),
"sh_sta_mmr")
```
On peut ensuite utiliser le package que l'on souhaite pour cartographier cette couche.
- avec `tmap`
```{r}
mmr_cont %>%
tm_shape()+
tm_polygons("sh_sta_mmr",palette=viridis(5, alpha = 1, begin = 0.3, end = 1, direction = 1, option = "D"),
title="Taux de mortalité de la mère \n(pour 100 000 naissances)")+
tm_layout(main.title="Taux de mortalité de la mère \n(pour 100 000 naissances) dans le monde",
main.title.size=1.2,
bg.color = "skyblue",
legend.position=c("left","bottom"),
legend.outside = F,
main.title.position = "center",
frame = FALSE)
```
- avec `ggplot2`
```{r}
mmr_cont %>%
ggplot() +
geom_sf(aes(fill = log(sh_sta_mmr)),color="white",size=.2)+
scale_fill_viridis_c(
option = "magma",
direction = 1,
breaks = c(0, 1, 2, 3, 4, 5, 6, 7))+
guides(
colour = F,
order = 0,
fill = guide_legend(
direction = "horizontal",
keyheight = unit(2, units = "mm"),
keywidth = unit(20, units = "mm"),
order = 1,
title.position = "top",
title.hjust = 0.5,
nrow = 1,
label.position = "bottom",
label.hjust = 1
)
) +
theme_minimal()+
theme(legend.position = "bottom",
panel.background = element_rect(fill = "light blue"))+
labs(fill = "Taux de mortalité infantile (échelle logarithmique)")
```
## Cartogramme d'aire non contigue
La fonction `cartogram_ncont()` permet de définir la déformation attendue.
On va ici réaliser le cartogramme sur le log de la mortalité des mères à la naissance.
```{r, message = F,warning = F}
mmr_ncont <- cartogram_ncont(sdg_indicators_sf %>%
filter(timeperiod == "2015",continent == "Africa") %>%
mutate(log_sh_sta_mmr = log(sh_sta_mmr)),
"log_sh_sta_mmr")
```
```{r, message = F,warning = F}
tm_shape(World)+
tm_polygons()+
tm_shape(mmr_ncont, is.master = T)+
tm_polygons("log_sh_sta_mmr",palette=viridis(5, alpha = 1, begin = 0.3, end = 1, direction = 1, option = "D"),
title="Taux de mortalité de la mère \n(pour 100 000 naissances) en Afrique \néchelle logarithmique")+
tm_layout(main.title="Taux de mortalité de la mère \n en Afrique",
main.title.size=1,
bg.color = "skyblue",
legend.position=c("left","bottom"),
legend.outside = T,
main.title.position = "center",
frame = F)
```
## Cartogramme de Dorling
Le cartogramme de Dorling est une représentation spatiale qui vise à remplaer les polygones par des cercles proportionnels à une variable données respectant au maximum la position spatiale des polygones.
La fonction `cartogram_dorling()` permet de définir la géométrie attendue.
On va ici réaliser un cartogramme de dorling sur le PIB par habitant en 2015.
```{r}
gdp_dorling <- cartogram_dorling(sdg_indicators_sf %>%
filter(timeperiod == "2015",!is.na(gdp_per_cap)),"gdp_per_cap")
```
```{r}
tm_shape(World) +
tm_borders() +
tm_shape(gdp_dorling) +
tm_polygons("continent") +
tm_layout(frame = FALSE) +
tm_layout(main.title="PIB par habitant dans le monde",
main.title.size=1,
bg.color = "skyblue",
legend.position=c("left","bottom"),
legend.outside = F,
main.title.position = "center",
frame = T)
```