web-dev-qa-db-fra.com

Aligner l'étiquette d'axe à droite avec ggplot2

Considérer ce qui suit

d = data.frame(y=rnorm(120), 
               x=rep(c("bar", "long category name", "foo"), each=40))

ggplot(d,aes(x=x,y=y)) + 
    geom_boxplot() + 
    theme(axis.text.x=element_text(size=15, angle=90))

plot with poorly aligned labels

Les étiquettes de l'axe des x sont alignées par le centre de l'étiquette. Est-il possible de s'aligner automatiquement à droite pour que chaque étiquette se termine juste en dessous du graphique?

13
Remi.b

C'est précisément à cela que servent les paramètres hjust et vjust dans ggplot. Ils contrôlent respectivement la justification horizontale et verticale et vont de 0 à 1. Voir cette question pour plus de détails sur les justifications et leurs valeurs ( Que font hjust et vjust lors de la création d'un tracé à l'aide de ggplot? ).

Pour obtenir les étiquettes comme vous le souhaitez, vous pouvez utiliser:

  • hjust = 0.95 (pour laisser un espace entre les étiquettes et l'axe)
  • vjust = 0.2 (pour les centrer dans ce cas)

ggplot(d,aes(x=x,y=y)) + geom_boxplot() + 
       theme(axis.text.x=element_text(size=15, angle=90,hjust=0.95,vjust=0.2))

enter image description here

24
Mike H.

Alternativement, retournez l'axe, vos clients vous remercieront et auront moins de douleurs au cou (en plus, je trouve la plupart des boxplots plus faciles à interpréter avec cette orientation):

ggplot(d, aes(x = x, y = y)) +
  geom_boxplot() + 
  coord_flip()

Plot

10
JasonAizkalns