我想用GTrendsR和ggplot2来生成一段时间感兴趣的情节。
我想要的情节(用google趋势生成)如下:
任何帮助都将不胜感激。
谢谢!
这是我所能得到的最好的:
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生成的图表相匹配,我需要将数据聚合成几个月而不是几周。还不知道该怎么做
发布于 2016-02-02 14:06:13
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))
这意味着:
现在,如果您想按月进行聚合,我建议使用来自润滑油包装的润滑油包装函数和德普利 (请注意,我使用的是从magrittr封装进行dplyr再导出的链式操作符%>%
)。
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:查询MOOCs
被gtrendsR
更改为moocs
,这反映在您正在绘制的y变量中。
注2:函数的某些情况已经更改(例如,gtrendsR
而不是GTrendsR
),我使用的是当前版本。
发布于 2014-03-12 21:03:28
这会让你大老远跑到那里。图看起来不太正确,但这更多的是因为数据的功能有一点不同。以下是对数字和日期的必要转换。
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可能会做一些平滑处理,但这将绘制出您拥有的数据。
https://stackoverflow.com/questions/22363350
复制相似问题