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 = "症状状态" )
原单变量绘图效果参考

注意:你的数据编码规则为0代表存在症状、1代表不存在,筛选统计时不要搞反取值对应关系。如果需要调整x轴症状的展示顺序,可以将symptom_type列转为因子,手动指定levels顺序即可。
内容的提问来源于stack exchange,提问作者Ronen Solomon
相关产品推荐
相关产品推荐

