2016-08-09 3 views
2

Мне нужно создать столбец в таблице данных средних значений из столбцов таблицы исходных данных.Средняя колонка Google Графики

Оттуда сделать это? Я вижу, что можно найти max и min столбцов из таблицы исходных данных, используя jdata.getColumnRange (столбец #). Max и jdata.getColumnRange (столбец #).

Ниже приведен мой код получения значений Max и Min Values, которые хранятся в таблице. Как это сделать для средней стоимости?

 // Set MAX VALUE of Table    
     // Set 'VAY' MAX VALUE of Table 
     data.setCell(0, 1, jdata.getColumnRange(1).max); 
     // Set 'VBY' MAX VALUE of Table 
     data.setCell(1, 1, jdata.getColumnRange(2).max); 
     // Set 'VCY' MAX VALUE of Table 
     data.setCell(2, 1, jdata.getColumnRange(3).max); 
     // Set 'KW3DO' MAX VALUE of Table 
     data.setCell(3, 1, jdata.getColumnRange(4).max); 
     // Set 'KVR3' MAX VALUE of Table 
     data.setCell(4, 1, jdata.getColumnRange(5).max); 
     // Set 'PF3' MAX VALUE of Table 
     data.setCell(5, 1, jdata.getColumnRange(6).max); 


     // Set MIN VALUE of Table  
     // Set 'VAY' MIN VALUE of Table 
     data.setCell(0, 2, jdata.getColumnRange(1).min); 
     // Set 'VBY' MIN VALUE of Table 
     data.setCell(1, 2, jdata.getColumnRange(2).min); 
     // Set 'VCY' MIN VALUE of Table 
     data.setCell(2, 2, jdata.getColumnRange(3).min); 
     // Set 'KW3DO' MIN VALUE of Table 
     data.setCell(3, 2, jdata.getColumnRange(4).min); 
     // Set 'KVR3' MIN VALUE of Table 
     data.setCell(4, 2, jdata.getColumnRange(5).min); 
     // Set 'PF3' MIN VALUE of Table 
     data.setCell(5, 2, jdata.getColumnRange(1).min); 

ответ

0

вы можете использовать метод group() для выполнения агрегирования (< - см ссылки для подробностей)

group() результатов в другом DataTable

так что вы можете получить доступ к значениям после

// i.e. - get average column 
console.log(groupData.getValue(0, 1)); 

см. Следующий рабочий фрагмент, который рисует таблицу для отображения данных, до и после использования group()

google.charts.load('current', { 
 
    callback: function() { 
 
    var data = new google.visualization.DataTable({ 
 
     cols: [ 
 
     {label: 'Stooge', type: 'string'}, 
 
     {label: 'TV Appearances', type: 'number'} 
 
     ] 
 
    }); 
 

 
    data.addRows([ 
 
     ['Moe', 129], 
 
     ['Larry', 132], 
 
     ['Curly', 99], 
 
     ['Shemp', 42] 
 
    ]); 
 

 
    var table = new google.visualization.Table(document.getElementById('table_div0')); 
 
    table.draw(data); 
 

 
    var groupData = google.visualization.data.group(
 
     data, 
 
     // group across entire table -- use modifier to return same value for every row 
 
     [{column: 0, modifier: function() {return '';}, type: 'string'}], 
 
     [ 
 
     // aggregation functions 
 
     {column: 1, aggregation: google.visualization.data.avg, type: 'number', label: 'Average'}, 
 
     {column: 1, aggregation: google.visualization.data.count, type: 'number', label: 'Count'}, 
 
     {column: 1, aggregation: google.visualization.data.min, type: 'number', label: 'Minimum'}, 
 
     {column: 1, aggregation: google.visualization.data.max, type: 'number', label: 'Maximum'}, 
 
     {column: 1, aggregation: google.visualization.data.sum, type: 'number', label: 'Sum'}, 
 
     // custom aggregation function 
 
     {column: 1, aggregation: doubleSum, type: 'number', label: 'Double Sum'} 
 
     ] 
 
    ); 
 

 
    function doubleSum(values) { 
 
     var aggValue = 0; 
 
     values.forEach(function (appearances) { 
 
     aggValue += (appearances * 2); 
 
     }); 
 
     return aggValue; 
 
    } 
 

 
    var table = new google.visualization.Table(document.getElementById('table_div1')); 
 
    table.draw(groupData); 
 

 
    // i.e. - get average 
 
    console.log(groupData.getValue(0, 1)); 
 
    }, 
 
    packages: ['table'] 
 
});
div { 
 
    padding: 6px; 
 
}
<script src="https://www.gstatic.com/charts/loader.js"></script> 
 
<div id="table_div0"></div> 
 
<div id="table_div1"></div>

+0

надеюсь, что это помогает ... – WhiteHat