使用ggplot2绘制高频双词短语水平条形图技术求助
实现双词短语频率水平条形图的解决方案
没问题,这就帮你搞定!我们用tidyverse工具链(dplyr+ggplot2)就能轻松实现需求,步骤如下:
1. 统计高频双词短语
首先我们需要从你的数据里统计每个双词短语的出现次数,筛选出排名前10(或15)的条目:
# 加载所需包(如果没装先运行 install.packages(c("dplyr", "ggplot2", "forcats"))) library(dplyr) library(ggplot2) library(forcats) # 统计频率并筛选前10个(要改15的话把n=10改成n=15即可) top_bigrams <- bigrams_joined %>% count(bigrams, sort = TRUE) %>% # 按双词短语分组计数,降序排列 slice_head(n = 10)
2. 绘制水平条形图
接下来用ggplot2绘制水平条形图,关键是要让y轴的短语按频率从高到低排列(默认是字母序,不符合我们的需求):
ggplot(top_bigrams, aes(x = n, y = fct_reorder(bigrams, n))) + geom_col(fill = "#3498db") + # geom_col等价于geom_bar(stat="identity"),更简洁 labs( title = "出现频率最高的10个双词短语", x = "出现次数", y = "双词短语" ) + theme_minimal() + # 自定义主题样式,让图表更美观 theme( plot.title = element_text(hjust = 0.5, size = 14, face = "bold"), axis.text.y = element_text(size = 11), axis.title.x = element_text(size = 12), axis.title.y = element_text(size = 12) )
小提示:
- 如果你的双词短语存在大小写不一致的情况(比如"In Practice"和"in practice"被当成不同条目),可以在
count之前加一步统一格式:mutate(bigrams = str_to_lower(bigrams))(需要加载stringr包,library(stringr)) - 填充色、主题样式都可以根据你的喜好自由调整,比如把
fill改成你喜欢的颜色代码,或者换用theme_bw()等其他主题。
内容的提问来源于stack exchange,提问作者Davide Lorino




