如何在R中绘制分类变量(推文主题)随时间的出现频次时序图
R语言实现不同主题推文热度时序图
1. 依赖包准备
使用tidyverse生态工具完成数据处理和绘图,首次运行前可先安装所需依赖:
# 首次运行先安装 # install.packages("tidyverse") # install.packages("lubridate") library(tidyverse) library(lubridate)
2. 数据预处理
首先将原始数据的时间列转换为标准日期时间格式,再按日期和主题分组统计每日各主题的推文数量:
# 示例原始数据 mydata <- read.csv(header=TRUE, text='"tweet","Topic","created_at" "1","topic1","2018-03-09 13:01:29" "2","topic2","2018-03-08 10:01:05" "3","topic3","2018-03-08 12:01:03" "4","topic4","2018-03-07 22:04:03" "5","topic5","2018-03-06 15:02:00" "6","topic6","2018-03-06 14:20:08" "7","topic1","2018-03-06 12:01:51"') # 聚合统计每日各主题的推文数 daily_topic_count <- mydata %>% # 转换为标准日期时间格式 mutate(created_at = ymd_hms(created_at), # 提取日期维度,去掉时分秒按天聚合 date = as.Date(created_at)) %>% # 按日期、主题分组计数 group_by(date, Topic) %>% summarise(tweet_count = n(), .groups = "drop") # 可选配置:如果需要把某日期无发布记录的主题计数补为0,可加以下代码 # daily_topic_count <- daily_topic_count %>% # complete(date, Topic, fill = list(tweet_count = 0))
3. 绘制时序图
用ggplot2绘制多折线时序图,不同主题对应独立曲线:
ggplot(daily_topic_count, aes(x = date, y = tweet_count, color = Topic, group = Topic)) + # 绘制主题趋势线 geom_line(linewidth = 1) + # 可选:加数据点让数值更清晰 geom_point(size = 2) + # 坐标轴与标题配置 labs(x = "日期", y = "推文数量", title = "不同主题推文热度时序变化") + # 调整x轴日期显示格式与刻度间隔 scale_x_date(date_labels = "%Y-%m-%d", date_breaks = "1 day") + # 样式调整 theme_minimal() + theme(axis.text.x = element_text(angle = 45, hjust = 1))
自定义调整说明
- 可通过
scale_color_manual()自定义各主题的曲线颜色 - 修改
scale_x_date的date_breaks参数可调整日期间隔,比如按周、按月展示 - 数据量较大时可去掉
geom_point仅保留折线减少视觉干扰
内容的提问来源于stack exchange,提问作者Himan
相关产品推荐
相关产品推荐

