【问题标题】:ggplot/ally boxplots using for loop使用 for 循环的 ggplot/ally 箱线图
【发布时间】:2015-11-09 02:30:06
【问题描述】:

我正在尝试绘制 ggplot 矩阵,箱线图版本工作得很好,但是当我尝试对 ggplot 做同样的事情时,我失败了

箱线图版本:

par(mfrow=c(3, 3))
for (scale in c("POMS",
                "POMS_post",
                "DERS",
                "DERS_post",
                "REAPPRAISAL",
                "REAPPRAISAL_POST",
                "NEGATIV",
                "NEGATIVE_POST")) {
        boxplot(kata1[, scale] ~ Skupina, data=kata1, ylab=scale)
}

箱线图版结果:

ggplot 版本:

# Testing
for (scale in c("POMS",
                "POMS_post",
                "DERS",
                "DERS_post",
                "REAPPRAISAL",
                "REAPPRAISAL_POST",
                "NEGATIV",
                "NEGATIVE_POST")) {
        ggally_box(kata1, aes(Skupina, kata1[, scale])) # This does not work...
}

我觉得应该没那么难,但我卡住了。

感谢您的帮助!

【问题讨论】:

  • 使用aes_string("Skupina", scale)
  • 您可能必须在循环中明确使用print
  • 谢谢,带有 print 语句的 aes_string 可以很好地工作,但是它会分别打印出每个图(一次一个图),而不是将其绘制成矩阵。关于为什么的任何想法?
  • 因为 ggplot 在设置 par(mfrow) 时效果不佳。您可以查看 gridExtra-package 并执行 grid.arrange。您还可以考虑融合您的数据,并使用 facet_wrap。
  • 谢谢你,这成功了。

标签: r loops ggplot2 boxplot ggally


【解决方案1】:

在玩了一会儿之后,这解决了,尽管添加所有这些情节[[i]]是一种痛苦的方法。谢谢你的帮助。

plots = NULL
for (scale in c("POMS",
                "POMS_post",
                "DERS",
                "DERS_post",
                "REAPPRAISAL",
                "REAPPRAISAL_POST",
                "NEGATIV",
                "NEGATIVE_POST")) {
        plots[[scale]] = ggally_box(kata1, aes_string("Skupina", scale, color = "Skupina"), 
                                    outlier.colour = "red",
                                    outlier.shape = 13)
        }

grid.arrange(plots[[1]],plots[[2]],
             plots[[3]],plots[[4]],
             plots[[5]],plots[[6]],
             plots[[7]],plots[[8]], ncol = 2)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-26
    • 2021-12-27
    • 1970-01-01
    • 2021-06-13
    • 2021-11-10
    • 1970-01-01
    相关资源
    最近更新 更多