googleVis MotionChart的默认变量

时间:2012-04-21 12:36:33

标签: r google-visualization

我正在尝试使用googleVis MotionChart包在Google Visualization API中创建R

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

可以使用以下方式设置许多信息:

gvisMotionChart(M, options=list(state='xxx')

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

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

4 个答案:

答案 0 :(得分:3)

不确定如何在googleVis包中以编程方式执行此操作,但我怀疑仔细阅读Section 2.6 of the googleVis vignette会给您带来优势。

当我这样做时,我手工编辑。我自己的motion chart with European public health time series示例选择了一些默认时间序列。看看该页面的来源,最底层。告诉我们这是否有帮助...

答案 1 :(得分:1)

好的我已经找到了解决方法,但这有点烦人。似乎包通过变量按照它们在数据集中的顺序传递。

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

  1. X轴
  2. Y轴
  3. 点彩色
  4. 点大小
  5. 自动识别ID(例如国家/地区)和时间(例如年份)变量。意思是这两个之后的第一个变量,将放在X轴上,第二个放在Y轴上等等。

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

答案 2 :(得分:1)

我不知道更好的方法,但是当我最近做了类似的事情时,我想我找到了变量的默认顺序:

## order of variables in data file:
##  1 = idvar
##  2 = timevar
##  3 = bubble colour
##  4 = x var
##  5 = y var
##  6 = bubble size

该示例使用世界银行数据:

library(googleVis)
library(WDI)

HealthWealth = WDI(country="all", indicator=c("SP.DYN.LE00.IN", "NY.GDP.PCAP.CD", "SP.POP.TOTL"),
   start = 1960, end = 2010, extra = TRUE)  #Can take some time
HealthWealth = HealthWealth[-which(is.na(HealthWealth$Country.Name)), ]
HealthWealth = HealthWealth[-which(HealthWealth$Region == "Republic of Belarus"),]
HealthWealth = HealthWealth[, c(37, 3, 10, 5,4,6)]
names(HealthWealth) = c("Country", "Year", "Region", "GDP.(Current.$US)", "Life.Expectancy", "Population")
## order of variables in data file:
##  1 = idvar
##  2 = timevar
##  3 = bubble colour
##  4 = x var
##  5 = y var
##  6 = bubble size

## Create a motion chart
M <- gvisMotionChart(HealthWealth, idvar="Country", timevar="Year")  # Be patient

## Display the chart in your browser
plot(M)   # Change the x axis from lin to log

答案 3 :(得分:1)

以下是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,...)
    }