Graphiques à bulles sous R
L'essentiel de cette page !
On peur réaliser facilement des graphiques à bulles avec R, de qualité correct avec la fonction symbols().
On peut aussi faire du très joli avec {ggplot2}.
Simulons des données
Pays <- c("Afrique du sud","Allemagne","Arabie Saoudite","Argentine",
"Australie","Autriche","Belgique","Brésil","Canada","Chili",
"Chine","Colombie","Corée du sud","Danemark","Egypte",
"Emirats Arabes Unis","Espagne","Estonie","Etats-Unis","Finlande",
"France","Georgie","Grèce","Hongrie","Inde","Irlande","Israel","Italie",
"Japon","Malaisie","Mexique","Norvège","Nouvelle Zélande","Pakistan",
"Pays-bas","Pays-Bas","Pérou","Pologne","Portugal","République Tchèque",
"Royaume-Uni","Russie","Singapour","Suède","Suisse","Taïwan","Thaïlande",
"Turquie","Ukraine")
Pays <- as.factor(Pays)
Régions <- c("Amérique","Europe","Amérique","Amérique latine","Asie","Europe",
"Europe","Amérique latine","NA","Amérique latine","Asie","Amérique latine",
"Asie","Europe","Amérique","Amérique","Europe","Europe de l'est","NA","Europe",
"Europe","Europe de l'est","Europe","Europe de l'est","Asie","Europe","Amérique",
"Europe","Asie","Asie","Amérique latine","Europe","Asie","Asie","Europe","Europe",
"Amérique latine","Europe de l'est","Europe","Europe de l'est","Europe","Europe de l'est",
"Asie","Europe","Europe","Asie","Asie","Europe de l'est","Europe de l'est")
Régions <- as.factor(Régions)
x <- rnorm(length(Pays),20,5)
y <- rnorm(length(Pays),20,5)
tailles <- rnorm(length(Pays),20,5)
radius <- sqrt(tailles/(2*pi))
library("colorspace")
pal <- choose_palette()
symbols(x,y, circles=radius,
bg=pal(6)[Régions],inches=0.35)
Bubble chart avec ggplot2
Compilons ces données en dataframes
Il faut reprendre les données simulées ci-dessus.
synthese <- data.frame(Pays,Régions,x,y,tailles)
Traçons le graphique avec ggplot2 et les labels avec ggrepel
library("ggplot2") ; library("ggrepel")
ggplot(synthese , aes(x, y)) + geom_point(aes(color = Régions, size = tailles), alpha = 0.5) +
geom_label_repel(aes(label = Pays, color = Régions), size = 3) + scale_size(range = c(0.5, 12))