ggplot2 创建时间频率

ggplot2 create time frequency

我很难从我的数据中创建 ggplot2。我需要创建一个情节应该是这样的:

如果你能给我一些建议,对我的研究非常有帮助。提前感谢您的时间和努力。

一个非常小的数据集样本 (df) 如下所示:

tweet_created_at     hashtag_text
2015-05-08 00:07:58  ogretmenemayistamujdehazirandaatama
2015-05-08 00:07:58  onlarkonusurakpartiyapar
2015-05-08 00:10:48  ogretmenemayistamujdehazirandaatama
2015-05-08 00:10:48  onlarkonusurakpartiyapar
2015-05-08 02:50:03  onlarkonusurakpartiyapar
2015-05-08 00:10:56  ogretmenemayistamujdehazirandaatama
2015-05-08 00:10:56  onlarkonusurakpartiyapar
2015-05-08 02:53:13  onlarkonusurakpartiyapar
2015-05-08 02:53:13  pinokyokemal
2015-05-08 00:11:03  ogretmenemayistamujdehazirandaatama
2015-05-08 00:11:03  onlarkonusurakpartiyapar
2015-05-08 00:11:06  ogretmenemayistamujdehazirandaatama
2015-05-08 00:11:06  onlarkonusurakpartiyapar
2015-05-08 02:53:48  bingolunkararibuyumenindevami
2015-05-08 02:53:48  onlarkonusurakpartiyapar
2015-05-08 00:11:17  ogretmenemayistamujdehazirandaatama
2015-05-08 00:11:17  onlarkonusurakpartiyapar
2015-05-08 00:16:21  ogretmenemayistamujdehazirandaatama
2015-05-08 00:16:21  onlarkonusurakpartiyapar

我使用了这个脚本,但我没有想出创建频率部分:

ggplot(data=df,
       aes(x=as.POSIXct(tweet_created_at), y=hashtag_text,color=hashtag_text)) +
  geom_line()

我知道 y 轴的值不正确,但我没有找到合适的版本。它创建了这样的东西:

PS:我的数据集中有数百个主题标签,因此我需要选择前 25 个主题标签。

您可以使用 geom_freqpoly。 如果您的 tweet_created_at 变量还不是 POSIXct,请转换它:

df$tweet_created_at <-  as.POSIXct(df$tweet_created_at )

然后找到您最常使用的主题标签并创建一个 select 变量:

#will look for top 2 now, easily expanded to 25
hashtag_table <- sort(table(df$hashtag_text),decreasing=T)
df$select <- as.character(df$hashtag_text) %in% names(hashtag_table)[1:2]

然后剧情:

p1 <- ggplot(df[df$select,], 
aes(x=tweet_created_at,group=hashtag_text, colour=hashtag_text)) +
  geom_freqpoly(binwidth=30*60) #as POSIXct, bindwidth in seconds. Now 30 min

结果为(由于数据重叠而带有小平面)