You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

R-ggplot2技术问询:基于双因子拆分单因子的计数条形图绘制

嘿,刚好我之前折腾过类似的ggplot2条形图需求,这就给你一步步讲清楚怎么实现你要的效果!

核心思路

你需要的是分组并排+内部堆叠的计数条形图:每个item作为x轴类别,每个item下对应group=0和group=1两个并排条形,而每个条形内部又按response_cat(0/1)堆叠展示不同响应的计数。用ggplot2的geom_bar配合合适的位置参数就能轻松搞定。

具体代码实现

首先咱们先模拟一份和你变量匹配的测试数据,方便你直接跑通代码:

# 加载必要包
library(tidyverse)

# 模拟测试数据(和你的变量结构完全匹配)
set.seed(123) # 设置随机种子保证结果可复现
test_data <- tibble(
  item = sample(c("LY1", "GN6", paste0("ITEM", 1:18)), 500, replace = TRUE),
  group = sample(c(0, 1), 500, replace = TRUE),
  response_cat = sample(c(0, 1), 500, replace = TRUE, prob = c(0.6, 0.4))
) %>%
  # 把分类变量转成因子,让ggplot处理更友好
  mutate(
    group = factor(group, labels = c("Group 0", "Group 1")),
    response_cat = factor(response_cat, labels = c("No Response", "Response"))
  )

接下来是核心绘图代码,关键参数都加了注释:

ggplot(test_data, aes(x = item, fill = response_cat)) +
  # 绘制分组并排+内部堆叠的条形图
  geom_bar(aes(group = group), 
           position = position_dodge(width = 0.8), # 控制同item下两个group条形的间距
           stat = "count") + # 统计每个组合的观测数,正好对应你要的计数分布
  # 自定义填充色(可选,按需调整)
  scale_fill_brewer(palette = "Set2") +
  # 调整x轴标签,避免20个item的标签重叠
  theme(axis.text.x = element_text(angle = 45, hjust = 1)) +
  # 添加清晰的标题和轴标签
  labs(
    x = "Item Code",
    y = "Count",
    fill = "Response Category",
    title = "Response Distribution by Item and Group",
    subtitle = "Each item has two bars (Group 0/1), stacked by response status"
  )
关键参数解释
  • aes(x = item, fill = response_cat):指定x轴为item,用response_cat的不同取值填充颜色(对应条形内部的堆叠部分)。
  • aes(group = group):告诉ggplot要按group拆分每个item下的条形,实现同item内两个分组并排的效果。
  • position = position_dodge(width = 0.8):控制同item下两个group条形的并排间距,数值越大间距越宽,可根据视觉效果调整。
  • stat = "count":默认统计每个组合的观测数,完全符合你要展示计数分布的需求。
额外优化建议

因为你有20个item,可以再加两个小优化让图表更易读:

  1. 把item按总计数排序:
# 按item的总观测数从少到多排序
test_data <- test_data %>%
  mutate(item = fct_reorder(item, item, .fun = length))
  1. 如果x轴标签还是挤,换成横向条形图:
# 在绘图代码末尾加上这一行即可
coord_flip()

内容的提问来源于stack exchange,提问作者Petr Palášek

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 03:30:24