Modification de la taille de la police et de la direction du texte des axes dans ggplot2

Je trace un graphique avec une variable catégorique sur l'axe x et une variable numérique sur l'axe Y.

Pour l'axe x, étant donné qu'il y a beaucoup de points de données, la mise en forme du texte par défaut entraîne le chevauchement de l'étiquette de chaque coche avec d'autres étiquettes. Comment puis-je (a) changer la taille de la police pour mon texte d'axe et (b) changer l'orientation du texte de sorte que le texte soit perpendiculaire à l'axe?

124
demandé sur Peter Mortensen 2012-11-09 01:19:27

5 réponses

Utiliser theme():

d <- data.frame(x=gl(10, 1, 10, labels=paste("long text label ", letters[1:10])), y=rnorm(10))
ggplot(d, aes(x=x, y=y)) + geom_point() +
    theme(text = element_text(size=20),
        axis.text.x = element_text(angle=90, hjust=1)) 
#vjust adjust the vertical justification of the labels, which is often useful

entrez la description de l'image ici

Il y a beaucoup de bonnes informations sur la façon de formater vos ggplots ici . Vous pouvez voir une liste complète des paramètres que vous pouvez modifier (fondamentalement, tous) en utilisant ?theme.

201
répondu Drew Steen 2016-11-03 00:23:31

Idem @Drew Steen sur l'utilisation de theme(). Voici les attributs de thème communs pour le texte et les titres de l'axe.

ggplot(mtcars,aes(x=factor(cyl),y=mpg))+
  geom_point()+
  theme(axis.text.x = element_text(colour="grey20",size=20,angle=90,hjust=.5,vjust=.5,face="plain"),
        axis.text.y = element_text(colour="grey20",size=12,angle=0,hjust=1,vjust=0,face="plain"),  
        axis.title.x = element_text(colour="grey20",size=12,angle=0,hjust=.5,vjust=0,face="plain"),
        axis.title.y = element_text(colour="grey20",size=12,angle=90,hjust=.5,vjust=.5,face="plain"))
44
répondu metasequoia 2012-11-08 22:06:10

Utiliser le thème():

d <- data.frame(x=gl(10, 1, 10, labels=paste("long text label ", letters[1:10])), y=rnorm(10))
ggplot(d, aes(x=x, y=y)) + geom_point() +
theme(text = element_text(size=20))
11
répondu meduvigo 2014-09-21 00:13:48

En ajoutant aux solutions précédentes, vous pouvez également spécifier la taille de la police relative au base_size inclus dans des thèmes tels que theme_bw() (Où base_size est 11) en utilisant la fonction rel().

Par exemple:

ggplot(mtcars, aes(disp, mpg)) +
  geom_point() +
  theme_bw() +
  theme(axis.text.x=element_text(size=rel(0.5), angle=90))
8
répondu Megatron 2017-11-06 20:03:16

L'utilisation de l'attribut "fill" aide dans des cas comme celui-ci. Vous pouvez supprimer le texte de l'axe en utilisant element_blank() et afficher un graphique à barres multicolore avec une légende. Je trace une fréquence d'enlèvement de pièces dans un atelier de réparation comme ci-dessous

ggplot(data=df_subset,aes(x=Part,y=Removal_Frequency,fill=Part))+geom_bar(stat="identity")+theme(axis.text.x  = element_blank())

Je suis allé pour cette solution dans mon cas car j'avais beaucoup de barres dans le graphique à barres et je n'ai pas été en mesure de trouver une taille de police appropriée qui est à la fois lisible et aussi assez petite pour ne pas se chevaucher.

3
répondu user131476 2013-09-05 06:20:43