Je veux annoter du texte sur la dernière facette de l'intrigue avec le code suivant:
library(ggplot2)
p <- ggplot(mtcars, aes(mpg, wt)) + geom_point()
p <- p + facet_grid(. ~ cyl)
p <- p + annotate("text", label = "Test", size = 4, x = 15, y = 5)
print(p)
Mais ce code annote le texte sur chaque facette. J'apprécierais beaucoup si vous me guidez sur la façon d'obtenir le texte annoté sur une seule facette.
r
ggplot2
facet
facet-wrap
facet-grid
MYaseen208
la source
la source
Réponses:
En règle générale, vous feriez quelque chose comme ceci:
Cela devrait fonctionner sans spécifier complètement la variable de facteur, mais générera probablement des avertissements:
la source
geom_text
avec une seule ligne.annotate()
...?Voici le tracé sans annotations de texte:
Créons un bloc de données supplémentaire pour contenir les annotations de texte:
Alternativement, nous pouvons spécifier manuellement la position de chaque étiquette:
Nous pouvons également étiqueter les parcelles selon deux facettes:
Remarques:
-Inf
etInf
pour positionner le texte sur les bords d'un panneau.hjust
etvjust
pour ajuster la justification du texte.dat_text
doit avoir une colonne qui fonctionne avec votrefacet_grid()
oufacet_wrap()
.la source
colnames()
textedata.frame
correspond à ceux des données que vous êtes sur le point de tracer.Si quelqu'un cherche un moyen facile d'étiqueter des facettes pour des rapports ou des publications, le package
egg
( CRAN ) a des fonctionstag_facet()
et destag_facet_outside()
fonctionnalités très intéressantes .Tag à l'intérieur
Défaut
Remarque: si vous souhaitez conserver le texte et l'arrière-plan de la bande, essayez d'ajouter
strip.text
et destrip.background
revenirtheme
ou de supprimertheme(strip.text = element_blank(), strip.background = element_blank())
de latag_facet()
fonction d' origine .Alignez en haut à droite et utilisez des chiffres romains
Aligner en bas à gauche et utiliser des majuscules
Définissez vos propres balises
Tag à l'extérieur
Edit : ajout d'une autre alternative à l'aide du package stickylabeller
Créé par le package reprex (v0.2.1)
la source
tag_facet
par nixingstrip.text = element_blank()
Warning: Ignoring unknown parameters: strip.text
Je pense que pour la réponse ci-dessus lab = "Text" est inutile, le code ci-dessous est également correct.
Cependant, si vous souhaitez étiqueter différemment dans différents sous-graphiques, ce sera bien de cette manière:
la source
Développant légèrement l'excellente réponse de joran, pour clarifier le fonctionnement du dataframe d'étiquette.
Vous pouvez considérer "mpg" et "wt" comme les coordonnées x et y, respectivement (je trouve qu'il est plus facile de garder une trace des noms de variables d'origine que de les renommer, comme dans l'excellente réponse de Kamil). Vous avez besoin d'une ligne par étiquette, et la colonne «cyl» indique à quelle facette chaque ligne est associée.
la source
Je ne connaissais pas le
egg
package, voici donc uneggplot2
solution de package simplela source