【问题标题】:Multiple boxplots from the same dataset来自同一数据集的多个箱线图
【发布时间】:2015-07-10 15:43:08
【问题描述】:

我正在寻找一种简化下面代码的方法; 我有 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)

那里有什么可以做的吗?

谢谢, 迭戈

【问题讨论】:

    标签: r ggplot2


    【解决方案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))
    

    【讨论】:

    • 我会试试你的代码,谢谢。是不是我不想用face_grid;是我理解你只能在元数据上使用“方面”的方式,比如假设我在我的数据框中有一个“类别”,而不是我能够使用它。我错了吗?
    • 错误:找不到函数“dlply”:我确实安装了 dlply 包,我错过了什么吗?
    • 对不起;我忘了添加“库(plyr)”。你对这些方面并没有错;我的代码还展示了一种通过融合数据来获取类别变量的方法。
    【解决方案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)
    

    【讨论】:

    • 谢谢,但我不知道如何在不复制\粘贴 p1 的代码的情况下使用此代码绘制 2 个不同的度量
    • @Diego 您可以通过将 ggplot 代码包装到 for 循环(或应用)并使用 aes_string 来创建绘图。
    猜你喜欢
    • 2015-12-20
    • 1970-01-01
    • 2022-12-03
    • 2021-11-15
    • 2016-10-30
    • 1970-01-01
    • 1970-01-01
    • 2013-10-29
    • 1970-01-01
    相关资源
    最近更新 更多