【问题标题】:Barchart of count of true/false values by group (dodged graphs)按组显示真/假值计数的条形图(闪避图)
【发布时间】:2017-09-23 20:28:21
【问题描述】:

我是 R 和 ggplot 的新手。而且我不确定我想要的是否可行。

这是我的(部分)数据:

> mdf
   Batch     A     B     C     D     E
1      G FALSE  TRUE FALSE  TRUE FALSE
2      G FALSE FALSE FALSE  TRUE FALSE
3      G FALSE  TRUE FALSE FALSE FALSE
4      G FALSE FALSE FALSE  TRUE FALSE
5      G FALSE FALSE  TRUE  TRUE  TRUE
6      G FALSE FALSE  TRUE  TRUE  TRUE
7      G FALSE FALSE FALSE FALSE  TRUE
8      G FALSE FALSE  TRUE  TRUE  TRUE
9      G FALSE FALSE FALSE  TRUE FALSE
10     G FALSE FALSE FALSE  TRUE  TRUE
11     G FALSE FALSE FALSE FALSE  TRUE
12     G FALSE FALSE FALSE  TRUE FALSE
13     G FALSE FALSE FALSE  TRUE FALSE
14     G FALSE FALSE FALSE  TRUE FALSE
15     G FALSE FALSE FALSE  TRUE FALSE
16     G FALSE FALSE FALSE  TRUE FALSE
17     G FALSE FALSE  TRUE  TRUE FALSE
18     G FALSE FALSE  TRUE  TRUE  TRUE
19     A FALSE FALSE FALSE  TRUE  TRUE
20     A FALSE FALSE FALSE  TRUE  TRUE

其中 Batch 可以是 A、B、G、R、S 中的任何一个,而其他列 (A-E) 都是布尔值/逻辑值。

我能够创建一个图表来计算 B 列中的 TRUE 值,如下所示:

使用:

ggplot(data = mdf, aes(x = Batch, y = as.numeric(B), fill = Batch))
    + stat_summary(fun.y = sum, geom = "bar")

同样,我可以轻松地为其他列(A、C、D、E)再创建 4 个图表。

但是,是否可以将这 5 个图表“合并”在一个图表中?换句话说,我想要一个图表,其中我将有 5 个组(如上图)用于 'Batch' 的 5 个值,并且在每个组中,我需要一个单独的条形图,其中包含 5 列中的每一列的计数(AE)。这可行吗?

更新:这是我正在寻找的(在使用@mtoto 的建议后创建)

【问题讨论】:

  • 阅读“从宽变长”和 position=dodge

标签: r graph ggplot2 bar-chart


【解决方案1】:

是的,这是可能的,您只需要先重塑数据,然后您可以使用position = "dodge" 为每个key 绘制一个条形图。与tidyr

library(tidyr)
library(dplyr)
library(ggplot2)

mdf %>% gather(key, value, -Batch) %>%
  ggplot(.,(aes(Batch, as.numeric(value), fill = key))) +
  stat_summary(fun.y = sum, geom = "bar", position = "dodge")

【讨论】:

  • 感谢您的快速和好的回答。我建议您编辑数据框名称以与问题中的名称保持一致(应该是“mdf”,而不是“df”)。
  • 您是否也知道如何制作出这种布尔向量的饼图? data = data.frame(val = sample(size = 50, x = c(T,F), replace = T))
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-02-01
  • 1970-01-01
  • 2022-10-14
  • 1970-01-01
  • 2016-01-09
相关资源
最近更新 更多