Erstellen Sie nebeneinander Boxplots in R
-
Verwenden Sie die Funktion
par
, um Boxplots nebeneinander in R . zu erstellen -
Verwenden Sie die Funktion
grid.arrange
, um Boxplots nebeneinander in R . zu erstellen
In diesem Artikel werden Methoden zum Erstellen von nebeneinander angeordneten Boxplots in R vorgestellt.
Verwenden Sie die Funktion par
, um Boxplots nebeneinander in R . zu erstellen
Mit der Funktion par
können grafische Parameter eingestellt werden. Der Aufruf der Funktion ohne Argumente oder no.readonly = TRUE
ruft alle grafischen Parameter ab. In diesem Fall verwenden wir den Parameter mfrow
, um Boxplots nebeneinander zu erstellen. mfrow
wird im c(nr, nc)
-Vektor übergeben, und nachfolgende Plots werden als nr
-by-nc
-Array gezeichnet. Der folgende Beispielcode erstellt zwei Boxplots aus dem Datensatz InsectSprays
, in denen die Spalten count
und spray
entsprechend geplottet werden. Auch wenn eine eingehende Überprüfung der Funktion boxplot
den Rahmen dieses Artikels sprengen würde, braucht es das Argument col
, um die Farbe der Boxkörper anzugeben. Beachten Sie, dass der letzte Funktionsaufruf par(mfrow=c(1,1))
verwendet wird, um das Layout auf die Standardeinstellung zurückzusetzen.
par(mfrow=c(1,2))
boxplot(count ~ spray, data = InsectSprays, col = "pink")
boxplot(count ~ spray, data = InsectSprays, col = "yellow")
par(mfrow=c(1,1))
Verwenden Sie die Funktion grid.arrange
, um Boxplots nebeneinander in R . zu erstellen
Alternativ können wir die Funktion grid.arrange
aus dem Paket gridExtra
verwenden. grid.arrange
verhält sich ähnlich wie die Funktion par
. Dennoch ist es flexibler und intuitiver mit mehreren Plots, insbesondere mit ggplot
-Objekten. grid.arrange
nimmt eine variable Länge von ggplot
-Objekten als Startargumente. Danach können wir optionale Argumente angeben, nämlich den Parameter ncol
, der die Anzahl der Spalten angibt, die für Plots erstellt werden müssen. Das nächste Code-Snippet zeichnet zwei Boxplots nebeneinander.
library(ggplot2)
library(gridExtra)
plot1 <- ggplot(InsectSprays, aes(x = spray, y = count)) + geom_boxplot(fill = "pink")
plot2 <- ggplot(InsectSprays, aes(x = spray, y = count)) + geom_boxplot(fill = "yellow")
grid.arrange(plot1, plot2, ncol = 2)
grid.arrange
kann auch zweidimensionale geteilte Fenster erzeugen, die mit den Parametern nrow
und ncol
spezifiziert werden. Beachten Sie, dass ggplot
-Objekte zu einer Liste zusammengefasst und in Form des grobs = list(...)
-Arguments übergeben werden können. Das folgende Beispiel gibt vier Boxplots in einem Zwei-mal-Zwei-Matrix-Stil aus.
library(ggplot2)
library(gridExtra)
plot1 <- ggplot(InsectSprays, aes(x = spray, y = count)) + geom_boxplot(fill = "pink")
plot2 <- ggplot(InsectSprays, aes(x = spray, y = count)) + geom_boxplot(fill = "yellow")
plot3 <- ggplot(InsectSprays, aes(x = spray, y = count)) + geom_boxplot(fill = "orange")
plot4 <- ggplot(InsectSprays, aes(x = spray, y = count)) + geom_boxplot(fill = "cyan")
grid.arrange(plot1, plot2, plot3, plot4, nrow = 2, ncol = 2)
Ein weiterer nützlicher Parameter für die Funktion grid.arrange
ist layout_matrix
, der jeden Plot in einer benutzerdefinierten Struktur mit kombinierten Vektoren positioniert. Das Beispiel definiert drei verschiedene Plotobjekte, die in einer asymmetrischen Fensterstruktur konstruiert sind – zwei Plots oben und einer unten. Die Anzahl der Vektoren in rbind
entspricht den Fensterzeilen, und Elemente in jedem Objekt geben die Anzahl der Teile an, in die die gegebene Fensterzeile aufgeteilt werden soll. Inzwischen entsprechen die Zahlen den Argumentplots in der gleichen Reihenfolge. Wenn alle geteilten Fenster in der zweiten Reihe durch den dritten Plot belegt werden sollen, sollten alle Elemente im zweiten Vektor den Wert - 3
haben.
library(ggplot2)
library(gridExtra)
plot1 <- ggplot(InsectSprays, aes(x = spray, y = count)) + geom_boxplot(fill = "pink")
plot2 <- ggplot(mtcars, aes(x = mpg)) + geom_histogram(fill = "yellow", bins = 30)
plot3 <- ggplot(mtcars, aes(x = wt, y = mpg)) + geom_point(fill = "orange")
grid.arrange(plot1, plot2, plot3, widths = c(2, 2, 1),
layout_matrix = rbind(c(1, 2, 2), c(3, 3, 3)))
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