ggplot2 textes : Ajouter du texte à un graphique - Logiciel R et visualisation de données


Cet article décrit comment ajouter du texte à un graphique générer en utilisant le package ggplot2.

Les fonctions ci-dessous peuvent être utilisées:

  • geom_text(): Ajouter du text directement à un graphique
  • geom_label(): Trace un rectangle sous le texte , ce qui rend plus facile la lecture.
  • annotate(): Utile pour ajouter des petites annotations de texte à un endroit particulier sur le graphique
  • annotation_custom(): Ajoute des annotations statiques à la même position sur chaque pannel graphique.

Préparer des données

Nous allons utiliser un échantillon du jeu de données mtcars. La fonction sample() peut être utilisée pour extraire 10 lignes:

# Subset 15 rows
set.seed(1234)
ss <- sample(1:32, 10)
df <- mtcars[ss, ]

Ajouter du texte avec les fonctions geom_text et geom_label

library(ggplot2)
# Simple nuage de points
sp <- ggplot(df, aes(wt, mpg, label = rownames(df)))+
  geom_point()
# Ajouter du texte
sp + geom_text()
# Changer la taille du texte
sp + geom_text(size=6)
# Changer l'ajustement vertical et horizontal
sp +  geom_text(hjust=0, vjust=0)
# Changer la police. Valeurs possibles : 1(normal),
# 2(bold), 3(italic), 4(bold.italic)
sp + geom_text(aes(fontface=2))

  • Changer la police
sp + geom_text(family = "Times New Roman")
  • geom_label() fonctionne come geom_text() mais dessine un rectangle autour de chaque étiquette. Cela est utile lorsque les données sont denses sur le graphique.
sp + geom_label()


D’autres arguments utiles de geom_text() et de geom_label() sont:

  • nudge_x et nudge_y: pour decaler les textes et les points correspondants. La fonction position_nudge() peut aussi être utilisée.
  • check_overlap = TRUE: pour éviter le chévauchement des points et des textes
  • hjust et vjust peut être une vecteur de caractère (ggplot2 v >= 2.0.0): “left”, “center”, “right”, “bottom”, “middle”, “top”. De nouvelles options sont “inward” et “outward” qui aligne le texte vers et depuis le centre du graphique, respectivement.


Changer la couleur et la taille du text par groupe

Il est possible de changer l’apparence du texte en utilisant les “aesthetics” (color, size,…) :

sp2 <- ggplot(mtcars, aes(x=wt, y=mpg, label=rownames(mtcars)))+
  geom_point()
# Colorer en fonction du groupe
sp2 + geom_text(aes(color=factor(cyl)))

# Changer la taille du texte en utilisant une variable continue
sp2 + geom_text(aes(size=wt))

sp2 + geom_text(aes(size=wt)) + scale_size(range=c(3,6))

Ajouter du texte à un point particulier

Les fonctions geom_text() et annotate() peuvent être utilisées :

# Solution 1
sp2 + geom_text(x=3, y=30, label="Scatter plot")
# Solution 2
sp2 + annotate(geom="text", x=3, y=30, label="Scatter plot",
              color="red")

annotation_custom : Ajouter une annotation statique en haut-droite, haut-gauche, …

Les fonctions annotation_custom() et textGrob() sont utilisées pour ajouter des annotations statiques qui sont au même endroit dans tous les panels. Le package grid est nécessaire :

library(grid)
# Créer un élement textuel
grob <- grobTree(textGrob("Scatter plot", x=0.1,  y=0.95, hjust=0,
  gp=gpar(col="red", fontsize=13, fontface="italic")))
# Ajouter au graphique
sp2 + annotation_custom(grob)

Facet : Dans le graphique ci-dessous, l’annotation est à la même place (dans chaque panel) même si les échelles des axes varient.

sp2 + annotation_custom(grob)+facet_wrap(~cyl, scales="free")

ggrepel: Reduction du chevauchement des textes

Il y a deux fonctions importantes dans le package R ggrepel:

  • geom_label_repel()
  • geom_text_repel()

Nuage de points avec annotation

Nous commençons par créer un simple nuage de points en utilisant un échantillon du jeu de données mtcars, contenant 15 lignes.

  1. Preparation des données:
# Prendre 15 lignes
set.seed(1234)
ss <- sample(1:32, 15)
df <- mtcars[ss, ]
  1. **Créer un nuage de points*:
p <- ggplot(df, aes(wt, mpg)) +
  geom_point(color = 'red') +
  theme_classic(base_size = 10)
  1. Ajouter du texte:
