Comment réaliser une carte avec des données libres R ?

Cet article a été rédigé avec beaucoup de gentilesse  🙏 par Arnaud Milet et Emmanuelle Sourisseau, du bureau d’étude d-sidd
(je vous en dis plus à la fin de l’article !).

Table des matières

Voici quelques lignes de code pour vous accompagner à réaliser simplement une première carte à partir de données disponibles sur une plateforme de données.

J’ai choisi de ne traiter ici que des données vectorielles (pas d’images ou raster). Toutes les données sont disponibles sur le portail open data de Montpellier Méditerranée Métropole (MMM: https://data.montpellier3m.fr/)

Les librairies

Pour cette brève présentation, vous aurez besoin des librariries {sf} et {tmap}, sans oublier l’incontournable {tidyverse}.

Il faut distinguer la manipulation des données de la visualisation des données.

Le package {sf} (Spatial Feature) est dédié à la manipulation, la transformation et l’analyse de données spatiales. A la manière du Tidyverse, il combine les fonctionnalités de {sp}{rgeos} et {rgdal} dans un package.

Le package {tmap} (thematic map) est quant à lui dédié à la visualisation des données spatiales. Cette fois-ci, à la manière du package {ggplot2}.

.

library(tidyverse)
library(sf)
library(tmap) 

Les données

Les données brutes peuvent avoir de multiples formats:

  • shapefile
  • geojson
  • csv
  • DBI (PostGIS)
  • gpkg

Import des données

Nous utiliserons la fonction st_read() du package {sf}. Les données des exemples sont disponibles sur la plateforme open data de MMM. Vous pouvez bien sûr remplacer le chemin (l’url) par le chemin de données sur votre machine!

OSM_MMM_BNAC <- read_sf("https://data.montpellier3m.fr/sites/default/files/ressources/OSM_MMM_BNAC.geojson")
 

Class des données spatiales

class(OSM_MMM_BNAC)
## [1] "sf"         "tbl_df"     "tbl"        "data.frame" 

Les données spatiales dans R sont de classe sf. Mais on constate aussi qu’elles sont de classes tbl_dftbl et data.frame. Des classes d’objets que l’on connait bien et que nous manipulons au quotidien 🙂

Manipuler des données spatiales

Les fonctions du tidyverse permettent de manipuler les tables.

code_commune_select <- "34172" #Montpellier

OSM_MMM_BNAC %>% 
  filter(code_com_g==code_commune_select,ame_d=="VOIE VERTE")  
## Simple feature collection with 113 features and 30 fields
## Geometry type: LINESTRING
## Dimension:     XY
## Bounding box:  xmin: 3.818371 ymin: 43.58251 xmax: 3.930179 ymax: 43.64231
## Geodetic CRS:  WGS 84
## # A tibble: 113 × 31
##    id_local  resea…¹ nom_loc id_osm num_iti code_…² ame_d regim…³ sens_d large…⁴
##  * <chr>     <chr>   <chr>   <chr>  <chr>   <chr>   <chr> <chr>   <chr>  <chr>  
##  1 id_loc33… ""      ""      way/3… ""      34172   VOIE… ""      BIDIR… ""     
##  2 id_loc10… ""      ""      way/1… ""      34172   VOIE… ""      BIDIR… ""     
##  3 id_loc69… ""      ""      way/6… ""      34172   VOIE… ""      BIDIR… ""     
##  4 id_loc37… ""      ""      way/3… ""      34172   VOIE… "AIRE … BIDIR… ""     
##  5 id_loc55… ""      ""      way/5… ""      34172   VOIE… "AIRE … BIDIR… ""     
##  6 id_loc55… ""      ""      way/5… ""      34172   VOIE… "AIRE … BIDIR… ""     
##  7 id_loc24… ""      ""      way/2… ""      34172   VOIE… "AIRE … BIDIR… ""     
##  8 id_loc50… ""      ""      way/5… ""      34172   VOIE… ""      BIDIR… ""     
##  9 id_loc46… ""      ""      way/4… ""      34172   VOIE… ""      BIDIR… ""     
## 10 id_loc25… ""      ""      way/2… ""      34172   VOIE… ""      BIDIR… ""     
## # … with 103 more rows, 21 more variables: local_d <chr>, statut_d <chr>,
## #   revet_d <chr>, code_com_g <chr>, ame_g <chr>, regime_g <chr>, sens_g <chr>,
## #   largeur_g <chr>, local_g <chr>, statut_g <chr>, revet_g <chr>,
## #   access_ame <chr>, date_maj <date>, trafic_vit <chr>, lumiere <chr>,
## #   d_service <chr>, comm <chr>, source <chr>, project_c <chr>, ref_geo <chr>,
## #   geometry <LINESTRING [°]>, and abbreviated variable names ¹​reseau_loc,
## #   ²​code_com_d, ³​regime_d, ⁴​largeur_d 

On constate qu’il y a systématiquement une colonne nommée geometry dans nos tables. Cette colonne geometry contient les coordonnées géographiques des individus (lignes). Pour faire simple, elles peuvent être :

  • Un point (POINT) ou plusieurs points (MULTIPOINT)
  • Une ligne (LINESTRING) ou plusieurs points (MULTILINESTRING)
  • Un polygone (POLYGON) ou plusieurs points (MULTIPOLYGON)

Regrouper ou fusionner les geométries

Il suffit d’utiliser la fonction summarise() du package dplyr.

OSM_MMM_BNAC %>% 
  filter(code_com_g==code_commune_select,ame_d=="VOIE VERTE") %>% 
  summarise()
## Simple feature collection with 1 feature and 0 fields
## Geometry type: MULTILINESTRING
## Dimension:     XY
## Bounding box:  xmin: 3.818371 ymin: 43.58251 xmax: 3.930179 ymax: 43.64231
## Geodetic CRS:  WGS 84
## # A tibble: 1 × 1
##                                                                         geometry
##                                                            <MULTILINESTRING [°]>
## 1 ((3.842989 43.64178, 3.841227 43.64231, 3.841114 43.64231, 3.840252 43.64189,… 

Si on souhaite traiter la table comme une table classique (regrouper sur des caractéristiques), il suffit d’utiliser la fonction as_tibble du package dplyr.

OSM_MMM_BNAC %>% 
  as_tibble() %>% 
  group_by(ame_d) %>% 
  summarise(nb=n())
## # A tibble: 8 × 2
##   ame_d                                            nb
##   <chr>                                         <int>
## 1 AMENAGEMENT MIXTE PIETON VELO HORS VOIE VERTE   941
## 2 AUCUN                                            52
## 3 AUTRE                                           177
## 4 BANDE CYCLABLE                                  315
## 5 COULOIR BUS+VELO                                119
## 6 PISTE CYCLABLE                                 1174
## 7 RAMPE                                             5
## 8 VOIE VERTE                                      241 

On peut extraire des informations des géométries:

  • La longueur pour les lignes via la fonction st_length()du package {sf}
  • La surface pour les polygones via la fonction st_area()du package {sf}
OSM_MMM_BNAC %>% 
  mutate(longueur=st_length(geometry)) %>% 
  as_tibble() %>% 
  group_by(ame_d) %>% 
  summarise(longueur=sum(longueur)) 
## # A tibble: 8 × 2
##   ame_d                                         longueur
##   <chr>                                              [m]
## 1 AMENAGEMENT MIXTE PIETON VELO HORS VOIE VERTE  87604. 
## 2 AUCUN                                           8914. 
## 3 AUTRE                                          23746. 
## 4 BANDE CYCLABLE                                 37544. 
## 5 COULOIR BUS+VELO                               19027. 
## 6 PISTE CYCLABLE                                242654. 
## 7 RAMPE                                             24.9
## 8 VOIE VERTE                                     52839. 

Visualiser les données

Au fil du temps, j’ai choisi le package {tmap} car il répond parfaitement à mon besoin de faire des cartes rapidement et plutôt jolies. Il a la même logique que ggplot2 (qui permet aussi de faire des cartes), couvre un large spectre de types de données spatiales et, c’est peut-être pour moi l’essentiel, me permet de réaliser avec le même code des cartes interactives ou statiques.

Une première carte

Pour cette première carte, nous allons afficher l’ensemble des aménagements cyclables de MMM. Il s’agit donc de lignes. On initialise toujours une carte dans un premier temps avec la fonction tm_shape() (un peut comme ggplot) puis on appelle la fonction appropriée aux géométries. Ici on appelle tm_lines().

carte1 <- tm_shape(OSM_MMM_BNAC)+
  tm_lines(col="#246D5F")

carte1 
Obtention d'une première carte

En fonction du type de géométries, on choisira (pour faire simple) la fonction adaptée:

  • tm_dots()tm_bubbles()tm_symbols()tm_markers()les points
  • tm_lines() pour les lignes
  • tm_borders()tm_fill()tm_polygons() pour les polygones

Ajouter un titre

carte1 +
  tm_layout(title= 'Aménagements cyclables de Montpellier Méditerranée Métropole') 
Ajout d'un titre sur la carte

Ajouter une flêche nord

Les cartographes aiment qu’on leur rappelle le nord. Pas de problèmes avec la fonction tm_compass:

carte1 +
  tm_compass() 
Ajout d'une flèche nord sur la carte

Ajouter la source

Afficher la source des données fait partie des bonnes pratiques aussi. Là encore, on assure le coup avec tm_credits() 🙂

carte1 +
  tm_credits("Source: Montpellier Mediterranée Métropole") 
Ajout de la sources des données sur la carte

Superposer des couches

Vous pourrez superposer plusieurs cartes sans problème. Attention, il faudra vous assurer au préalable qu’elles aient la même projection avec st_crs().

# Contours des communes de Montpellier Méditerranée Métropole 
# https://data.montpellier3m.fr/dataset/contours-des-communes-de-montpellier-mediterranee-metropole
Contours_communes_MMM  <- read_sf("https://data.montpellier3m.fr/sites/default/files/ressources/MMM_MMM_Limites.geojson")

# Contours de Montpellier Méditerranée Métropole 
# https://data.montpellier3m.fr/dataset/contours-de-montpellier-mediterranee-metropole

Contours_MMM <- read_sf("https://data.montpellier3m.fr/sites/default/files/ressources/MMM_MMM_Contours.geojson")

st_crs(OSM_MMM_BNAC)==st_crs(Contours_communes_MMM)
## [1] TRUE 

Si elles n’ont pas la même projection, vous pourres toujours utiliser st_transform().

carte2 <- tm_shape(Contours_communes_MMM)+
  tm_polygons(col = "grey",border.col = "white")+
  tm_shape(Contours_MMM)+
  tm_borders(col = "#666666",lwd=3)

carte2+
  carte1+
  tm_layout(main.title ='Aménagements cyclables de Montpellier Méditerranée Métropole',
            main.title.size=1,
            inner.margins=0.1)+
  tm_credits("Source: Montpellier Mediterranée Métropole",position = c(0,0))+
  tm_compass() 
Superposition des cartes du contour des communes, et du contour de la Métropole

Carte thématique

En remplacant, le paramètre col qui jusque là contenait une valeur hexadécimale correspondant à un splendide vert, vous associerez alors une couleur à une modalité. Comme ici, où la variable ame_d de la table OSM_MMM_BNAC qualifie chaque type d’aménagement cyclable:

  • “AUTRE”
  • “AMENAGEMENT MIXTE PIETON VELO HORS VOIE VERTE”
  • “PISTE CYCLABLE”
  • “VOIE VERTE”
  • “BANDE CYCLABLE”
  • “AUCUN”
  • “COULOIR BUS+VELO”
  • “RAMPE”
carte3 <- tm_shape(OSM_MMM_BNAC)+
  tm_lines(col="ame_d") 

carte2+
  carte3+
  tm_layout(title ='Aménagements cyclables de Montpellier Méditerranée Métropole')+
  tm_credits("Source: Montpellier Mediterranée Métropole",position = c(0,0))+
  tm_compass() 
Préciser les types d'aménagements cyclables en utilisant des couleurs différentes

La même carte avec une petite mise en forme…

carte3 <- tm_shape(OSM_MMM_BNAC %>% 
                     mutate(ame_d=str_trunc(ame_d,15,side="right",ellipsis="..."))
                     )+
  tm_lines(col="ame_d",title.col = "Type\nd'aménagement",
           palette="viridis") 

carte2+
  carte3+
  tm_layout(main.title ='Aménagements cyclables de Montpellier Méditerranée Métropole',
            main.title.size=1,
            inner.margins=0.1,
            legend.outside = T,
            legend.text.size=0.4)+
  tm_credits("Source: Montpellier Mediterranée Métropole",position = c(0,0))+
  tm_compass() 
n utilisant une palette de couleur viridis

Les facettes

Comme sur ggplot2, on a la possibilité de réaliser des facettes. C’est parfois utile:

carte2+
  carte1+
  tm_layout(title= 'Aménagements cyclables de Montpellier Méditerranée Métropole',)+
  tm_credits("Source: Montpellier Mediterranée Métropole",position = c(0,0))+
  tm_compass()+
  tm_facets("ame_d",free.coords = F)
 
Visualisation des différents types d'aménagements sur des cartes séparées.

Interactivité

leaflet est une librairie javascript qui permet de réaliser des cartes interactives: https://leafletjs.com/

Cette librairie est à l’origine du package {leaflet} qui permet de créer des cartes interactives: https://rstudio.github.io/leaflet/

Vous n’aurez pas besoin de maîtriser ce package pour faire vos premières cartes interactives. Il vous suffira d’appliquer la fonction tmap_leaflet() à une carte tmap créée pour la rendre interactive (à la manière de ggplotly() pour un graphique ggplot).

tmap_leaflet(carte3)
 

Cliquez sur l’image pour ouvrir la carte dynamique.

Transformer un dataframe avec des variables latitude et longitude en sf

Il nous arrive parfois de devoir convertir un data frame en sf. C’est en particulier le cas quand on reçoit un fichier avec des coordonnées géographiques (longitude,latitude).

MMM_MMM_GeolocCompteurs <- read_csv("https://data.montpellier3m.fr/sites/default/files/ressources/MMM_MMM_GeolocCompteurs.csv")

MMM_MMM_GeolocCompteurs
## # A tibble: 46 × 6
##    `Nom du com`                    `N° Série`  N° Sér_…¹ Latit…² Longi…³ OSM_L…⁴
##    <chr>                           <chr>       <chr>       <dbl>   <dbl>   <dbl>
##  1 Compteur Vélo Tanneurs          XTH19101158 XTH19101…    43.6    3.87  1.89e8
##  2 Compteur Piéton/Vélo Berracasa  X2H19070220 X2H19070…    43.6    3.90  1.21e8
##  3 Compteur Vélo Lodève Celleneuve Y2H20042633 X2H20042…    43.6    3.83  7.34e8
##  4 Compteur Vélo Lavérune          X2H20042632 X2H20042…    43.6    3.81  9.77e7
##  5 Compteur Vélo Vieille poste     Y2H20063161 X2H20063…    43.6    3.91  6.77e8
##  6 Compteur Vélo Delmas 2          Y2H20063164 X2H20063…    43.6    3.90  1.06e8
##  7 Compteur Vélo Delmas 1          Y2H20063163 X2H20063…    43.6    3.90  1.06e8
##  8 Compteur Vélo Gerhardt          Y2H20063162 X2H20063…    43.6    3.87  2.32e7
##  9 Compteur Vélo Lattes 2          Y2H20042634 X2H20042…    43.6    3.93  2.59e7
## 10 Compteur Vélo Lattes 1          Y2H20042635 X2H20042…    43.6    3.93  1.37e8
## # … with 36 more rows, and abbreviated variable names ¹​`N° Sér_1`, ²​Latitude,
## #   ³​Longitude, ⁴​OSM_Line_i 

Il vous suffira d’utiliser la fonction st_as_sf() pour transformer votre table en objet spatial (sf) dans laquelle vous preciser les colonnes contenant les longitudes et latitudes.

MMM_MMM_GeolocCompteurs_sf <- MMM_MMM_GeolocCompteurs %>% 
  st_as_sf(coords = c("Longitude","Latitude")) 

Une fois transformée, on peut bien sûr créer une nouvelle carte:

carte_compteur <- tm_shape(MMM_MMM_GeolocCompteurs_sf)+
  tm_dots(col="red",size = 0.1)
  

carte_compteur_finale <- carte2+
  carte3+
  carte_compteur+
  tm_layout(main.title ='Aménagements cyclables de Montpellier Méditerranée Métropole',
            main.title.size=1,
            inner.margins=0.1,
            legend.outside = T,
            legend.text.size=0.4)+
  tm_credits("Source: Montpellier Mediterranée Métropole",position = c(0,0))+
  tm_compass()+
  tm_add_legend('symbol', 
                col = "red",
                size = 0.1,
                labels = "Compteurs") 

Et même apporter un peu d’interactions !

tmap_leaflet(carte_compteur_finale) 

Cliquez sur l’image pour ouvrir la carte dynamique.

Alors, on se met en selle 🚴 ?

D-SIDD est un bureau d’études spécialisé dans la valorisation des données. D-SIDD apporte aux décideurs des outils simples leur permettant de comprendre et de s’approprier les problématiques abordées.

Explorer les territoires: Explorer les territoires à travers les données pour s’approprier les problématiques, se délester des à-priori et identifier des territoires de comparaison.

Mesurer le potentiel: Traiter et valoriser les données, mesurer l’impact et la faisabilité d’un projet pour calibrer une offre au plus proche des besoins identifiés.

Vulgariser: Synthétiser les résultats à travers des supports de datavisualisation interactifs ou statiques facilitant le partage des résultats.

Former: Transmettre un savoir-faire pour vous permettre de vous approprier vos données à travers les ressources libres disponibles (RStudio notamment).

Arnaud : Un peu statisticien mais aussi passionné par le développement territorial et par l’émergence de projets alternatifs, j’ai créé D-SIDD en 2016. De la collecte à l’analyse et à la vulgarisation des données, je puise dans toutes les ressources disponibles pour apporter un appui décisif et détaillé aux décideurs. R est bien sûr ma ressource préférée 😊 D-SIDD est hébergée dans la coopérative d’activité et d’emploi Crealead à Montpellier depuis le début. C’est pour nous une manière de trouver un peu de cohérence entre nos aspirations et notre mode de travail. C’est dans ce cadre que j’ai rencontré Emmanuelle, statisticienne à l’incroyable talent 😊

Emmanuelle : Spécialisée dans la donnée des territoires depuis plus de 20 ans, mon expérience couvre de nombreux domaines : activités, emploi, formation, infrastructures, énergies, logement, construction etc. En 2022, après avoir développé des compétences R, j’ai souhaité relever le défi de l’entrepreneuriat et me rapprocher d’un collectif innovant, dynamique et solidaire 😇. En  m’accueillant au sein de sa marque d-sidd, Arnaud m’a permis de concrétiser mon projet et de m’associer à un spécialiste de R. 

Nos compétences complémentaires nous facilitent la compréhension des enjeux de nos commanditaires et le champ des possibles pour y répondre💪.

Ressources complémentaires

13 réponses

  1. Bonjour,

    Merci pour cette présentation très intéressante.

    Savez vous s’il est possible de créer un organigramme du personnel d’une direction d’entreprise ?

    Merci a vous

    1. Bonjour,

      Oui, il est tout à fait possible de créer un organigramme du personnel d’une direction d’entreprise avec R. Il existe plusieurs packages R qui peuvent vous aider à créer des organigrammes et des diagrammes de flux.

      L’un des packages les plus populaires est “diagrammeR”. Ce package fournit une syntaxe simple pour créer des diagrammes de flux, des organigrammes et des diagrammes conceptuels. Vous pouvez utiliser la fonction “grViz” pour dessiner des graphes en utilisant la syntaxe DOT ou la syntaxe R. Vous pouvez également utiliser la fonction “graphvizChart” pour dessiner des graphes en utilisant la bibliothèque Graphviz.

      Voici un exemple simple d’utilisation de “diagrammeR” pour créer un organigramme :

      # Installation du package
      install.packages("diagrammeR")

      # Chargement du package
      library(diagrammeR)

      # Création d'un graphique de type organigramme
      grViz("
      digraph {
      graph [rankdir = \"TB\"]
      node [shape = \"rectangle\"]
      A [label = \"Direction\"]
      B [label = \"RH\"]
      C [label = \"Marketing\"]
      D [label = \"Finance\"]
      E [label = \"Comptabilité\"]
      F [label = \"Informatique\"]
      G [label = \"Logistique\"]
      H [label = \"Production\"]
      I [label = \"Achats\"]
      J [label = \"Qualité\"]
      A -> B
      A -> C
      A -> D
      D -> E
      D -> F
      D -> G
      D -> H
      D -> I
      D -> J
      }
      ")

      Dans cet exemple, nous avons créé un organigramme de la direction d’une entreprise fictive avec des nœuds représentant différents départements et des flèches reliant les nœuds pour montrer la hiérarchie.

      Vous pouvez personnaliser l’organigramme en modifiant la couleur, la forme et le style des nœuds et des flèches en utilisant les options de la fonction “grViz”. Vous pouvez également ajouter des étiquettes, des images et des liens à vos nœuds en utilisant les options de la fonction.

      Il existe également d’autres packages R pour créer des organigrammes, tels que “orgchart” et “DiagrammeRsvg”.

      Bonne continuation

  2. Merci beaucoup,
    J’ai l’impression d’avoir compris l’utilisation d’outils de cartographie avec ces exemples.
    Les codes postaux (ou codes géographiques INSEE) peuvent ils être utilisés comme données de localisation directement ou est il nécessaire de les “transformer” (et comment ?) auparavant ?
    Merci encore et bravo à Claire pour ces idées

    1. Bonjour,
      pour réaliser des cartes, il vous faut des coordonnées géographiques (points, lignes, polygones,..). Les codes INSEE ou postaux n’en sont pas mais vous permette néanmoins de les obtenir par exemple à travers l’IGN : https://www.data.gouv.fr/fr/datasets/admin-express/ . Une fois importé dans R, vous pourrez ensuite filtrer sur la commune de votre choix via son code INSEE ou son nom si vous préférez.
      Bonne exploration:)

  3. Très intéressante présentation. Pour élargir la demande de Tung, peut-on réunir les deux domaines, càd faire une représentation géographique d’un organigramme avec les commerciaux Dupont en charge de l’Aquitaine (30 clients), Durand de la Normandie (12clients) et Smith de l’Alsace (24 clients), le tout visualisable sur une carte de France

  4. Bonjour,
    merci pour cet article.
    Deux questions totalement indépendantes ;
    1. Dans quelle mesure il est préférable d’utiliser tm plutôt que ggplot pour faire des cartes ?

    2. Comment vous gérer les représentations sur plusieurs années, je m’explique ;
    Sur plusieurs années il y a potentiellement, des fusions/découpages de communes, donc les centroïdes ne sont pas les mêmes ou pire encore, le polygone de la commune.. cela concerne quelques cas exceptionnels mais non négligeable surtout quand on souhaite agréger des données.

    Merci
    Jeremy

    1. Bonjour,
      Au sujet de la représentation des communes sur plusieurs années, je vois deux façons de traiter la question :
      a) Travailler au préalable sur tableur les données des communes passées pour les actualiser avec les codes des communes à jour, en utilisant la table de passage INSEE (ca marche assez bien je trouve), puis agréger sur les codes actuels des communes (dernier millésime) et faire la jointure sur la table spatiale des polygones de communes du dernier millésime. Pour la table de passage des codes communes, c’est hyper précieux et c’est ici : https://www.insee.fr/fr/information/2028028
      b) Travailler les données spatiales directement, à partir des différents millésimes des couches polygones des communes, pour regrouper ou séparer en fonction du dernier millésime. Pour des compléments sur le traitement des données spatiales : https://mtes-mct.github.io/parcours_r_module_analyse_spatiale/
      Bonne continuation

    2. Bonjour Jérémy
      Il y a effectivement de multiples possibilités de packages pour réaliser des cartes. Il m’arrive également d’utiliser ggplot2 avec sa fonction geom_sf. J’ai l’impression que tmap est un peu un package de cartographes alors que ggplot2 est plus peut être plus généraliste. Mon principal intérêt quand j’utilise geom_sf est qu’il me retourne des objets de classes ggplot2 qui peuvent facilement interagir avec d’autres objets de classes ggplot2 avec les packages cowplot ou ggrepel par exemple. tmap me permet quant à lui de réaliser des cartes sur rmarkdown avec la possibilité de les rendre très facilement interactives (tmap_leaflet()). Voici une petite analyse comparative plus complète: https://cengel.github.io/R-spatial/mapping.html
      Bonne lecture:)
      Arnaud

  5. Merci beaucoup pour cet article, encore une fois très clair !

    Est-ce qu’il y a des packages pour faire des cartes chronologiques (vidéo de l’apparition/disparition d’évènements sur un territoire ? Ex : propagation d’une maladie) ?

    Merci par avance !

    1. Bonjour,
      sans doute, mais je ne les connais pas. Peut-être regrader du côté des packages plotly et de ggiraph.
      Tenez nous informé de vos trouvailles !

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Vous souhaitez soutenir mon travail ?

C’est possible en faisant un don  sur la page Tipeee du blog  👇👇👇

Bonjour !

vous venez souvent ?

Identifiez-vous pour avoir accès à toutes les fontionnalités !

Aide mémoire off'R ;)

Enregistrez vous pour recevoir gratuitement mes fiches “aide mémoire” (ou cheat sheets) qui vous permettront de réaliser facilement les principales analyses biostatistiques avec le logiciel R et pour être informés des mises à jour du site.