forked from MTES-MCT/parcours_r_socle_introduction
-
Notifications
You must be signed in to change notification settings - Fork 0
/
08-graph.Rmd
137 lines (97 loc) · 5.23 KB
/
08-graph.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
# Premiers graphiques
## Package ggplot2
Pour réaliser des graphiques, nous choisissons de nous servir du package `ggplot2`, qui permet de faire de meilleures réalisations que les fonctions basiques. Il est intégré dans le méta-package `tidyverse` donc il n'est pas utile de le re-charger dans notre session. Mais si vous devez le faire, le code est le suivant :
```{r graph_1, eval=FALSE}
install.packages("ggplot2")
library("ggplot2")
require(dplyr)
```
La fonction `ggplot()` fonctionne d'une manière particulière. La structure ressemble à ceci :
```{r graph_2, eval=FALSE}
ggplot(TableEnEntree, aes(VariablesATracer)) + geom_FonctionAChoisir()
```
Pour découvrir les nombreuses possibilités de `ggplot2`, vous pouvez vous référer au [Module 5 : « Datavisualisation : produire des graphiques, des cartes et des tableaux »](https://mtes-mct.github.io/parcours-r/m5/index.html) ou consulter les sites suivants :
- [Version anglaise](http://www.sthda.com/english/wiki/ggplot2-barplots-quick-start-guide-r-software-and-data-visualization)
- [Version française](http://www.sthda.com/french/wiki/ggplot2)
La fonction `aes()` (pour "aesthetics"), utilisée dans l'instrution `ggplot()` permet de définir les données à tracer. On y indique les dimensions que l'on veut représenter sur le graphique. On peut représenter jusqu'à 5 dimensions sur un même graphique, mais attention à la lisibilité !
- 2 variables quanti : x en fonction de y $\rightarrow$ 2 dimensions (nuage de points)
- taille du point $\rightarrow$ 3e dimension (quanti)
- couleur des points $\rightarrow$ 4e dimension (quali)
- juxtaposer des graphiques en fonction d'une variable quali $\rightarrow$ 5e dimension !
## Histogramme
Si on désire un histogramme de log_SUPERF, on fera appel à la fonction `geom_histogram()`. Ce graphique ne présente qu'une seule dimension (la variable quanti dont on veut visualiser la distribution)
```{r graph_3, message=FALSE, warning=FALSE}
rm(list = ls())
base <- read.csv(file = "data/Base_synth_territoires.csv",
header = T, sep=";", dec=",") %>%
select(1:24) %>%
mutate(log_SUPERF = log (SUPERF),
REG = as.factor (REG),
densite = P14_POP / SUPERF,
tx_natal = 1000 * NAISD15 / P14_POP,
tx_mort = DECESD15 / P14_POP)
ggplot(base, aes(x = log_SUPERF)) + geom_histogram()
```
## Nuages de points
Selon les graphiques que l'on veut tracer, on peut renseigner plusieurs variables. Dans le cas d'un nuage de points, par exemple, on croise 2 variables quantitatives :
```{r graph_4, message=FALSE, warning=FALSE, cache=TRUE}
ggplot(base, aes(x = P14_EMPLT, y = MED13)) + geom_point(colour = "blue")
ggplot(base, aes(x = log (P14_EMPLT), y = log(MED13))) + geom_point(colour = "blue")
```
## Matrice de nuages
Pour explorer son jeu de données, on peut réaliser un nuage de points pour plusieurs croisements de variables possibles. Ici, en conservant quelques variables quantitatives, on peut réaliser un ensemble de graphiques. Cette "matrice" de nuages fonctionne avec le package `GGally`.
```{r ggpairs, message=FALSE, warning=FALSE, cache=TRUE}
# install.packages("GGally")
library("GGally")
num <- select(base, P14_LOGVAC:PIMP13) %>% sample_n(10000) %>% log()
ggpairs(num) ## fonction ggpairs() de GGally
```
## Bonus : faire un graphique "dynamique"
Une fois qu'on a généré un graphique avec ggplot, on peut le passer dans la fonction `ggplotly()` (package `plotly`) qui permet de le rendre dynamique.
```{r ggplotly,message=FALSE,warning=FALSE}
library(plotly)
g <- ggplot(data = base, aes(x = REG, fill = REG)) +
geom_bar()
ggplotly(g)
```
## Exercices : créer des graphiques
À l'aide de l'aide mémoire `ggplot2` :
- Réaliser un histogramme de la population communale
- Transformer les données avec la fonction log pour y voir plus clair
- Faire un barplot du nombre de communes par type ZAU
- Utiliser le paramètre fill de la fonction `aes()` pour améliorer le graphique
- Réaliser un graphique (nuage de points) croisant la densité de population et le taux de mortalité
- Ajouter une dimension supplémentaire avec la couleur des points (paramètre color de `aes()`)
```{r graph_5}
ggplot(data = base, aes(x = P14_POP)) +
geom_histogram()
```
Ce n'est pas très informatif, mais on peut faire une transformation log pour y voir plus clair !
```{r graph_6}
ggplot(data = base, aes(x = log(P14_POP))) +
geom_histogram()
```
Faites maintenant un barplot (qui n'est pas un histogramme !!!!) du nombre de communes par type ZAU.
```{r graph_7}
ggplot(data = base, aes(x = REG)) +
geom_bar()
```
On va essayer d'y voir plus clair avec le paramètre `fill`
```{r graph_8}
ggplot(data = base, aes(x = REG, fill = REG)) +
geom_bar()
```
```{r graph_9}
ggplot(data = base, aes(x = log(P14_POP), y = log(P14_LOGVAC))) +
geom_point()
```
```{r graph_10}
ggplot(data = base, aes(x = densite, y = tx_mort, color = REG)) +
geom_point()
```
Là encore il faudrait faire une transformation logarithmique, mais tout ça est abordé dans le module 3 !
**Note** : avec les fonctions de base, on peut obtenir de nombreux graphiques avec très peu de code, mais moins jolis :
```{r graph_11}
plot(iris)
```
Des possibilités infinies à approfondir dans [les modules 3 et 5](https://mtes-mct.github.io/parcours-r/) !!