272 votes

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égorielle sur l'axe des x et une variable numérique sur l'axe des y.

Pour l'axe des x, étant donné qu'il y a de nombreux points de données, le formatage du texte par défaut fait que l'étiquette de chaque marque de coche se chevauche avec d'autres étiquettes. Comment puis-je (a) modifier la taille de la police pour le texte de mon axe et (b) modifier l'orientation du texte afin qu'il soit perpendiculaire à l'axe ?

386voto

Drew Steen Points 3742

Utilisez 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

enter image description here

Il y a beaucoup de bonnes informations sur la façon de formater vos ggplots. aquí . Vous pouvez consulter la liste complète des paramètres que vous pouvez modifier (en gros, tous) en utilisant la commande suivante ?theme .

97voto

metasequoia Points 1604

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

ggplot(mtcars, aes(x = factor(cyl), y = mpg))+
  geom_point()+
  theme(axis.text.x = element_text(color = "grey20", size = 20, angle = 90, hjust = .5, vjust = .5, face = "plain"),
        axis.text.y = element_text(color = "grey20", size = 12, angle = 0, hjust = 1, vjust = 0, face = "plain"),  
        axis.title.x = element_text(color = "grey20", size = 12, angle = 0, hjust = .5, vjust = 0, face = "plain"),
        axis.title.y = element_text(color = "grey20", size = 12, angle = 90, hjust = .5, vjust = .5, face = "plain"))

35voto

Megatron Points 107

En complément des solutions précédentes, vous pouvez également spécifier la taille de la police. relatif à la base_size inclus dans des thèmes tels que theme_bw() (où base_size est de 11) en utilisant le rel() fonction.

Par exemple :

ggplot(mtcars, aes(disp, mpg)) +
  geom_point() +
  theme_bw() +
  theme(axis.text.x=element_text(size=rel(0.5), angle=90))

22voto

meduvigo Points 11

Utilisez 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))

11voto

Lorsque vous réalisez de nombreux tracés, il est judicieux de le définir globalement (la partie pertinente est la deuxième ligne, les trois lignes ensemble sont un exemple de travail) :

   library('ggplot2')
   theme_update(text = element_text(size=20))
   ggplot(mpg, aes(displ, hwy, colour = class)) + geom_point()

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X