如何用ggplot2将WhatsApp对话中bla/fu词可视化为双色条形图
用ggplot2绘制WhatsApp对话词类双色条形图
1. 数据预处理
先把你的WhatsApp对话内容转换成结构化数据框,提取每个词的类型和它在对话中的位置:
# 替换成你实际的对话内容列表 conversation <- c("bla", "<indig>fu</indig>", "bla", "bla", "<indig>fu</indig>", "bla") # 识别每个条目是"bla"还是"fu" word_type <- ifelse(grepl("<indig>fu", conversation), "fu", "bla") # 生成包含位置和类型的数据框 df <- data.frame( position = seq_along(conversation), type = word_type )
2. 绘制双色条形图
用ggplot2生成紧密排列的条形图,不同颜色对应两类词,直观展示分布:
library(ggplot2) ggplot(df, aes(x = position, y = 1, fill = type)) + geom_col(width = 1) + # 条形宽度设为1,让条目紧密衔接 scale_fill_manual(values = c("bla" = "#808080", "fu" = "#2ecc71")) + # 自定义颜色,可按需修改 labs( x = "对话顺序位置", y = NULL, fill = "词类型", title = "对话中bla与fu的分布情况" ) + theme_minimal() + theme( axis.text.y = element_blank(), # 隐藏无意义的y轴文字 axis.ticks.y = element_blank(), # 隐藏y轴刻度 panel.grid = element_blank() # 移除网格线,提升视觉清晰度 )
说明
- 条形的x轴对应对话中词的出现顺序,每个条形代表一个词
- 颜色可以通过
scale_fill_manual的values参数自定义,替换成你偏好的颜色代码 - 隐藏y轴元素是因为y轴仅作为占位,用来展示每个位置的词,无实际数值含义
内容的提问来源于stack exchange,提问作者Shakir
相关产品推荐
相关产品推荐

