首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >GTrendsR + ggplot2?

GTrendsR + ggplot2?
EN

Stack Overflow用户
提问于 2014-03-12 20:42:13
回答 2查看 497关注 0票数 2

我想用GTrendsR和ggplot2来生成一段时间感兴趣的情节。

我想要的情节(用google趋势生成)如下:

任何帮助都将不胜感激。

谢谢!

这是我所能得到的最好的:

代码语言:javascript
运行
复制
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生成的图表相匹配,我需要将数据聚合成几个月而不是几周。还不知道该怎么做

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-02-02 14:06:13

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

代码语言:javascript
运行
复制
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))

这意味着:

现在,如果您想按月进行聚合,我建议使用来自润滑油包装润滑油包装函数和德普利 (请注意,我使用的是从magrittr封装进行dplyr再导出的链式操作符%>% )。

代码语言:javascript
运行
复制
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:查询MOOCsgtrendsR更改为moocs,这反映在您正在绘制的y变量中。

注2:函数的某些情况已经更改(例如,gtrendsR而不是GTrendsR),我使用的是当前版本。

票数 2
EN

Stack Overflow用户

发布于 2014-03-12 21:03:28

这会让你大老远跑到那里。图看起来不太正确,但这更多的是因为数据的功能有一点不同。以下是对数字和日期的必要转换。

代码语言:javascript
运行
复制
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可能会做一些平滑处理,但这将绘制出您拥有的数据。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22363350

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档