ggplot多个二进制变量,由另一个二进制变量分组

ggplot multiple binary variables, grouped by another binary varaible

你好,我有很多这样的二进制变量。我想可视化每个条形变量的计数,并通过组变量中的结果将它们分组在一个 ggplot 条形图中。鉴于对 bar 变量的响应不是相互排斥的,我不能将它们重新编码为一个分类变量,这是我遇到一些问题的地方。

酒吧 1 酒吧 2 酒吧 3
1 0 1 1
1 1 1 0
1 1 0 0
1 0 1 1

你想要这个吗?

df <- read.table(header = T, text = "bar1   bar2    bar3    groups
1   0   1   1
1   1   1   0
1   1   0   0
1   0   1   1")

library(tidyverse)

df %>% pivot_longer(starts_with('bar')) %>%
  group_by(groups, name) %>%
  summarise(value = sum(value), .groups = 'drop') %>%
  ggplot() +
  geom_col(aes(x = name, y = value, fill = as.factor(groups)), position = 'dodge')


如果要删除 0,请使用过滤器

df %>% pivot_longer(starts_with('bar')) %>%
  group_by(groups, name) %>%
  summarise(value = sum(value), .groups = 'drop') %>%
  filter(value != 0) %>%
  ggplot() +
  geom_col(aes(x = name, y = value, fill = as.factor(groups)), position = 'dodge')

reprex package (v2.0.0)

创建于 2021-06-11