首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >googleVis MotionChart的默认变量

googleVis MotionChart的默认变量
EN

Stack Overflow用户
提问于 2012-04-21 20:36:33
回答 4查看 2.1K关注 0票数 1

我正在尝试使用R包通过Google Visualization API创建一个googleVis MotionChart

我的问题是,我想要在互联网上发布MotionChart,为此,我希望能够控制不同轴/尺寸的默认变量。

可以使用以下命令设置大量信息:

代码语言:javascript
复制
gvisMotionChart(M, options=list(state='xxx')

其中,'xxx'是可以从MotionChart中的高级选项卡复制的状态,但是默认时间序列不包括在该状态中。

我的问题是,如何为googleVis MotionChart的不同轴/尺寸选择默认变量?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2012-07-02 21:33:32

下面是gvisMotionChart的一个小接口函数,它允许指定除idvar和timevar之外的xvar、yvar、colorvar和sizevar的默认值。它只需更改所提供的data.frame的列顺序即可完成此操作。该函数还将布尔值转换为数字(否则gvisMotionChart将抛出错误)。由于运动图表对于分析横断面数据也很方便,因此可以设置timevar=NULL。

代码语言:javascript
复制
    # 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,...)
    }
票数 1
EN

Stack Overflow用户

发布于 2012-04-21 23:50:19

虽然我不确定如何在googleVis包中以编程方式完成此操作,但我怀疑仔细阅读Section 2.6 of the googleVis vignette会给您一个线索。

当我这样做的时候,我手工编辑。我自己的motion chart with European public health time series示例选择了一些默认的时间序列。看看这个页面的源代码,在最下面。告诉我们这是否有用..。

票数 3
EN

Stack Overflow用户

发布于 2012-04-22 04:38:26

好吧,我已经想出了一个解决办法,但这是一个令人讨厌的解决办法。看起来包是按照变量在数据集中的顺序传递的。

因此,为了为不同的轴/尺寸选择默认变量,您必须更改数据帧中变量的顺序。将变量分配给axis的顺序如下:

  1. X-axis
  2. Y-axis
  3. Dot彩色
  4. 网点大小

ID (例如,国家)和时间(例如,年份)变量被自动识别。这意味着这两个变量之后的第一个变量将放在X轴上,第二个变量放在Y轴上,依此类推。

然而,应该有更好的方法。

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

https://stackoverflow.com/questions/10258970

复制
相关文章

相似问题

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