I. Présentation du cours
A) 👨🏫 Enseignant
- Nom : Laurent Rouvière
- Email : laurent.rouviere@univ-rennes2.fr
B) 📚 Recherche
- Domaines :
- Statistique non paramétrique
- Apprentissage statistique
C) 🎓 Enseignement
- Disciplines :
- Statistique
- Probabilités
- Niveaux :
- Université
- École d’ingénieur
- Formation continue
D) 📋 Responsabilités
- Co-responsable du Master MAS
- Responsable du parcours SDD-IA
E) 💼 Consulting
- Secteurs :
- Énergie (ERDF)
- Finance
- Marketing
F) 🔑 Prérequis
- Niveau : Avancé en R
- Bases : Statistique et programmation
G) 🎯 Objectifs
- Comprendre l'importance de la visualisation en science des données
- Visualiser des données : approches statique, dynamique et interactive
- Découvrir quelques packages de visualisation en R
- Créer des applications web
II. Documents de cours
A) 📄 Slides
- Slides disponibles ici.
B) 📚 Tutoriel
- Tutoriel : compléments de cours et exercices disponibles à l’URL https://rouviere.pages.math.cnrs.fr/TUTO_R/.
C) 🌐 Ressources
- Le net : de nombreux tutoriels.
- Livre : R pour la statistique et la science des données, PUR.
III. Pourquoi un cours de visualisation ?
A) 📊 Données et Modèles Complexes
- Données : Les données deviennent de plus en plus complexes.
- Modèles : Les modèles statistiques sont également de plus en plus complexes.
- Interprétations : Les résultats nécessitent des interprétations plus nuancées.
B) 🔍 Besoins de Visualisation
La visualisation est essentielle pour :
- Décrire les données : Facilite la compréhension des caractéristiques des données.
- Calibrer les modèles : Aide à ajuster les modèles pour une meilleure précision.
- Présenter les résultats : Permet de communiquer efficacement les résultats d'une étude.
C) ⚠️ Conséquences
- La visualisation est cruciale tout au long d’une étude statistique.
- De plus en plus de packages R sont dédiés à la visualisation, facilitant ainsi l'accès à des outils performants.
IV. Plan
A) 📊 Approches de la Visualisation
- Méthodes/statistiques : PCA, LDA, arbres, etc.
- Outils informatiques : Packages R.
B) 🛠️ Outils R Présentés
- ggplot2 : Visualisation des données ⟹ 3h.
- Cartes :
- ggplot2, sf et leaflet ⟹ 3-4h.
- Visualisation dynamique/intéractive :
- Données avec rAmCharts, Plotly et ggiraph ⟹ 1h.
- Tableaux de bord avec quarto ⟹ 1h.
- Applications web avec shiny ⟹ 3-4h.
- Compléments : Workshop shiny à venir.
C) 📈 Exemples Pratiques
-
Boxplot sur les iris :
data(iris) summary(iris) boxplot(Sepal.Length ~ Species, data=iris) -
Grammaire ggplot :
library(tidyverse) ggplot(iris) + aes(x=Species, y=Sepal.Length) + geom_boxplot() -
Carte des températures :
library(sf) dpt <- read_sf("./data/dpt") ggplot(dpt) + geom_sf(aes(fill=temp)) + scale_fill_continuous(low="yellow", high="red") + theme_void()
D) 📊 Tableaux de Bord
- Utiles pour publier des synthèses d'outils de visualisation (données, graphes, modèles simples).
- Quarto dashboard : Documentation.
- Exemple : Dashboard.
E) 🌐 Applications Web avec Shiny
- Shiny permet de construire des applications web avec R.
- Exemples :
- Overfitting en machine learning : Application.
- Stations Velib à Rennes : Application.
F) 📝 En Résumé
- Durée : 12 (+5) heures pour 3 ou 4 thèmes.
- Structure : 1 thème = quelques slides + tutoriel (compléments à lire + exercices).
- Investissement personnel : Les heures en séance ne suffisent pas pour tout faire !
V. Visualiser des données
A) 📊 Graphes conventionnels
- Visualisation : essentielle à chaque étape d'une étude statistique.
- R permet de créer de nombreux types de graphes.
- Présentation des graphes classiques suivie par ceux de ggplot2.
1) Types de graphes
- Histogramme : pour une variable continue.
- Diagramme en barres : pour une variable qualitative.
- Nuage de points : pour 2 variables continues.
- Boxplot : pour visualiser une distribution continue.
2) Exemples de graphes classiques
- Nuage de points :
plot(Sepal.Length ~ Sepal.Width, data=iris) - Histogramme :
hist(iris$Sepal.Length, col="red") - Diagramme en barres :
barplot(table(iris$Species)) - Boxplot :
boxplot(Sepal.Length ~ Species, data=iris)
B) 📈 Visualisation avec ggplot2
- ggplot2 : permet de créer des graphes de haute qualité avec une syntaxe claire.
- Basé sur une grammaire des graphiques.
1) Assembler des couches
- Un graphe est défini par :
- Les données.
- Les variables à représenter.
- Le type de représentation (nuage de points, boxplot, etc.).
2) Syntaxe de ggplot2
- Data :
ggplot(data) - Aesthetics :
aes() - Geometric :
geom_... - Statistics :
stat_... - Scales :
scale_... - Exemple :
ggplot(iris) + aes(x=Sepal.Length, y=Sepal.Width) + geom_point()
C) 🎨 Personnalisation des graphes
- Couleur et taille :
ggplot(iris) + aes(x=Sepal.Length, y=Sepal.Width) + geom_point(color="blue", size=2) - Changer la couleur avec une variable qualitative :
ggplot(iris) + aes(x=Sepal.Length, y=Sepal.Width, color=Species) + geom_point()
D) 📊 Exemples de géométries
| Geom | Description | Aesthetics |
|---|---|---|
geom_point() | Nuage de points | x, y, shape, fill |
geom_line() | Ligne (ordonnée selon x) | x, y, linetype |
geom_bar() | Diagramme en barres | x, fill, linetype, weight |
geom_histogram() | Histogramme | x, fill, linetype, weight |
E) 🗺️ Cartes et visualisation géographique
- Utilisation de cartes pour visualiser des données ou résultats de modèles.
- Introduction à des packages comme sf pour les shapefiles et leaflet pour des cartes interactives.
VI. Cartes
A) 📊 Cartes avec ggplot2
- Packages utilisés : ggplot2, sf (cartes statiques), leaflet (cartes dynamiques).
- Syntaxe de base :
- Récupération des fonds de carte :
fond <- map_data("state") - Création d'une carte :
ggplot(fond) + aes(x = long, y = lat, group = group) + geom_polygon(fill = "white", color = "black") + coord_quickmap()
- Récupération des fonds de carte :
B) 📍 Ajout de points
- Exemple pour Paris :
Paris <- tibble(long = 2.351499, lat = 48.85661) ggplot(fr) + aes(x = long, y = lat) + geom_polygon(aes(group = group), fill = "white", color = "black") + geom_point(data = Paris, color = "red") + coord_quickmap()
C) 🌍 Géolocalisation
- Utilisation du package tidygeocoder :
library(tidygeocoder) tibble(ville = c("Paris", "Lyon", "Marseille", "Rennes")) |> geocode(city = ville)
D) 🗺️ Cartes avec sf
- Package sf : Gère des objets cartographiques complexes.
- Fonds de carte au format shapefile :
- Lecture d'un shapefile :
library(sf) dpt <- read_sf("./data/dpt")
- Lecture d'un shapefile :
E) 📈 Visualisation avec ggplot
- Création d'une carte avec geom_sf :
ggplot(dpt) + geom_sf()
F) 🎨 Coloration des polygones
- Exemple de coloration :
set.seed(1234) dpt1 <- dpt |> mutate(temp = runif(96, 10, 20)) ggplot(dpt1) + geom_sf(aes(fill = temp)) + scale_fill_continuous(low = "yellow", high = "red") + theme_void()
G) 🛠️ Fonctions utiles de la classe geometry
- Fonctions :
st_point,st_multipoint: Créer des points.st_sfc: Créer une liste d'objets sf.st_geometry: Extraire ou modifier la géométrie d'un objet.st_crs: Spécifier le système de coordonnées.
H) 🗺️ Cartes interactives avec leaflet
- Création d'une carte :
library(leaflet) leaflet() |> addTiles() + setView(lng = 2.35222, lat = 48.856614, zoom = 12)
I) 🌐 Autres packages pour la cartographie
- mapsf : Pour des cartes thématiques.
- tmap : Pour des visualisations dynamiques.
- mapview : Pour visualiser des données spatiales de manière interactive.
VII. Quelques outils de visualisation dynamiques
A) 📊 Introduction aux visualisations dynamiques
- Les visualisations dynamiques permettent d'interagir avec les données.
- Elles offrent une meilleure compréhension des tendances et des relations.
B) 🌐 Outils populaires
-
Plotly
- Permet de créer des graphiques interactifs.
- Supporte divers types de graphiques : lignes, barres, nuages de points, etc.
- Intégration facile avec R via le package
plotly.
-
Shiny
- Cadre pour construire des applications web interactives.
- Permet de créer des tableaux de bord dynamiques.
- Utilise une interface réactive pour mettre à jour les visualisations en temps réel.
-
gganimate
- Extension de
ggplot2pour créer des animations. - Idéal pour visualiser des changements au fil du temps.
- Utilise des transitions pour rendre les graphiques plus engageants.
- Extension de
C) 📈 Exemples d'utilisation
1) Plotly
library(plotly)
fig <- plot_ly(data = mtcars, x = ~wt, y = ~mpg, type = 'scatter', mode = 'markers')
fig
2) Shiny
library(shiny)
ui <- fluidPage(
titlePanel("Mon application Shiny"),
sidebarLayout(
sidebarPanel(
sliderInput("num", "Choisissez un nombre:", 1, 100, 50)
),
mainPanel(
plotOutput("distPlot")
)
)
)
server <- function(input, output) {
output$distPlot <- renderPlot({
hist(rnorm(input$num))
})
}
shinyApp(ui = ui, server = server)
3) gganimate
library(gganimate)
library(ggplot2)
p <- ggplot(mtcars, aes(x = wt, y = mpg, frame = factor(cyl))) +
geom_point() +
transition_time(cyl)
animate(p)
D) 🔑 Points clés à retenir
- Les visualisations dynamiques améliorent l'interaction avec les données.
- Plotly, Shiny et gganimate sont des outils essentiels pour créer des visualisations interactives.
- La pratique avec ces outils est cruciale pour maîtriser la visualisation dynamique en R.
VIII. Applications web avec shiny
Shiny est un package R qui permet de construire des applications web avec R. Voici quelques points clés à retenir :
A) 🌐 Introduction à Shiny
- Shiny permet de créer des interfaces utilisateur interactives.
- Utilisé principalement pour des visualisations et des analyses de données.
B) 📊 Exemples d'applications
- Overfitting en machine learning :
- Lien : overfitting_app
- Stations Velib à Rennes :
- Lien : 19_velib
C) 🚀 Avantages de Shiny
- Interactivité : Permet aux utilisateurs d'interagir avec les données en temps réel.
- Facilité d'utilisation : Accessible même pour ceux qui n'ont pas de compétences avancées en développement web.
- Intégration avec R : Utilise directement les capacités de R pour l'analyse de données et la visualisation.
IX. En résumé
A) ⏳ Durée et Organisation
- 12 (+5) heures pour 3 ou 4 thèmes.
- 1 thème = quelques slides + tutoriel (compléments à lire + exercices).
- Nécessite un investissement personnel ⟹ les heures en séance ne sont pas suffisantes pour tout faire !
B) 📚 Plan du Cours
- Présentation du cours
- Visualiser des données
- Graphes conventionnels
- Visualisation avec ggplot2
- Cartes
- ggplot2
- Contours shapefile avec sf
- Cartes interactives avec leaflet
- Autres packages carto
- Quelques outils de visualisation dynamiques
- rAmCharts, plotly et ggiraph
- Graphes avec visNetwork
- Tableau de bord avec flexdashboard
C) 📊 Visualisation des Données
- La visualisation est cruciale à toutes les étapes d’une étude statistique.
- R permet de créer un très grand nombre de types de graphes.
- Présentation des graphes classiques suivie par les graphes ggplot2.
D) 📈 Graphes Classiques
- Histogramme pour une variable continue.
- Diagramme en barre pour une variable qualitative.
- Nuage de points pour 2 variables continues.
- Boxplot pour une distribution continue.
E) 🎨 Visualisation avec ggplot2
- ggplot2 utilise une grammaire des graphiques, similaire à dplyr pour manipuler les données.
- Les graphes produits sont de très bonne qualité.
- Les graphes sont construits à partir de couches :
- Spécifier les données avec
ggplot. - Indiquer les variables avec
aes. - Choisir le type de représentation avec
geom_.
- Spécifier les données avec
F) 🔍 Exemples de Graphes
- Nuage de points :
ggplot(iris) + aes(x=Sepal.Length, y=Sepal.Width) + geom_point() - Histogramme :
ggplot(iris) + aes(x=Sepal.Length) + geom_histogram(fill="red") - Diagramme en barres :
ggplot(iris) + aes(x=Species) + geom_bar(fill="blue")
G) 🗺️ Cartes
- Utilisation de ggplot2, sf pour des cartes statiques, et leaflet pour des cartes dynamiques.
- Géolocalisation avec le package tidygeocoder.
H) 📊 Outils Complémentaires
- ggpubr pour des graphes ggplot simples.
- stat_summary pour calculer des indicateurs nécessaires au graphe.
I) 🔗 Conclusion
- La visualisation est un outil puissant pour l'analyse des données.
- R et ses packages offrent une flexibilité et une richesse pour créer des représentations graphiques variées et informatives.
X. Références
A) 📚 Liens Utiles
- Initiation à la cartographie : Statnmap
- Vignettes sur le package sf : CRAN
- Tutoriel complet sur sf : R Spatial
- Chapitre sur ggplot2 : ggplot2 Book
B) 📁 Format Shapefile
- Description : Format de fichiers pour les systèmes d’information géographiques (SIG).
- Fonctionnalité : Permet de stocker la forme, la localisation et les attributs d’entités géographiques.
- Structure : Stocké sous la forme d’un ensemble de fichiers.
C) 📊 Lecture de fichiers Shapefile
library(sf)
dpt <- read_sf("./data/dpt")
dpt[1:5, 3]
- Collection de caractéristiques simples avec 5 entités et 1 champ.
- Type de géométrie : MULTIPOLYGON
- Dimensions : XY
- Système de coordonnées projeté : RGF93 v1 / Lambert -93
D) 🗺️ Visualisation avec ggplot
ggplot(dpt) + geom_sf()
E) 📍 Ajouter des Points sur le Graphe
point <- st_sfc(st_point(c(2.351462, 48.85670)),
st_point(c(4.832011, 45.75781)),
st_point(c(5.369953, 43.29617)))
st_crs(point) <- 4326
F) 🎨 Colorier des Polygones
set.seed(1234)
dpt1 <- dpt |> mutate(temp = runif(96, 10, 20))
ggplot(dpt1) + geom_sf(aes(fill = temp)) +
scale_fill_continuous(low = "yellow", high = "red") +
theme_void()
G) 🛠️ Compléments : Classe Geometry
- Fonctions Utiles :
st_pointetst_multipoint: Créer des points.st_sfc: Créer une liste d’objets sf.st_geometry: Extraire ou modifier la géométrie d’un objet.st_crs: Spécifier le système de coordonnées.st_cast: Transformer le type de géométrie.
H) 🌍 Cartes Interactives avec Leaflet
- Documentation : Leaflet
library(leaflet)
leaflet() |> addTiles()
I) 📈 Outils de Visualisation Dynamiques
- Packages R :
- rAmCharts : Graphiques standards.
- plotly : Graphiques dynamiques.
- ggiraph : Graphiques interactifs.
- flexdashboard : Tableaux de bord.
J) 🔗 Références Supplémentaires
- mapsf : Documentation
- tmap : Documentation
- Tutoriel ThinkR :