# Ajouter du texte avec ggplot2::geom_text
p + geom_text(aes(label = rownames(df)),
              size = 3.5)

# Utiliser ggrepel::geom_text_repel
require("ggrepel")
set.seed(42)
p + geom_text_repel(aes(label = rownames(df)),
                    size = 3.5) 

# Utiliser ggrepel::geom_label_repel and 
# Changer la couleur par groupes
set.seed(42)
p + geom_label_repel(aes(label = rownames(df),
                    fill = factor(cyl)), color = 'white',
                    size = 3.5) +
   theme(legend.position = "bottom")

Volcano plot

genes <- read.table("https://gist.githubusercontent.com/stephenturner/806e31fce55a8b7175af/raw/1a507c4c3f9f1baaa3a69187223ff3d3050628d4/results.txt", header = TRUE)
genes$Significant <- ifelse(genes$padj < 0.05, "FDR < 0.05", "Not Sig")
ggplot(genes, aes(x = log2FoldChange, y = -log10(pvalue))) +
  geom_point(aes(color = Significant)) +
  scale_color_manual(values = c("red", "grey")) +
  theme_bw(base_size = 12) + theme(legend.position = "bottom") +
  geom_text_repel(
    data = subset(genes, padj < 0.05),
    aes(label = Gene),
    size = 5,
    box.padding = unit(0.35, "lines"),
    point.padding = unit(0.3, "lines")
  )

source

Infos

Cette analyse a été réalisée avec le logiciel R (ver. 3.2.4) et le package ggplot2 (ver. 2.1.0)







Want to Learn More on R Programming and Data Science?

==> Subscribe to our Mailing List <==

* indicates required


 Get involved :
  Click to follow us on and Google+ :   
  Comment this article by clicking on "Discussion" button (top-right position of this page)
  Sign up as a member and post news and articles on STHDA web site.


Suggestions


ggplot2 couleurs : Changer les couleurs automatiquement et manuellement - Logiciel R et visualisation de données
ggplot2 graduation des axes : Guide pour personnaliser les étiquettes des graduations - Logiciel R et visualisation de données
ggplot2 légende : Modifier facilement la légende d'un graphique - Logiciel R et visualisation de données
ggplot2 barplots : Guide de démarrage rapide - Logiciel R et visualisation de données
ggplot2 - Combiner plusieurs graphiques sur la même page - Logiciel R et visualisation de données
ggplot2 échelle et transformation des axes - Logiciel R et visualisation de données
ggplot2 titres : Titre principal, titre des axes et légendes - Logiciel R et visualisation de données
ggplot2 box plot : Guide de démarrage rapide - Logiciel R et visualisation de données
ggplot2 nuage de points: Guide de démarrage rapide - Logiciel R et visualisation de données
ggplot2 thèmes et couleurs de fond : les 3 éléments - Logiciel R et visualisation de données
ggplot2 barres d'erreur : Guide de démarrage rapide - Logiciel R et visualisation de données
ggplot2 graphique en camembert: Guide de démarrage rapide - Logiciel R et visualisation de données
ggplot2 types de points - Logiciel R et visualisation de données
ggplot2 histogramme : Guide de démarrage rapide - Logiciel R et visualisation de données
ggplot2 - ajouter une ligne droite à un graphe : Ligne horizontale, verticale et droite de régression
ggplot2
ggplot2 graphique linéaire : Guide de démarrage rapide - Logiciel R et visualisation de données
ggplot2 dot plot : Guide de démarrage rapide - Logiciel R et visualisation de données
ggplot2 : heatmap d'une matrice de corrélation - Logiciel R et visualisation de données
ggplot2 type de traits : Comment changer le type de trait d'un graphique avec le logiciel R?
ggplot2 facet : diviser un graphique en plusieurs panneaux - Logiciel R et visualisation de données
ggplot2 ECDF graphique: Guide de démarrage rapide pour la fonction de répartition empirique - Logiciel R et visualisation de données
ggplot2 courbe de distribution : Guide de démarrage rapide - Logiciel R et visualisation de données
ggplot2 violin plot : Guide de démarrage rapide - Logiciel R et visualisation de données
ggplot2 stripchart (jitter): Guide de démarrage rapide - Logiciel R et visualisation de données
ggplot2 pivoter un graphique : Inverser et retourner le graphique - Logiciel R et visualisation de données
ggplot2 qq plot (quantile - quantile plot) : Guide de démarrage rapide - Logiciel R et visualisation de données

Cette page a été vue 12100 fois
Licence - Pas d’Utilisation Commerciale - Partage dans les Mêmes Conditions
Licence Creative Commons