在 R 中建立並排箱線圖

Jinku Hu 2023年1月30日 2021年7月16日
  1. 在 R 中使用 par 函式建立並排箱線圖
  2. 在 R 中使用 grid.arrange 函式建立並排箱線圖
在 R 中建立並排箱線圖

本文將介紹在 R 中建立並排箱線圖的方法。

在 R 中使用 par 函式建立並排箱線圖

par 功能可用於設定圖形引數。呼叫不帶引數或 no.readonly = TRUE 的函式會檢索所有圖形引數。在這種情況下,我們使用 mfrow 引數來構建並排箱線圖。mfrowc(nr, nc) 向量中傳遞,隨後的圖繪製為 nr-by-nc 陣列。以下示例程式碼從 InsectSprays 資料集構建了兩個箱線圖,其中相應地繪製了 countspray 列。儘管對 boxplot 函式的深入審查超出了本文的範圍,但它需要 col 引數來指定盒體的顏色。請注意,最後一個 par(mfrow=c(1,1)) 函式呼叫用於將佈局重置為預設設定。

par(mfrow=c(1,2))
boxplot(count ~ spray, data = InsectSprays, col = "pink")
boxplot(count ~ spray, data = InsectSprays, col = "yellow")
par(mfrow=c(1,1))

並排箱線圖 r 1

在 R 中使用 grid.arrange 函式建立並排箱線圖

或者,我們可以使用 gridExtra 包中的 grid.arrange 函式。grid.arrange 的行為類似於 par 函式。儘管如此,它對於多個繪圖更加靈活和直觀,尤其是 ggplot 物件。grid.arrange 將可變長度的 ggplot 物件作為起始引數。之後,我們可以指定可選引數,即表示需要為繪圖建立的列數的 ncol 引數。下一個程式碼片段繪製兩個並排的箱線圖。

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)

並排箱線圖 r 2

grid.arrange 還可以建立使用 nrowncol 引數指定的二維拆分視窗。請注意,ggplot 物件可以組合成一個列表,並以 grobs = list(...) 引數的形式傳遞。以下示例以 2×2 矩陣樣式輸出四個箱線圖。

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)

並排箱線圖 r 3

grid.arrange 函式的另一個有用引數是 layout_matrix,它將每個圖定位在由組合向量指定的自定義結構中。該示例定義了以非對稱視窗結構構建的三個不同繪圖物件 - 頂部兩個繪圖和一個下方繪圖。rbind 中向量的數量對應於視窗行,每個物件中的元素指定給定視窗行應該分成的部分數。同時,數字對應於相同順序的引數圖。如果第二行上的所有拆分視窗都應被第三個圖佔據,則第二個向量中的所有元素都應具有值 - 3

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

並排箱線圖 r 4

Author: Jinku Hu
Jinku Hu avatar Jinku Hu avatar

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

相關文章 - R Plot