我是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)都是布尔值/逻辑值。
使用:
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个组(如上图所示)的5个“批处理”值,并且在每个组中我需要一个单独的栏,其中包含5列中的每一列的计数(AE)。这可行吗?
答案 0 :(得分:3)
是的,您只需要先重塑数据,然后使用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")