【问题标题】:GTrendsR + ggplot2?GTrendsR + ggplot2?
【发布时间】:2016-02-09 16:56:31
【问题描述】:

我想使用 GTrendsR 和 ggplot2 随时间生成感兴趣的图

我想要的情节(generated with google trends)是这样的:

任何帮助将不胜感激。

谢谢!


这是我能得到的最好的:

library(ggplot2)
library(devtools)
library(GTrendsR)
usr = "my.email"
psw = "my.password"
ch = gConnect(usr, psw)

location = "all"
query = "MOOCs"
MOOCs_trends = gTrends(ch, geo = location, query = query)
MOOCs<-MOOCs_trends[[1]]
MOOCs$moocs<-as.numeric(as.character(MOOCs$moocs))
MOOCs$Week <- as.character(MOOCs$Week)
MOOCs$start <- as.Date(MOOCs$Week)

ggplot(MOOCs[MOOCs$moocs!=0,], aes(start, moocs)) + 
  geom_line(colour = "blue") + 
  ylab("Trends") + xlab("") + theme_bw()

我认为要匹配 google 生成的图表,我需要将数据聚合到几个月而不是几周...还不知道该怎么做

【问题讨论】:

  • 我添加了如何按月聚合数据的说明。

标签: r ggplot2


【解决方案1】:

gtrendsR 返回的对象是一个list,其中您想要绘制的data.frame 中的trend 元素。

usr = "my.email"
psw = "my.password"
gconnect(usr, psw)

MOOCs_trends = gtrends('MOOCs')

MOOCsDF <- MOOCs_trends$trend

ggplot(data = MOOCsDF) + geom_line(aes(x=start, y=moocs))

这给出了:

现在如果你想按月聚合,我建议使用lubridate package 中的floor_date 函数,结合dplyr(请注意,我使用的是链运算符%&gt;% dplyr 重新导出来自magrittr package)。

usr = "my.email"
psw = "my.password"
gconnect(usr, psw)

MOOCs_trends = gtrends('MOOCs')

MOOCsDF <- MOOCs_trends

MOOCsDF$start <- floor_date(MOOCsDF$start, unit = 'month')

MOOCsDF %>%
  group_by(start) %>%
  summarise(moocs = sum(moocs)) %>%
  ggplot() + geom_line(aes(x=start, y=moocs))

这给出了:

注意 1:gtrendsR 将查询 MOOCs 更改为 moocs,这反映在您正在绘制的 y 变量中。

注2:部分函数的情况发生了变化(例如gtrendsR不是GTrendsR),我使用的是当前版本。

【讨论】:

    【解决方案2】:

    这将使您大部分时间到达那里。该图看起来不太正确,但这更多是因为数据有点不同。这是数字和日期的必要转换。

    MOOCs<-MOOCs_trends[[1]]
    
    library(ggplot2)
    library(plyr)
    ## Convert to string
    MOOCs$Week <- as.character(MOOCs$Week)
    MOOCs$moocs <- as.numeric(MOOCs$moocs)
    # split the string
    MOOCs$start <- unlist(llply(strsplit(MOOCs$Week," - "), function(x) return(x[2])))
    MOOCs$start <- as.POSIXlt(MOOCs$start)
    ggplot(MOOCs,aes(x=start,y=moocs))+geom_point()+geom_path()
    

    Google 可能会进行一些平滑处理,但这会绘制您拥有的数据。

    【讨论】:

      猜你喜欢
      • 2018-10-23
      • 2016-06-23
      • 2021-08-09
      • 1970-01-01
      • 1970-01-01
      • 2017-09-15
      • 1970-01-01
      • 2017-04-25
      • 2020-07-27
      相关资源
      最近更新 更多