我正在尝试使用R包通过Google Visualization API创建一个googleVis MotionChart。
我的问题是,我想要在互联网上发布MotionChart,为此,我希望能够控制不同轴/尺寸的默认变量。
可以使用以下命令设置大量信息:
gvisMotionChart(M, options=list(state='xxx')其中,'xxx'是可以从MotionChart中的高级选项卡复制的状态,但是默认时间序列不包括在该状态中。
我的问题是,如何为googleVis MotionChart的不同轴/尺寸选择默认变量?
发布于 2012-07-02 21:33:32
下面是gvisMotionChart的一个小接口函数,它允许指定除idvar和timevar之外的xvar、yvar、colorvar和sizevar的默认值。它只需更改所提供的data.frame的列顺序即可完成此操作。该函数还将布尔值转换为数字(否则gvisMotionChart将抛出错误)。由于运动图表对于分析横断面数据也很方便,因此可以设置timevar=NULL。
# Convenience interface to gvisMotionChart that allows to set default columns
myMotionChart = function(df,idvar=colnames(df)[1],timevar=colnames(df)[2],xvar=colnames(df)[3],yvar=colnames(df)[4], colorvar=colnames(df)[5], sizevar = colnames(df)[6],...) {
library(googleVis)
# Generate a constant variable as column for time if not provided
# Unfortunately the motion plot still shows 1900...
if (is.null(timevar)) {
.TIME.VAR = rep(0,NROW(df))
df = cbind(df,.TIME.VAR)
timevar=".TIME.VAR"
}
# Transform booleans into 0 and 1 since otherwise an error will be thrown
for (i in 1:NCOL(df)) {
if (is.logical(df [,i])[1])
df[,i] = df[,i]*1
}
# Rearrange columns in order to have the desired default values for
# xvar, yvar, colorvar and sizevar
firstcols = c(idvar,timevar,xvar,yvar,colorvar,sizevar)
colorder = c(firstcols, setdiff(colnames(df),firstcols))
df = df[,colorder]
gvisMotionChart(df,idvar=idvar,timevar=timevar,...)
}发布于 2012-04-21 23:50:19
虽然我不确定如何在googleVis包中以编程方式完成此操作,但我怀疑仔细阅读Section 2.6 of the googleVis vignette会给您一个线索。
当我这样做的时候,我手工编辑。我自己的motion chart with European public health time series示例选择了一些默认的时间序列。看看这个页面的源代码,在最下面。告诉我们这是否有用..。
发布于 2012-04-22 04:38:26
好吧,我已经想出了一个解决办法,但这是一个令人讨厌的解决办法。看起来包是按照变量在数据集中的顺序传递的。
因此,为了为不同的轴/尺寸选择默认变量,您必须更改数据帧中变量的顺序。将变量分配给axis的顺序如下:
ID (例如,国家)和时间(例如,年份)变量被自动识别。这意味着这两个变量之后的第一个变量将放在X轴上,第二个变量放在Y轴上,依此类推。
然而,应该有更好的方法。
https://stackoverflow.com/questions/10258970
复制相似问题