2014-02-19 4 views
2

основой GoogleAPI документации: https://developers.google.com/chart/interactive/docs/gallery/columnchart?hl=enGoogle Chart: Этикетировочное Stacked Column Диаграмма

Как вы можете увидеть в разделе «этикетирование столбцы» каждый столбец обозначен со статическим значением. Я хочу знать, можно ли пометить столбец конкретным значением, полученным из суммы всех.

// 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());} 
     } 
    } 
} 

Обратите внимание, что эти методы следует называть основной функцией (например, drawChart).

Смежные вопросы