动态谷歌图表上的角色(间隔)

时间:2013-02-08 15:16:37

标签: dynamic intervals google-visualization role

如果我动态填充图表,我该怎么用https://developers.google.com/chart/interactive/docs/roles

这是我的代码的一部分:

...
data.addRows(dates.length);
for (i = 0; i < dates.length; i++){
    if (i!=0){
        data.setValue( i, 0, new Date(dates[i]) ); 
        temp = graph[dates[i]];
        var j = 0;
        if (temp){
            for (j = 0; j < groups.length; j++){
                if ( groups[j] in temp){
                    var volume = parseFloat(temp[groups[j]]);
                    console.log(i + '  ' + j + '  ' + volume);
                    data.setValue( i, j+1, volume )
                }
            }
        }
    }else{
        data.setValue( i, 0, new Date(dates[i]) ); 
        var j = 0;
        for (j = 0; j < groups.length; j++){
            data.setValue( 0, j+1, 0 )
        }
    }
}
...

使用'data.setValue'设置值后,如何设置角色? (我需要间隔值)像'data.setRole'这样的东西会很精彩! : - )

1 个答案:

答案 0 :(得分:3)

您可以创建没有任何角色的DataTable,然后创建一个DataView,将角色分配给视图中的列。文档显示了如何执行此操作here

  

DataView.setColumns方法

     

创建视图时,您可以显式设置列的角色。   这在创建新的计算列时很有用。看到   DataView.setColumns()了解更多信息。

DataView.setColumns() help file解释了如何执行此操作:

  

setColumns(columnIndexes)

     
      
  1. columnIndexes - 数字和/或对象的数组(可以混合使用):           Numbers指定要包含在视图中的源数据列的索引。数据未经修改即可通过。如果你   需要明确定义角色或其他列属性,   指定具有sourceColumn属性的对象。
  2.   
  3. 对象指定计算列。计算列创建一个   每行的值,并将其添加到视图中。物体   必须具有以下属性:   
        
    • calc [function] - 将为列中的每一行调用的函数,以计算该单元格的值。功能   signature是func(dataTable,row),其中dataTable是源   DataTable和row是源数据行的索引。该   函数应返回指定类型的单个值   类型。
    •   
    • type [string] - calc函数返回的值的JavaScript类型。
    •   
    • label [可选,字符串] - 要分配给此生成列的可选标签。如果未指定,则视图列将没有
        标签
    •   
    • id [可选,字符串] - 要分配给此生成列的可选ID。
    •   
    • sourceColumn - [可选,数字]用作值的源列;如果指定,请不要指定calc或type属性   这类似于传入数字而不是对象,但是   使您可以为新列指定角色和属性。
    •   
    • properties [可选,对象] - 包含要分配给此列的任何属性的对象。如果未指定,则视图
        列将没有属性。
    •   
    • role [可选,字符串] - 要分配给此列的角色。如果未指定,则不会导入现有角色。
    •   
  4.   

例如,如果您的间隔列是第3列,您会说:

dataView.setColumns([0, 1, {sourceColumn: 2, role: 'interval'}]);

上面按原样设置列0和1,没有角色,而第2列被指定为间隔列。

修改

响应评论,间隔在数据集中。这是一个例子:

function drawVisualization() {
  // Create and populate the data table.
  var data = google.visualization.arrayToDataTable([
    ['Year', 'Austria', 'Interval A', 'Interval B'],
    ['2003',  100,   95,       125],
    ['2004',  110,   96,       150],
    ['2005',  120,   97,       175],
    ['2006',  130,   98,       200],
    ['2007',  140,   99,       225],
    ['2008',  150,   100,      250]
  ]);

  // Create Data View using columns 2 & 3 as intervals
  var dataView = new google.visualization.DataView(data);
  dataView.setColumns([0, 1, {sourceColumn: 2, role: 'interval'}, {sourceColumn: 3, role: 'interval'}]);

  // Create and draw the visualization.
  new google.visualization.LineChart(document.getElementById('visualization')).
    draw(dataView,
         {width:600, height:400,
          hAxis: {title: "Year"}}
        );
}

将原始数据表中的间隔值包括为列。然后,使用数据视图将这些列更改为“interval”角色列。然后绘制数据视图。这将提供预期的误差条(间隔列)。