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

R ggplot2中如何使用geom_bar绘制多变量计数柱状图

ggplot2 多症状变量计数柱状图实现方法

你的原始数据集为宽格式结构,每个症状单独占一列,无法直接映射到x轴做多分类计数,需要先将数据转换为长格式,再调用geom_bar绘图即可。

实现步骤

  • 加载依赖包:除ggplot2外,需加载tidyr做长宽格式转换、dplyr做数据处理
  • 收拢所有症状列为长格式:生成统一的症状名称分类列、对应症状取值列
  • 根据统计需求筛选数据后绘图

完整代码示例

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

# 宽格式转长格式:将cols参数内的变量名替换为你数据集里实际的所有症状列名
symptom_data_long <- tested_individuals %>%
  pivot_longer(
    cols = c(Cough, Fever, SoreThroat, Headache, Fatigue), 
    names_to = "symptom_type",
    values_to = "symptom_status"
  )

# 统计各症状存在(取值为0)的人数,绘制柱状图
ggplot(symptom_data_long %>% filter(symptom_status == 0), 
       aes(x = symptom_type)) +
  geom_bar(stat = "count", fill = "steelblue") +
  labs(
    x = "症状名称",
    y = "存在对应症状的人数"
  )

# 可选拓展:每个症状分组展示存在/不存在症状的人数
ggplot(symptom_data_long, 
       aes(x = symptom_type, 
           fill = factor(symptom_status, 
                         levels = c(0,1), 
                         labels = c("存在症状", "不存在症状")))) +
  geom_bar(stat = "count", position = "dodge") +
  labs(
    x = "症状名称",
    y = "人数",
    fill = "症状状态"
  )

原单变量绘图效果参考

单症状Cough计数柱状图

注意:你的数据编码规则为0代表存在症状、1代表不存在,筛选统计时不要搞反取值对应关系。如果需要调整x轴症状的展示顺序,可以将symptom_type列转为因子,手动指定levels顺序即可。

内容的提问来源于stack exchange,提问作者Ronen Solomon

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 13:12:18