r - 按组划分的真/假值计数条形图(斜线图)

标签 r graph ggplot2 bar-chart

我对 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) 都是 bool 值/逻辑值。

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

使用:
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 的建议后创建的)
enter image description here

最佳答案

是的,这是可能的,你只需要先 reshape 你的数据,然后你就可以使用 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")

关于r - 按组划分的真/假值计数条形图(斜线图),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43634136/

相关文章:

r - 在 R 和 gnuplot 中绘制大量 x、y、z 点进行 3D 绘图,并在每个时间步提取 bmp/gif/png 文件

c++ - 返回 Boost Graph 中连接的组件子图的列表

c++ - 相邻列表 self 引用Graph对象

r - 如何以编程方式从ggplot中的一系列行中分离出一行

r - 在ggplot2中制作带有离散x轴的线图

r - ddply 在 R : for each group, 中找到特定变量的出现百分比

r - 按组填写字符列中的缺失值(nacof/nocb)

C++ 和 R 接口(interface),获取输出

r - 计算每个网格框中的 UNIQUE 点

java - 图 edu.uci.ics.jung 中距顶点最远的 K 个点