r - 通过apply函数生成多个ggplot箱线图

标签 r ggplot2 apply

我想知道是否可以使用应用函数生成一组类似于此嵌套循环组合生成的箱线图。

这可能是不可能/必须的,但我认为应该是可能的,我只是无法理解如何去做。

我需要能够绘制此图以查看相对于一个变量 ( mtcars$mpg ) 的 100 个因素如何进行比较

head(mtcars)

for (i in 8:11) {
    for (j in 8:11) {

        if (i != j) {

            title = paste(names(mtcars)[i], names(mtcars)[j], 
                sep = "/")

            p <- ggplot(mtcars, aes(interaction(mtcars[,i], mtcars[, j]), mpg, fill = factor(mtcars[,i]))) + geom_boxplot(alpha = I(0.7))
            p <- p + ggtitle(title) + scale_fill_hue()


        } else {

            title = paste(names(mtcars)[i])

            p <- ggplot(mtcars, aes(factor(mtcars[,i]), mpg, fill = factor(mtcars[, i]))) + geom_boxplot(alpha = I(0.7))
            p <- p + ggtitle(title) + scale_fill_hue()


        }

        print(p)
    }
} 

最佳答案

将 if 块放在函数中:

plotGG <- function(i,j) 
  {
  if (i != j) { ... } else{ ... }
 }

然后调用它:
mapply(plotGG,8:11,8:11)

它有效。

由于 ggplot 的范围问题,您的代码将无法运行.但您可以在此处查看解决方案:
Local Variables Within aes

编辑:
您可以根据需要完成包装:
multiPlotGG <- function(l1,l2) {
 mapply(plotGG,rep(l1,each = length(l2)),rep(l2,length(l1)))
}
multiPlotGG(8:11,8:11)

关于r - 通过apply函数生成多个ggplot箱线图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28489184/

相关文章:

r - 将数据帧的各个子集乘以不同的向量

r - `contrasts<-` (`*tmp*` 中的错误,值 = contr.funs[1 + isOF[nn]]) : contrasts can be applied only to factors with 2 or more levels

r - 在ggplot2中用不同的日期格式化x轴

r - 将 bool 列添加到 data.frame 中,指示特定列是否全部为 NA

r - `lme {nlme}` 中的嵌套随机效应

c++ - RcppArmadillo 和 R 3.1.3 以及 Mac Yosemite 的编译错误

r - 按均值排序的箱线图

r - 绘制具有数据子集的图层时,因子水平的顺序会发生变化

r - 直到当前行的列中唯一值的累积数量

r - R中的apply语句有问题