我想要在同一圖上的資料中包含所有三個時間點的箱線圖
資料:
df<-
structure(list(ID = c("ED_001", "ED_002", "ED_003", "ED_004",
"ED_005"), Color = c("Black", "White", "Black", "Black", "White"
), Data_t1 = c(150, 159, 160, 154, 187), Data_t2 = c(123, 124,
125, 126, 140), Data_t3 = c(133, 135, 145, 150, 153)), class = c("spec_tbl_df",
"tbl_df", "tbl", "data.frame"), row.names = c(NA, -5L), spec = structure(list(
cols = list(ID = structure(list(), class = c("collector_character",
"collector")), Color = structure(list(), class = c("collector_character",
"collector")), Data_t1 = structure(list(), class = c("collector_double",
"collector")), Data_t2 = structure(list(), class = c("collector_double",
"collector")), Data_t3 = structure(list(), class = c("collector_double",
"collector"))), default = structure(list(), class = c("collector_guess",
"collector")), skip = 1), class = "col_spec"))
我可以很容易地繪制第一個時間點:
df %>%
ggplot(. , aes(x = as.factor(Color), y = Data_t1))
geom_boxplot()
但是我如何也繪制 Data_t2 和 Data_t3?我不認為 facet_wrap 是正確的方法。我是否按時間點分組,如果是,如何?如果可能的話,我更喜歡 dplyr 解決方案,而不是將資料融入長格式,因為我總是不喜歡長格式。謝謝
uj5u.com熱心網友回復:
看起來您已經注意到使用長格式的資料最容易。這是使用tidyr. 然后我使用一個方面來分隔不同的組。你使用什么方面取決于你想如何比較它們。
library(tidyverse)
df %>%
pivot_longer(starts_with("Data")) %>%
ggplot(. , aes(y = value, x= Color, group = Color))
geom_boxplot()
facet_grid(~name)

如果您真的希望它們都在同一個圖上而沒有分面,您可以創建一個虛擬變數。您可以使用factors 來按您的意愿訂購它們。
df %>%
pivot_longer(starts_with("Data")) %>%
mutate(group_var = paste0(name, " - ", Color)) %>%
ggplot(. , aes(y = value, x= group_var, group = group_var))
geom_boxplot()

由reprex 包于 2022-01-14 創建(v2.0.1)
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/416794.html
標籤:
