如何用R为多选项答案创建分地区分组条形图
多选项问卷答案的地区对比条形图实现方案
需求概述
需要可视化某城市Gasabo、Kicukiro、Nyarugenge三个地区受访者的多选项问卷答案(问卷允许多选)。已完成初步dplyr数据处理,对应数据集第6列(District_of_stay)和第29列(Q19_Application_Barriers_to_Ogd_Usage),需完成后续可视化步骤,并确认能否实现目标示例图样式。
数据处理补全
你当前的dplyr代码未完成,需补充分组清理逻辑,同时建议过滤缺失值避免无效数据干扰:
library(dplyr) Barrier_ogd <- ogd_data_new %>% select(District_of_stay, Q19_Application_Barriers_to_Ogd_Usage) %>% # 过滤缺失的地区或选项值 filter(!is.na(District_of_stay), !is.na(Q19_Application_Barriers_to_Ogd_Usage)) %>% group_by(District_of_stay, Q19_Application_Barriers_to_Ogd_Usage) %>% summarise(count = n(), .groups = "drop") # 自动取消分组,避免后续操作报错
可视化步骤(基于ggplot2)
完全可以实现常见的多选项对比条形图样式(包括分组、堆叠两种主流样式,覆盖多数示例图需求),具体实现如下:
1. 加载绘图依赖包
library(ggplot2)
2. 分组条形图(同类型障碍按地区并排展示)
适合直观对比同一障碍在不同地区的受访者数量差异:
ggplot(Barrier_ogd, aes(x = District_of_stay, y = count, fill = Q19_Application_Barriers_to_Ogd_Usage)) + geom_bar(stat = "identity", position = position_dodge(width = 0.8), width = 0.7) + # 添加条形顶部数值标签 geom_text(aes(label = count), position = position_dodge(width = 0.8), vjust = -0.5, size = 3) + # 自定义标题与标签 labs(title = "各地区OGD使用障碍分布", x = "地区", y = "受访者数量", fill = "障碍类型") + theme_minimal() + # 旋转x轴标签避免重叠 theme(axis.text.x = element_text(angle = 45, hjust = 1))
3. 堆叠条形图(单个地区内堆叠不同障碍类型)
适合展示单地区内各障碍的数量占比与分布:
ggplot(Barrier_ogd, aes(x = District_of_stay, y = count, fill = Q19_Application_Barriers_to_Ogd_Usage)) + geom_bar(stat = "identity") + # 添加堆叠位置的数值标签 geom_text(aes(label = count), position = position_stack(vjust = 0.5), size = 3) + labs(title = "各地区OGD使用障碍分布", x = "地区", y = "受访者数量", fill = "障碍类型") + theme_minimal() + theme(axis.text.x = element_text(angle = 45, hjust = 1))
样式自定义适配示例图
如果示例图有特定风格(如配色、标签位置、背景样式等),可通过以下方式调整:
- 自定义配色:使用
scale_fill_manual(values = c("#FF6B6B", "#4ECDC4", "#45B7D1"))替换默认填充色 - 修改主题:将
theme_minimal()替换为theme_classic()或自定义theme()参数(如panel.background、plot.title) - 调整细节:修改条形宽度、标签大小、标题字体等参数
内容的提问来源于stack exchange,提问作者John Keya
相关产品推荐
相关产品推荐

