绘制 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 1、Topic 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语言使用ggplot2包的快速可视化函数qplot绘制散点图(分类变量分组配色连续值程度配色)实战
R语言使用ggplot2包使用geom_dotplot函数绘制分组点图(双分类变量分组可视化)实战(dot plot)
R语言使用ggplot2包geom_jitter()函数绘制分组(strip plot,一维散点图)带状图(双分类变量分组:色彩配置形状配置)实战