绘制 R 中分类变量随时间的出现情况

Posted

技术标签:

【中文标题】绘制 R 中分类变量随时间的出现情况【英文标题】:Plot the occurrence over time of a categorical variable in R 【发布时间】:2021-11-03 03:17:08 【问题描述】:

我有一个推文数据集,对于每条推文,我都有创建日期(created_at 变量,其日期格式为 2021-09-05 12:03:20 等)和推文的主题(topic 变量;可能的值为 Topic 1Topic 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"')

我有兴趣绘制不同主题随时间的演变(即不同主题在不同日子出现的次数;时间序列图)。 基本上,我希望日期是情节的 x,y 是推文的 n° 出现次数,每个主题都有一条曲线,以便比较不同主题的推文随时间的演变。

我能做什么?

【问题讨论】:

欢迎来到 Stack Overflow。 (1) 这个有点含糊,可以给我们minimal reproducible example吗? (2) 您是否在 Stack Overflow 上搜索过类似的答案(我没有,但我敢打赌有一些……) (3) 一般策略是 (i) 从 created_at 计算“日”变量; (ii) 使用 aggregate 或 tidyverse group_by() + summarise(); (iii) 使用您选择的绘图方法(base-R matplot,可能在稍微重新排列输出之后)或 tidyverse ggplot2) 请提供足够的代码,以便其他人更好地理解或重现问题。 【参考方案1】:

created_at 更改为POSIXct 类型并从中提取日期。计算每个date 上提及某个主题的次数。为每个 Topic 绘制不同颜色的图表。

library(dplyr)
library(ggplot2)

mydata %>%
  mutate(created_at = lubridate::ymd_hms(created_at), 
         date = as.Date(created_at)) %>%
  count(date, Topic) %>%
  ggplot(aes(date, n, color = Topic)) + geom_line()

【讨论】:

【参考方案2】:

我不确定这个情节是你想要的

mydata %>%
  mutate(time = as.Date(created_at), 
         Topic = as.factor(Topic)) %>%
  ggplot(aes(time, tweet, group = Topic, color = Topic)) +
  geom_point() # + geom_line() + geom_smooth()

每组没有足够的数据点,但如果您的数据有足够的数据, 使用geom_line() 绘制通过点的线(通过Topic)和geom_smooth() 绘制平滑条件均值。有关选项参数,请参阅 geom_smooth。

【讨论】:

以上是关于绘制 R 中分类变量随时间的出现情况的主要内容,如果未能解决你的问题,请参考以下文章

R语言绘制分类变量柱状图

R数据可视化-4 折线图

R语言使用ggplot2包的快速可视化函数qplot绘制散点图(分类变量分组配色连续值程度配色)实战

R语言使用ggplot2包使用geom_dotplot函数绘制分组点图(双分类变量分组可视化)实战(dot plot)

有没有办法绘制两个变量出现在 R 中的实例?

R语言使用ggplot2包geom_jitter()函数绘制分组(strip plot,一维散点图)带状图(双分类变量分组:色彩配置形状配置)实战