You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 14:24:03