簡體   English   中英

在使用庫的reorder()函數時,如何循環遍歷變量以生成一堆ggplot2箱形圖?

[英]How do I loop through variables to make a bunch of ggplot2 boxplots while using the library's reorder() function?

我使用此代碼制作一個ggplot箱線圖,顯示每個System Score方差,按中位數Score排序。

ggplot(
  muhData, 
  aes(
    x=reorder(System, -Score, FUN=median), 
    y=Score
  )
) + geom_boxplot()

我想對其他10個變量執行相同的操作。 我只是嘗試將列名放在一個數組中( arrayOfColumnNames <- c(Score, Size, Temperature) ),但這沒有用。

我正在尋找一堆單獨的箱線圖,而不是一個ggplot上的很多箱線圖。

我該怎么辦?

我不確定我是否正確理解了您想要的內容,但請看以下內容:

library(ggplot2)
#toy data
system<-sample(c("a","b","c"),100, replace=TRUE)
var1<-rnorm(100)
var2<-rnorm(100)
var3<-rnorm(100)
data<-data.frame(system,var1,var2,var3)

plot_list<-list()
for (i in 1:3){     
#save plots as single objects
assign(paste0("plot",i),ggplot()+geom_boxplot(aes(x=reorder(system,get(names(data)[i+1])),y=get(names(data)[i+1])))) 
#or all together in a list
plot_list[[i]]<-ggplot()+geom_boxplot(aes(x=reorder(system,get(names(data)[i+1]),median),y=get(names(data)[i+1])))
}

該解決方案基於get功能。 它以字符串作為輸入,並查看是否存在具有相同名稱的變量。 如果存在,它將給出此變量。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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