webentwicklung-frage-antwort-db.com.de

Ändern der Schriftgröße und der Richtung des Achsentexts in ggplot2

Ich zeichne ein Diagramm mit einer kategorialen Variablen auf der x-Achse und einer numerischen Variablen auf der y-Achse.

Bei der x-Achse führt die Standardtextformatierung bei vielen Datenpunkten dazu, dass sich die Beschriftung für jedes Häkchen mit anderen Beschriftungen überlappt. Wie ändere ich (a) die Schriftgröße für meinen Achsentext und (b) die Ausrichtung des Texts, sodass der Text senkrecht zur Achse steht?

158
Anjan

Benutze 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

Es gibt viele gute Informationen darüber, wie Sie Ihre ggplots formatieren können hier . Sie können eine vollständige Liste der Parameter anzeigen, die Sie (im Grunde genommen alle) mit ?theme ändern können.

251
Drew Steen

Das Gleiche gilt für Steen über die Verwendung von theme(). Hier finden Sie allgemeine Themenattribute für Achsentexte und Titel.

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"))
62
metasequoia

Zusätzlich zu früheren Lösungen können Sie die Schriftgröße relativ für den base_size angeben, der in Themen wie theme_bw() (wobei base_size 11 ist) enthalten ist, indem Sie die Funktion rel() verwenden.

Zum Beispiel:

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

Verwenden Sie 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))
14
meduvigo

Die Verwendung des Attributs "fill" hilft in solchen Fällen. Sie können den Text mit element_blank() von der Achse entfernen und ein mehrfarbiges Balkendiagramm mit einer Legende anzeigen. Ich zeichne eine Häufigkeit der Teileentfernung in einer Reparaturwerkstatt wie folgt

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

Ich habe mich für diese Lösung entschieden, da ich viele Balken im Balkendiagramm hatte und nicht in der Lage war, eine geeignete Schriftgröße zu finden, die sowohl lesbar als auch klein genug ist, um sich nicht zu überlappen.

3
user131476

Wenn Sie viele Diagramme erstellen, ist es sinnvoll, sie global festzulegen (relevanter Teil ist die zweite Zeile, drei Zeilen zusammen sind ein funktionierendes Beispiel):

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