[英]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.