On a récemment porté à mon attention cette visualisation de flux orientés plutôt réussie.
Comment lire ces graphiques :
L’idée de base de ce graphique est de montrer simultanément les tailles relatives des flux entre les régions. Les origines et les destinations des flux sont représentés par les segments du cercle […]. La taille des flux est indiquée par la largeur des liens à leurs extrémités. La direction du flux est encodé à la fois par la couleur du lien (celle de la région d’origine) et par l’espace entre le lien et la région de destination.Source
En cherchant un (tout petit) peu j’ai retrouvé ce post qui montre comment réaliser ces graphiques circulaires avec R. L’auteur met a disposition ses exemples au sein du package migest
qui s’appuie lui même sur des fonctions du package circlize
.
Pour faciliter la création de ces “graphiques circulaires” j’ai construit une fonction unique qui comprend à la fois la préparation des données et l’affichage du graphique.
Les données et codes utilisés sont disponibles sur Github. 1
Pour illustrer l’utilisation de cette fonction je propose un exemple basé sur les migrations résidentielles entre régions françaises (les données utilisées sont les mêmes que celles utilisées ici) :
load("data/regmig.RData") source("CircularPlot.R") myCirclePlot(df = df, marg = 0.25, nflows = 40)
Dans la fonction myCirclePlot
:
– df
est un data frame des liens entre les régions. Il est composé de 3 colonnes : origine (région d’origine), destination (région de destination), taille du flux (nombre de migrations résidentielles).
– marg
est un paramètre à ajuster en fonction de la taille des labels des régions et de la taille du graphique (une valeur entre 0 et 0.4).
– nflows
est le nombre de liens à afficher sur le graphique.
Les migrations en provenance de l’étranger apparaissent prépondérantes sur ce graphiques (nous de disposons pas des migrations résidentielles vers l’étranger).
Le graphique suivant ne prend pas en compte les migrations résidentielles venant de l’étranger.
df2 <- df[df$i!='ETRANGER' & df$j!='ETRANGER',] myCirclePlot(df = df2, marg = 0.25, nflows = 40)
Les migrations résidentielles intra-régionales sont maintenant celles les plus visibles.
Le graphique suivant ne considère que les migrations inter-régionales.
df3 <- df2[df2$i!=df2$j,] myCirclePlot(df = df3, marg = 0.25, nflows = 40)
Les principales migrations inter-régionales se font entre régions contiguës et en provenance ou vers l’Île-de-France.
Les problèmes inhérents à ce type de graphique :
– Il est difficile de conserver un graphique lisible en représentant de trop nombreuses origines et destinations
– Même remarque si l’on veut montrer un grand nombre de flux.
La solution de l’interactivité est particulièrement adaptée ici (voir l’exemple initial : http://www.global-migration.info/.
Les problèmes du code présenté ici :
– En fonction des proportions de la sortie graphique et de l’hétérogénéité des longueurs des labels régions le graphique peut apparaître plus ou moins ovale.
– La couleur des liens n’est pas gérée ici, un jeu de couleurs aléatoires est affecté à chaque nouveau graphique ce qui ne facilite pas les comparaisons.
Références :
Le site à l’origine de tout cela – The global flow of people
Le working paper montrant comment réaliser ce type de graphique sur plusieurs plate-formes – Visualising Migration Flow Data with Circular Plots
L’exemple spécifique avec R – Circular Migration Flow Plots in R
——-
(1)J’ai été fortement incité à utiliser github. Je m’exécute mais je continuerai à mettre des codes courts directement dans les billets.
OpenEdition vous propose de citer ce billet de la manière suivante :
Timothée Giraud (21 janvier 2015). Visualiser des flux : les graphiques circulaires. R Géomatique. Consulté le 7 septembre 2024 à l’adresse https://doi.org/10.58079/tp3b