1

我正在尝试使用该包创建一个googleVis MotionChart带有 Google Visualization API 的。R

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

可以使用以下方法设置很多信息:

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

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

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

4

4 回答 4

3

不确定如何在 googleVis 包中以编程方式执行此操作,但我怀疑仔细阅读googleVis 小插图的第 2.6 节会给你一个线索。

当我这样做时,我手动编辑。我自己的带有欧洲公共卫生时间序列的动态图表示例选择了一些默认时间序列。查看该页面的源代码,位于最底部。告诉我们这是否有帮助...

于 2012-04-21T15:50:19.030 回答
1

好的,我想出了一个解决方法,但这有点烦人。包似乎按照它们在数据集中的顺序传递变量。

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

  1. X轴
  2. Y轴
  3. 点颜色
  4. 点大小

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

但是,应该有更好的方法。

于 2012-04-21T20:38:26.383 回答
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
于 2012-04-21T21:17:09.190 回答
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,...)
    }
于 2012-07-02T13:33:31.837 回答