ggplot X-Achsen-Tick-Beschriftungen in R . ändern
-
Verwenden Sie
scale_x_discrete
, umggplot
X-Achsen-Tick-Labels in R . zu ändern -
Verwenden Sie
scale_x_discrete
mit benutzerdefinierter Funktion, um die X-Achsen-Tick-Beschriftungen vonggplot
in R . zu ändern
In diesem Artikel erfahren Sie, wie Sie die Tick-Beschriftungen der X-Achse von ggplot
in R ändern.
Verwenden Sie scale_x_discrete
, um ggplot
X-Achsen-Tick-Labels in R . zu ändern
scale_x_discrete
zusammen mit scale_y_discrete
werden für die erweiterte Manipulation von Plotskalierungsbeschriftungen und -grenzen verwendet. In diesem Fall verwenden wir scale_x_discrete
, um die Tick-Beschriftungen der x
-Achse für ggplot
-Objekte zu ändern. Beachten Sie, dass das erste ggplot
-Objekt ein Balkendiagramm ist, das auf dem diamanten
-Datensatz basiert. Der Graph verwendet die Spalte cut
und trägt die Anzahl jedes Typs auf der y
-Achse. x
-Achse hat den Standardtitel - cut
, der geändert werden kann, indem der String als erstes Argument von scale_x_discrete
übergeben wird. Alternativ können wir für jedes Label spezifische Stringwerte übergeben, indem wir einen Vektor konstruieren und ihn dem Parameter labels
zuweisen. Beide Graphen werden mit der Funktion grid.arrange
, die Teil des gridExtra
-Pakets ist, nebeneinander gezeichnet.
library(ggplot2)
library(gridExtra)
p1 <- ggplot(diamonds, aes(cut)) + geom_bar(fill = "orange") + scale_x_discrete("Cut")
p2 <- p1 + scale_x_discrete("Cut Type", labels = c("Fair" = "F","Good" = "G", "Very Good" = "VG","Premium" = "P","Ideal" = "I"))
grid.arrange(p1, p2, ncol = 2)
Eine weitere nützliche Methode, um die Labels auf der x
-Achse zu ändern, besteht darin, ein Funktionsobjekt als labels
-Parameter zu übergeben. Der nächste Code-Schnipsel verwendet die Funktion Abkürzen
, um die Beschriftungen automatisch zu kürzen und dann Graphen als zwei Spalten zu zeichnen.
library(ggplot2)
library(gridExtra)
p1 <- ggplot(diamonds, aes(cut)) + geom_bar(fill = "orange") + scale_x_discrete("Cut")
p2 <- p1 + scale_x_discrete("Cut Type", labels = c("Fair" = "F","Good" = "G", "Very Good" = "VG","Premium" = "P","Ideal" = "I"))
p3 <- p1 + scale_x_discrete("Cut Type", labels = abbreviate)
grid.arrange(p2, p3, ncol = 2)
scale_x_discrete
funktioniert auf verschiedene Graphen ähnlich, und die Label-Manipulationstechnik ist anwendbar, wie im folgenden Beispiel gezeigt. Aus dem ‘mpg’-Datensatz werden nämlich mehrere Streudiagramme gezeichnet.
library(ggplot2)
library(gridExtra)
p1 <- ggplot(mpg, aes(manufacturer, cty)) + geom_point()
p2 <- ggplot(mpg, aes(manufacturer, cty)) + geom_point() +
scale_x_discrete(labels = abbreviate)
p3 <- ggplot(mpg, aes(manufacturer, cty)) + geom_point(colour = "blue") +
scale_x_discrete(labels = abbreviate)
grid.arrange(p1, p2, p3, nrow = 3)
Verwenden Sie scale_x_discrete
mit benutzerdefinierter Funktion, um die X-Achsen-Tick-Beschriftungen von ggplot
in R . zu ändern
Der Parameter scale_x_discrete
labels
kann ein benutzerdefiniertes Funktionsobjekt verwenden, um jedes Tick-Label entsprechend zu ändern. In diesem Fall haben wir die Funktion capitalize_all
implementiert, die jedes Label zuerst abkürzt und dann das Anfangszeichen des Strings in einen Großbuchstaben umwandelt. Beachten Sie, dass die eingebauten Funktionen paste
, toupper
, substring
und abbreviate
verwendet werden, um die capitalize_all
-Funktionalität zu implementieren, aber eine vollständige Überprüfung dieser Methoden würde den Rahmen dieses Artikels sprengen. Handbuchseiten können mit der Notation ?function_name
in der R-Konsole angezeigt werden.
library(ggplot2)
library(gridExtra)
capitalize_all <- Vectorize(function(x) {
s <- abbreviate(x)
paste(toupper(substring(s, 1,1)), substring(s, 2), sep="", collapse=" ")
})
ggplot(mpg, aes(manufacturer, cty)) + geom_point(aes(colour = trans)) +
scale_x_discrete(labels = capitalize_all)
Founder of DelftStack.com. Jinku has worked in the robotics and automotive industries for over 8 years. He sharpened his coding skills when he needed to do the automatic testing, data collection from remote servers and report creation from the endurance test. He is from an electrical/electronics engineering background but has expanded his interest to embedded electronics, embedded programming and front-/back-end programming.
LinkedIn Facebook