在RStudio中绘制主题出现次数条形图的技术求助
解决方案
步骤1:提取主题哑变量并统计频次
从生成的哑变量数据框中筛选出主题相关列,计算每列的求和值(即对应主题的出现次数),再整理成适合绘图的长格式数据:
# 加载所需工具包 library(fastDummies) library(tidyverse) # 基于哑变量数据统计主题频次 theme_counts <- Alldata2 %>% select(starts_with("Themes_")) %>% # 筛选所有主题哑变量列 summarise(across(everything(), sum)) %>% # 计算每个主题的总出现次数 pivot_longer(cols = everything(), names_to = "theme", values_to = "count") %>% # 转换为长格式数据 mutate(theme = str_remove(theme, "Themes_")) %>% # 移除列名前缀,还原原始主题名 arrange(desc(count)) # 按频次从高到低排序
步骤2:绘制条形图
使用ggplot2绘制条形图,针对52个主题的场景,通过翻转坐标轴避免标签重叠:
ggplot(theme_counts, aes(x = reorder(theme, count), y = count)) + geom_bar(stat = "identity", fill = "#3498db") + labs(x = "主题", y = "出现次数", title = "各主题出现频次条形图") + coord_flip() + # 翻转坐标轴,优化多主题的可读性 theme_minimal() + theme(axis.text.y = element_text(size = 7)) # 调整轴标签字号,适配大量主题
补充提示
- 如果哑变量列名不是
Themes_开头,可根据实际生成的列名调整select中的筛选规则(比如用contains(",")或直接指定列范围)。 - 若需要突出高频主题,可在
geom_bar中添加颜色映射,例如aes(fill = count),再配合scale_fill_gradient(low = "#e8f4f8", high = "#2980b9")设置渐变色彩。
内容的提问来源于stack exchange,提问作者Diego333
相关产品推荐
相关产品推荐

