917 Stimmen

Achsenbeschriftungen in ggplot2 drehen und beabstanden

Ich habe ein Diagramm, bei dem die x-Achse ein Faktor ist, dessen Beschriftungen lang sind. Während wahrscheinlich nicht eine ideale Visualisierung, für jetzt möchte ich einfach drehen diese Etiketten vertikal zu sein. Ich habe diesen Teil mit dem Code unten herausgefunden, aber wie Sie sehen können, sind die Beschriftungen nicht vollständig sichtbar.

data(diamonds)
diamonds$cut <- paste("Super Dee-Duper",as.character(diamonds$cut))
q <- qplot(cut,carat,data=diamonds,geom="boxplot")
q + opts(axis.text.x=theme_text(angle=-90))

enter image description here

14voto

jan-glx Punkte 5868

OUTDATED - siehe diese Antwort für einen einfacheren Ansatz


Um lesbare X-Tick-Beschriftungen ohne zusätzliche Abhängigkeiten zu erhalten, sollten Sie verwenden:

  ... +
  theme(axis.text.x = element_text(angle = 90, hjust = 1, vjust = 0.5)) +
  ...

Dadurch werden die Häkchenbeschriftungen um 90° gegen den Uhrzeigersinn gedreht und an ihrem Ende vertikal ausgerichtet ( hjust = 1 ) und ihre Mittelpunkte horizontal mit dem entsprechenden Häkchen ( vjust = 0.5 ).

Vollständiges Beispiel:

library(ggplot2)
data(diamonds)
diamonds$cut <- paste("Super Dee-Duper",as.character(diamonds$cut))
q <- qplot(cut,carat,data=diamonds,geom="boxplot")
q + theme(axis.text.x = element_text(angle = 90, hjust = 1, vjust = 0.5))


Beachten Sie, dass die vertikalen/horizontalen Ausrichtungsparameter vjust / hjust von element_text sind relativ zum Text. Deshalb, vjust ist verantwortlich für die horizontal Ausrichtung.

Ohne vjust = 0.5 würde es folgendermaßen aussehen:

q + theme(axis.text.x = element_text(angle = 90, hjust = 1))

Ohne hjust = 1 würde es folgendermaßen aussehen:

q + theme(axis.text.x = element_text(angle = 90, vjust = 0.5))

Wenn Sie aus irgendeinem (verdrahteten) Grund die Häkchenbeschriftungen um 90° im Uhrzeigersinn drehen wollen (so dass sie von links gelesen werden können), müssen Sie die Funktion verwenden: q + theme(axis.text.x = element_text(angle = -90, vjust = 0.5, hjust = -1)) .

All dies wurde bereits in den Kommentaren von diese Antwort aber ich komme so oft auf diese Frage zurück, dass ich eine Antwort haben möchte, die ich einfach kopieren kann, ohne die Kommentare zu lesen.

13voto

krlmlr Punkte 23448

El ggpubr Paket bietet eine Verknüpfung, die standardmäßig das Richtige tut (Text rechts ausrichten, Textfeld zum Ankreuzen mittig ausrichten):

library(ggplot2)
diamonds$cut <- paste("Super Dee-Duper", as.character(diamonds$cut))
q <- qplot(cut, carat, data = diamonds, geom = "boxplot")
q + ggpubr::rotate_x_text()

Erstellt am 2018-11-06 von der Reprex-Paket (v0.2.1)

Gefunden mit einer GitHub-Suche nach den entsprechenden Argumentnamen: https://github.com/search?l=R&q=element_text+Winkel+90+vjust+org%3Acran&type=Code

0voto

tjebo Punkte 16842

Eine Alternative zu coord_flip() ist die Verwendung der ggstance Paket. Der Vorteil ist, dass es einfacher ist, die Diagramme mit anderen Diagrammtypen zu kombinieren und Sie können, was vielleicht noch wichtiger ist, feste Maßstabsverhältnisse für Ihr Koordinatensystem festlegen .

library(ggplot2)
library(ggstance)

diamonds$cut <- paste("Super Dee-Duper", as.character(diamonds$cut))

ggplot(data=diamonds, aes(carat, cut)) + geom_boxploth()

Erstellt am 2020-03-11 von der Reprex-Paket (v0.3.0)

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X