2013-08-06 4 views
11

J'ai utilisé vjust comme solution de contournement et d'élaborer une distance acceptable par une tentative et erreur. Mais cela prend parfois beaucoup de temps et change avec la taille de la police et l'échelle de l'axe.Aligner geom_text sur un geom_vline dans ggplot2

Existe-t-il une meilleure méthode pour aligner le texte dans l'exemple automatique?

library(ggplot2) 

ggplot(data=mtcars, aes(x=hp, y=mpg))+ 
geom_point()+ 
theme_bw() + 
    geom_vline(xintercept=200, colour="grey") + 
    geom_text(aes(x=200, label="the strong cars", y=20), colour="blue", angle=90, vjust = 1.2, text=element_text(size=11))+ 
    geom_text(aes(x=200, label="the weak cars", y=20), colour="red", angle=90, vjust = -1, text=element_text(size=11)) 

ggsave(filename="geomline.png", width=5.5, height=2*3, dpi=300) 

enter image description here

+0

Comment voulez-vous que l'alignement soit? vjust = 0 et vjust = 1 semblent faire ce qu'ils sont censés faire, les valeurs en dehors de cette plage sont toujours plus excentriques. – baptiste

+0

Je veux que l'ordinateur regarde la taille de la police et place la zone de texte à la bonne distance. Ainsi, l'utilisateur n'aura pas à jouer avec les valeurs de vjust. –

+1

Je pense que le positionnement des étiquettes automagiquement va être difficile, même si l'intrigue sera toujours simple. Avez-vous regardé le paquet ['directlabels'] (http://cran.r-project.org/web/packages/directlabels/index.html)? – SlowLearner

Répondre

15

Une autre solution pour le cas d'une étiquette de ligne serait d'ajouter un saut de ligne avant/après et conserver la valeur par défaut = 0,5 vjust.

ggplot(data=mtcars, aes(x=hp, y=mpg)) + 
    geom_point() + 
    theme_bw() + 
    geom_vline(xintercept=200, colour="grey") + 
    geom_text(aes(x=200, label="\nthe strong cars", y=20), colour="blue", angle=90, text=element_text(size=11)) + 
    geom_text(aes(x=200, label="the weak cars\n", y=20), colour="red", angle=90, text=element_text(size=11)) 
+0

Facile et efficace. J'aime ça! – fdetsch

+1

De même, pour éviter le rendu de plusieurs copies, 'annotate' devrait être utilisé à la place de' geom_text', voir https://stackoverflow.com/questions/10952832/ggplot2-is-there-a-fix-for-jagged-poor- texte-qualité-produit-par-geom-texte – Valentas

Questions connexes