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?
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
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
.
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"))
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))
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))
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.