[英]R Plot boxplots from different Dataframes in one plot
我即將分析一些數據並堅持可視化,現在無法取得任何進展。
所以,這里有一些類似於我使用的虛擬數據幀:
df1<-data.frame(replicate(15,sample(0:200,1500,rep=TRUE)))
df2<-data.frame(replicate(15,sample(0:200,1500,rep=TRUE)))
df3<-data.frame(replicate(36,sample(0:200,1500,rep=TRUE)))
df4<-data.frame(replicate(9,sample(0:200,1500,rep=TRUE)))
問題如下:
我想將 plot 每個 Dataframe 的箱線圖作為一個整體彼此相輔相成:以便 df1、df2、df3 和 df4 的箱線圖在一個 Z32FA6E1B78A96D4024CZAA2E 中彼此相鄰。 我不想在這個箱線圖中有每個站,但 dataframe 是一個整體。
每個 dataframe 的箱線圖工作順利:
boxplot(df1, las=2)
boxplot(df2, las=2)
boxplot(df3, las=2)
boxplot(df4, las=2)
然后我嘗試將它們組合在一起 ggplot:
ggplot(data = NULL, aes(x, y))+
geom_boxplot(data = df1, aes())+
geom_boxplot(data = df2, aes())+
geom_boxplot(data = df3, aes())+
geom_boxplot(data = df4, aes())
但是在這里我收到一條錯誤消息
Fehler in FUN(X[[i]], ...): Objekt 'x' nicht gefunden
aes() 有問題,這很明顯,但我不知道我可以為 x 和 y 選擇什么。 也許我只是以一種過於復雜的方式思考,但是是的......我缺少一些鏈接。
所以我希望一切都是可以理解的,如果信息缺失,那么只要問我就會添加它!
也許這就是你要找的。 要通過 ggplot2 復制基本 R 箱線圖,您可以
lapply
的長格式和一個助手 function
tidyr::pivot_longer
將 df 轉換為長格式forcats::fct_inorder
將具有變量名稱的列轉換為因子並保留原始 df 中的正確順序。dplyr::bind_rows
將長 df 綁定到一個 dataframe 中,其中我添加了一個 id 變量library(ggplot2)
library(tidyr)
library(dplyr)
df1<-data.frame(replicate(15,sample(0:200,1500,rep=TRUE)))
df2<-data.frame(replicate(15,sample(0:200,1500,rep=TRUE)))
df3<-data.frame(replicate(36,sample(0:200,1500,rep=TRUE)))
df4<-data.frame(replicate(9,sample(0:200,1500,rep=TRUE)))
df <- list(df1, df2, df3, df4)
to_long <- function(x) {
pivot_longer(x, everything()) %>%
mutate(name = forcats::fct_inorder(name))
}
df <- lapply(df, to_long)
df <- bind_rows(df, .id = "id")
ggplot(df, aes(name, value)) +
geom_boxplot() +
facet_wrap(~id, scales = "free_x")
編輯要獲得 dataframe 的所有列的箱線圖和並排的箱線圖,您可以
ggplot(df, aes(id, value)) +
geom_boxplot()
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.