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
结果为(由于数据重叠而带有小平面)
我很难从我的数据中创建 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
结果为(由于数据重叠而带有小平面)