[Leaflet](http://leafletjs.com/) est une bibliothèque en JavaScript permet de créer des cartes géographiques interactives avec différents langages de programmation dont R. On peut retrouver une introduction à Leaflet pour R sur le site de RStudio: [Leaflet for R](https://rstudio.github.io/leaflet/).
- Tuiles de cartes ([OpenStreetMap](http://openstreetmap.org/) et autres)
- Marqueurs
- Polygones
- Lignes
- Bulles d'information
- Toute autre information représentée dans le format [GeoJSON](http://leafletjs.com/examples/geojson/)
Cette bibliothèque s'utilise aussi dans le cadre des documents [R Markdown](http://rmarkdown.rstudio.com/) (tel que ce document que vous consultez en ce moment) et des applications web [Shiny](http://shiny.rstudio.com/gallery/). Elle permet d'utiliser les formats de données de la bibliothèque [`sp`](https://cran.r-project.org/web/packages/sp/index.html) ou des data.frmee avec deux colonnes contenant la longitude et la latitude.
## Installation
Pour installer cette bibliothèque dans R, utiliser la commande suivante:
Une carte peut être composée de plusieurs éléments:
- Le fond de la carte est composé de tuiles
- Les différentes régions géographiques peuvent être représentées par des polygones et des lignes
- Les éléments de données peuvent être représentés par des marqueurs
- On peut y ajouter divers autres éléments informatifs ou décoratifs
## Acquisition des données
Les données géographiques vectorielles (polygones, lignes, points) sont souvent représntées sous forme de fichiers KML, geoJSON ou ESRI Shapefiles. Les tuiles de données ou raster sont souvent au format geoTIFF.
L'objet data de la vignette peut accueillir différentes structures de données, mais il faut au préalablement les créer à partir des données sources
Dans cet atelier, nous cherchons à représenter la couverture WiFi du réseau [ZAP Québec](http://www.zapquebec.org/) à l'aide de la localisation des différents points d'accès contenus dans le fichier "WIFI.KML" téléchargé sur[le portail Données Québec](https://www.donneesquebec.ca/recherche/fr/dataset/vque_29). Ce fichier est partagé sous la licence [Creative Commons - Attribution 4.0](https://www.donneesquebec.ca/fr/licence/#cc-by).
## KML
Le format de fichiers KML est un standard ouvert [développé par Google](https://developers.google.com/kml/documentation/) pour l'application Google Earth. C'est un fichier XML avec des caractéristiques particulières.
Cette classe est un type de données complexer qui inclut entre autres un data.frame `data` contenant les données extraites du fichier KML. La structure complete de notre exemple se rpésente comme suit.
On associe à la propriété data les données que nous avons importé. On utilise la fonction `addTiles` pour ajouter des tuiles de fond et `addMarker` pour ajouter des marqueurs basés sur les coordonnées géographiques. Enfin, on utilise l'argument `popup` pour inclure une description qui sera affichée en cliquant sur un marqueur. Les données que nous utilisons incluent déjà une description en HTML. L'argument `group` sert a`attribuer iun idnetifiant pour chaque élément composant la carte. Il n'est pas affiché sur la carte sauf si on le demande explicitement, dans un menu par exemple.
On importe les données des limites des arrondissements à partir du fichier "ARROND.KML" téléchargé sur[le portail Données Québec](https://www.donneesquebec.ca/recherche/fr/dataset/vque_2). Ce fichier est partagé sous la licence [Creative Commons - Attribution 4.0](https://www.donneesquebec.ca/fr/licence/#cc-by).
Il est aussi possible d'ajouter plusieurs éléments à la carte pour en augmenter la facilité d'utilisation. Ici, on ajoute une légende ainsi qu'une boîte de contrôle qui permet de gérer l'affichage des différents éléments.
```{r}
l1 %>%
addPolygons(data=ARROND, color = ~palette_arrondissement(NOM), group="Arrondissements") %>%
addLegend("bottomright", pal = palette_arrondissement, values = ARROND$NOM,
[Plotly](https://plot.ly/) est une bliblothèque de graphiques interactifs en JavaScript. Tout comme Leaflet, on peut l'utiliser via des interfaces dans plusieurs langages de programmation, dont R. L'interface de programmation est documentée [sur ce site](https://plot.ly/r/).
Plotly permet de créer plusieurs types de graphiques (statistiques, scientifiques, cartes, 3d) et permet aussi de convertir des graphiques créés à partir de `ggplot2`.
Nous utiliserons les données suivantes: [Enquête sur les dépenses des ménages (EDM), dépenses des ménages, selon le mode d'occupation du logement](http://ouvert.canada.ca/data/fr/dataset/ffd02f84-1b13-479f-83a9-35f6d17296c7) provenant du tableau CANSIM 203-0024 de Statistiques Canada. Cette source contient de l'information visée par la [Licence du gouvernement ouvert – Canada](http://ouvert.canada.ca/fr/licence-du-gouvernement-ouvert-canada).
Le jeu de données contient les variables suivantes:
- Date_Ref: La date de référence (année)
- GEO: Canada, Province/Territoire
- STAT: Le nom de la statistique
- TENURE: Mode d’occupation du logement
- SUMMARY: Certaines dépenses des ménages (catégorie)
- Vecteur: Un identifiant interne à Statistique Canada
- Coordonnée: Un identifiant interne à Statistique Canada
- Valeur: Le montant de la dépense
La documentation complète se trouve dans le [Guide de l’utilisateur, Enquête sur les dépenses des ménages, 2014](http://www.statcan.gc.ca/pub/62f0026m/2016001/chap4-fra.htm)
La fonction `plot_ly()`permet de créer tous les types de graphiques disponibles dans plotly. Il s'agit d'une syntaxe unifiée qui est une approche différente des autres approches de visualisation de données avec R. Pour ajouter des éléments à un graphique existant, on utilise la fonction `add_trace()`. Pour définir les paramètres généraux d'affichage, on utilise la fonction `layout()` qui permet entre autres de définir l'orientation du graphique, les axes, les marges et l'orientation du texte.
On crée un [graphique à barres groupées](https://plot.ly/r/bar-charts/#grouped-bar-chart), qui permetta de comparer la dépense pour le même sommaire par mode d'occupation du logement.
[ggplot2](http://ggplot2.org/) est une bibliothèque développée spécifiquement pour R qui permet de créer des graphiques de qualité professionnelle en utilisant une syntaxe décrivant la "grammaire des graphiques" de Leland Wilkinson: [The Grammar of Graphics](https://www.springer.com/us/book/9780387245447).
ggplot2 est complexe et demande une courbe d'apprentissage par rapport à d'autres outils de visualisation. Par contre, il est possible de construire des graphiques exactement comme on les souhaite avec beaucoup de travail et de patience. Il est aussi possible de construire des thèmes élaborés pouvant être réutilisés dans des publications ou en entreprise. Le meilleur moyen d'apprendre ggplot2 est de consulter la [documentation en ligne](http://docs.ggplot2.org/current/) qui inclut de nombreux exemples.
## Installation
On installe ggplot2 avec cette commande:
```{r, echo=TRUE, eval=FALSE}
install.packages("ggplot2")
```
On importe ggplot2 avec cette commande:
```{r}
library("ggplot2")
```
## Vocabulaire et fonctionnement
Un graphique comprend plusieurs types d'éléments:
- Geoms: Objets géométriques qui définissent le type de graphique
- Statistics: Permettent une transformation des données
- Scales: Permettent de changer l'échelle de l'affichage, que ce soit au niveau des dimensions ou des couleurs
- Coordinate systems: Change la correspondance entre les coordonnées pour un affichage à l'écran
- Faceting: Affiche différentes portions de données dans différents panneaux.
- Position adjustments: Permettent de gérer les superpositions ou d'ajouter du flou dans les données
- Annotation: Ajout d'annotations à un graphique
- Fortify: Utiliser des données qui ne sont pas sous la forme de tables
- Themes: Élements qui définissent un thème d'affichage, indépendamment du type de graphique
- Aesthetics: Permet d'associer les données à des caractéristiques du graphique: les axes, les couleurs, les épaisseurs de traits, ...
- Other: Autres outils
## Exemple
Pour cet exemple, on utilise le jeu de données [Effectif de la fonction publique fédérale par ministère et région](http://open.canada.ca/data/en/dataset/933f8f6e-daee-4368-a7dc-4eadc8b5ecfa) provanant de Secrétariat du Conseil du Trésor du Canada. Cette source contient de l'information visée par la [Licence du gouvernement ouvert – Canada](http://ouvert.canada.ca/fr/licence-du-gouvernement-ouvert-canada).
Nous définissons la structure de bases pour créer notre graphiques. Nous identifions les données qui seront utilisées ainsi que les "esthétiques" du graphique.
Nous reproduisons ici la [pyramide des âges animée](https://www.donneesquebec.ca/recherche/fr/dataset/pyramide-des-ages-animee) de l'Institut de la statistique du Québec. Les données téléchargées se trouvent dans le fichier [`tbl_bord_0001_35.xml`](http://www.bdso.gouv.qc.ca/docs-ken/flex/xml/tbl_bord_0001_35.xml).