2014-02-19 170 views
2

基于googleAPI文档: https://developers.google.com/chart/interactive/docs/gallery/columnchart?hl=en谷歌图:标签堆积柱形图

正如你在“标签栏”部分看到每一列都标有一个静态值。我想知道是否有可能用一个特定的值来标记列的总和。

// Set chart options 
    var options = { 

     width: 400, 
     height: 300, 
     calc:???? 
    }; 

我应该用特定的函数设置这个“calc”字段吗?

JSFIDDLE: Total Labeling Column

我不能找出如何定制的标签与每个堆叠列的总和的值。

回答

4

您可以使用getNumberOfRows()getNumberOfColumns()getValue()函数来计算总的和设置,而不是字符串total该值:

function drawChart() { 
    // Create the data table. 
    var data = new google.visualization.arrayToDataTable(array); 

    for (var i = 0; i < data.getNumberOfRows(); i++) { 
     var total = 0; 

     for (var j = 1; j < data.getNumberOfColumns() - 2; j++) { 
      // console.log(data.getValue(i, j)); 
      total += data.getValue(i, j); 
     } 
     data.setValue(i, data.getNumberOfColumns() - 1, '' + total); 
    } 
... 

你将不得不改变或图表或字体来获取值的大小尺寸正确显示在列上。标签显示正确。

+1

我已经弄清楚了,它和你所做的相似。感谢您的及时答复。 – ePascoal

4

这是我的答案..我希望它可以帮助有同样问题的人。

function getValueAt(column, dataTable, row) { 
    return dataTable.getFormattedValue(row, column); 
} 

function setLabelTotal(dataTable) { 
    //dataTable must have role: annotation 
    var SumOfRows = 0; 

    for (var row = 0; row < dataTable.getNumberOfRows(); row++) { 
     SumOfRows = 0; 
     for (var col = 0; col < dataTable.getNumberOfColumns(); col++) { 

      if (dataTable.getColumnType(col) == 'number') { 
       SumOfRows += dataTable.getValue(row, col); 
      } 
      if(dataTable.getColumnRole(col) == 'annotation') 
      {dataTable.setValue(row, col, SumOfRows.toString());} 
     } 
    } 
} 

请注意,您必须在main函数(例如“drawChart”)上调用这些方法。