簡體   English   中英

R Plot 箱線圖來自一個 plot 中的不同數據框

[英]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 箱線圖,您可以

  1. 把你的df放在一個列表中
  2. 將 df 轉換為我使用lapply的長格式和一個助手 function
    • 使用tidyr::pivot_longer將 df 轉換為長格式
    • 使用forcats::fct_inorder將具有變量名稱的列轉換為因子並保留原始 df 中的正確順序。
  3. 使用例如dplyr::bind_rows將長 df 綁定到一個 dataframe 中,其中我添加了一個 id 變量
  4. 在數據爭吵之后,通過 ggplot2 制作箱線圖是一項簡單的任務,因此我選擇了 df 刻面。
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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM