【问题标题】:Simplify multiple boxplots in one graph在一张图中简化多个箱线图
【发布时间】:2020-12-03 13:26:36
【问题描述】:

我有一个包含 17 个问题 (Q1 - Q17) 和一个分类变量 (Region) 的数据集。

> df[, c("Region", QUESTIONS)]
# A tibble: 963 x 18
   Region     Q1    Q2    Q3    Q4    Q5    Q6    Q7    Q8    Q9   Q10   Q11   Q12   Q13   Q14   Q15
   <chr>   <int> <int> <int> <int> <int> <int> <int> <int> <int> <int> <int> <int> <int> <int> <int>
 1 USA         0     1     0     0     0     0     0     0     0     0     0     0     0     0     0
 2 USA         8     8     8     8     6     8     8     0     5    10     7     0     0    10     8
 3 USA         9     8     7    10     8     4     8     0     5     8     8     8     2     7     6
 4 USA         4     2     5     4     3     3     2     0     1     0     0     0     3     2     0
 5 USA         2     6     7     5     6     2     9     0     6     7     3     0     0     8     5
 6 USA         6     6     8     1     2     0     4     0     0     4     0     6    10     0     1
 7 USA         5     2     7     8    10     9    10     8     6    10     1    10     4     6    10
 8 IE          6     6     5     5     6     5     6     3     6     7     6     6     7     7     4
 9 OCEANIA     8     8     6    10     5    10     5     1    10     4     0     1    10     9    10
10 USA         3     2     2     7     3     1     2     0     8     3     3     1     0     8     8
# ... with 953 more rows, and 2 more variables: Q16 <int>, Q17 <int>

我想跨区域比较答案,所以我先融化 df,然后使用 ggplot 创建一个箱线图。

df1 ggplot(data=df1, aes(x=variable, y=value, fill=Region)) + geom_boxplot()

不幸的是,有 17 个问题和 13 个区域,箱线图非常繁忙,几乎无法理解。我怎样才能简化它(比如只绘制平均值和 +/-1 标​​准误差)以便它清晰易读。或者,我如何生成 17 组箱线图(每个问题一个,并且我确实需要所有 17 个问题),每个箱线图的 13 个区域都是可见的?

真诚的

托马斯·飞利浦

【问题讨论】:

    标签: r dataframe ggplot2 boxplot


    【解决方案1】:

    您可能想使用facet_wrap()。这里我用一些简化的假数据来给你思路。

    library(dplyr)
    library(tidyr)
    library(ggplot2)
    set.seed(12234)
    df <- data.frame(Region = sample(LETTERS[1:10], 100, TRUE),
                     Q1 = rpois(100, 4),
                     Q2 = rpois(100, 3),
                     Q3 = round(runif(100, 1, 10)),
                     Q4 = round(runif(100, 1, 10)),
                     Q5 = round(10 * rnorm(100)))
    df %>% pivot_longer(cols = -Region, names_to = "Question", values_to = "Value") %>%
      ggplot() +
      geom_boxplot(aes(x = Region, y = Value, fill = Region)) + 
      facet_wrap("Question")
    

    【讨论】:

    • 您可以使用facet_wrap()nrowncol 参数来控制绘图的排列方式。
    • 这太棒了 - 谢谢。我不知道 facet_wrap() 和 facet_grid()。我现在正在为最后一件事苦苦挣扎 - 对图进行排序:有 17 个问题,我希望看到按顺序排列的图,即 Q1、Q2、.Q3 ..... 相反,它们是按字典顺序排列的,即 Q1、Q10、Q11 ,...Q17,Q2,Q3,...,Q9。我尝试对我的数据框进行排序并查看了各种文档和博客文章,但未能解决这个问题。麻烦您指点一下解决方案吗?
    • 解决了 - 我必须将 Q1,....Q17 定义为一个因素。现在就像一个魅力。再次感谢!
    猜你喜欢
    • 2013-01-14
    • 2023-01-31
    • 2023-03-24
    • 2015-08-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多