簡體   English   中英

來自同一數據集的多個箱線圖

[英]Multiple boxplots from the same dataset

我正在尋找一種簡化以下代碼的方法; 我想根據質量繪制9種不同的度量值,並試圖避免對代碼進行9次粘貼和粘貼(甚至不得不編寫9次函數來繪制和調用函數):

p1<- ggplot(aes(x=quality, y = alcohol), data = df) + geom_boxplot()+  stat_summary(fun.y=mean,geom = 'point', shape = 4)
p2<- ggplot(aes(x=quality, y = pH), data = df) + geom_boxplot()+  stat_summary(fun.y=mean,geom = 'point', shape = 4)
grid.arrange(p1,p2, ncol=1)

在此處輸入圖片說明

有什么可以做的嗎?

謝謝迭戈

在由plyr在融化的數據幀上生成的繪圖列表上使用do.call。 (我假設您不想在融化的數據上使用facet_grid是有原因的)

#generate some data

data <- data.frame(id=1:500, quality=sample(3:10,replace=TRUE,size=500))

for(i in 1:9){
  data[,paste0("outcome_",i)]<-rnorm(500)
}

#melt it
melt_data <- melt(data,id.vars=c("id","quality"))
head(melt_data)


library(ggplot2)
library(gridExtra)

#generate a list of plots
plots <- dlply(melt_data,.(variable),function(chunk){
  ggplot(data=chunk, aes(x=factor(quality), y = value)) + geom_boxplot()+  
    stat_summary(fun.y=mean,geom = 'point', shape = 4) + 
    #label y axis correctly
    labs(y=unique(chunk$variable)
    )
})


do.call(grid.arrange,c(plots,ncol=2))

在此處輸入圖片說明

您可以使用do.call

library(ggplot2)
p1 <- ggplot(airquality, aes(x = Ozone, y = Solar.R)) + 
    theme_bw() +
    geom_point()

out <- list(p1, p1)

library(gridExtra)
do.call("grid.arrange", out)

暫無
暫無

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

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