Charts google图表API-如何从视图或分组视图透视数据
如何通过谷歌图表API在谷歌图表中显示数据? 我有多个图表,所有这些图表都具有相同的原始数据表,我在这些数据上创建视图,以包括要包含和聚合的特定列,然后我将对数据进行分组,在某些情况下,需要从视图或分组数据中透视数据。 我目前遵循的顺序是DataTable->View->aggregate->group-有谁能提供一个pivot示例或有关如何实现这一点的详细信息吗?我提供了一把小提琴Charts google图表API-如何从视图或分组视图透视数据,charts,google-visualization,Charts,Google Visualization,如何通过谷歌图表API在谷歌图表中显示数据? 我有多个图表,所有这些图表都具有相同的原始数据表,我在这些数据上创建视图,以包括要包含和聚合的特定列,然后我将对数据进行分组,在某些情况下,需要从视图或分组数据中透视数据。 我目前遵循的顺序是DataTable->View->aggregate->group-有谁能提供一个pivot示例或有关如何实现这一点的详细信息吗?我提供了一把小提琴 /* 测试用例 在表上创建视图以仅显示中心列 1和2)总来源 3) 现金总额 4) 透视表格以显示每个公司的总
/*
测试用例
在表上创建视图以仅显示中心列
1和2)总来源
3) 现金总额
4) 透视表格以显示每个公司的总资源:什么是最好的方法?
|日期|公司1 |公司2
|1/1/2016 11:00 | 3 | 2
|1/1/2016 12:00 | 1 | 0
*/
load('current',{packages:['corechart','bar','line','table']});
google.charts.setOnLoadCallback(drawChart);
函数绘图图(){
var data=new google.visualization.DataTable();
//对于连续轴,将列类型设置为数字,对于长轴,将字符串设置为离散
data.addColumn('datetime','start date');
data.addColumn('string','tick text');
data.addColumn(“编号”、“公司”);
data.addColumn('number','Source 1');
data.addColumn('number','Source 2');
data.addColumn('数字','现金总额');
data.addRows([
[新日期('2016-01-01 00:00'),'2015 WK 53',1,1,2230],
[新日期('2016-01-01 00:00'),'2015 WK 53',1,0,1100],
[新日期('2016-01-01 00:00'),'2015 WK 53',2,1,1100],
[新日期('2016-01-08 00:00'),'2016年第1、1、1、2230周],
[新日期('2016-01-08 00:00'),'2016年第1、1、1、2230周]
]);
//创建数据视图
var view=newgoogle.visualization.DataView(数据);
var table1=新的google.visualization.Table(document.getElementById('table1');
表1.绘制(视图);
//设置视图列测试1和2
view.setColumns([0,1,2,{type:'number',label:'Total Sources',
计算:函数(dt,行){
返回dt.getValue(第3行)+dt.getValue(第4行);
}
}]);
var table2=新的google.visualization.Table(document.getElementById('table2');
表2.绘制(视图);
//设置视图列测试3
var view2=新的google.visualization.DataView(数据);
view2.setColumns([0,1,2,{类型:'number',标签:'Total Cash',
计算:函数(dt,行){
返回dt.getValue(第5行);
}
}]);
var table3=新的google.visualization.Table(document.getElementById('table3');
表3.图纸(视图2);
//按日期分组和公司汇总来源总计
var grouped_data_table2=google.visualization.data.group(视图,[0,2],{'column':3,'aggregation':google.visualization.data.sum,'type':'number'});
var table3=新的google.visualization.Table(document.getElementById('table3');
表3.绘图(分组数据表2);
//按日期分组和公司现金总额
var grouped_data_table3=google.visualization.data.group(view2,[0,2],{'column':3,'aggregation':google.visualization.data.sum,'type':'number'});
var table4=新的google.visualization.Table(document.getElementById('table4');
表4.绘图(分组数据表3);
/*
如何从视图或分组数据透视表?
我想用数据透视表来画图表
*/
//下表为示例图表
var pivoteddata=new google.visualization.DataTable();
addColumn('datetime','start date');
pivoteddata.addColumn('string','tick text');
pivoteddata.addColumn('number','company 1');
pivoteddata.addColumn('number','company 2');
pivoteddata.addRows([
[新日期('2016-01-01 00:00'),'2015 WK 53',4,2],
[新日期('2016-01-08 00:00'),'2016年第1,0,6周]
]);
//模拟桌
var table5=新的google.visualization.Table(document.getElementById('table5');
表5.绘图(数据透视);
var viewc=新的google.visualization.DataView(pivoteddata);
viewc.setColumns([0,2,3]);
//有没有更好的方法向hAxis添加蜱虫?
var dates=pivoteddata.GetDistinctValue(0);
var ticks=pivoteddata.getdistinctValue(1);
var newTicks=[];
对于(i=0;i
/*
test case
create view on table to show only centain columns
1 & 2) aggregate total sources
3) aggregate total cash
4) pivot the table to show total sources per company:WHAT IS BEST WAY TO DO THIS?
|date | company 1 | company 2
|1/1/2016 11:00 | 3 | 2
|1/1/2016 12:00 | 1 | 0
*/
google.charts.load('current', {packages: ['corechart', 'bar','line','table']});
google.charts.setOnLoadCallback(drawChart);
function drawChart() {
var data = new google.visualization.DataTable();
//set column type to be number for continuous and string to be discrete for major axis
data.addColumn('datetime', 'start date');
data.addColumn('string', 'tick text');
data.addColumn('number', 'company');
data.addColumn('number', 'Source 1');
data.addColumn('number', 'Source 2');
data.addColumn('number', 'Total Cash');
data.addRows([
[new Date('2016-01-01 00:00'),'2015 WK 53', 1,1,2,230],
[new Date('2016-01-01 00:00'),'2015 WK 53', 1,0,1,100],
[new Date('2016-01-01 00:00'),'2015 WK 53', 2,1,1,100],
[new Date('2016-01-08 00:00'),'2016 WK 1', 1,1,2,230],
[new Date('2016-01-08 00:00'),'2016 WK 1', 1,1,2,230]
]);
//create view on data
var view = new google.visualization.DataView(data);
var table1 = new google.visualization.Table(document.getElementById('table1'));
table1.draw(view);
//set view columns test 1 & 2
view.setColumns([0,1,2,{type: 'number', label: 'Total Sources',
calc: function (dt, row) {
return dt.getValue(row, 3) + dt.getValue(row, 4);
}
}]);
var table2 = new google.visualization.Table(document.getElementById('table2'));
table2.draw(view);
//set view columns test 3
var view2 = new google.visualization.DataView(data);
view2.setColumns([0,1,2,{type: 'number', label: 'Total Cash',
calc: function (dt, row) {
return dt.getValue(row, 5);
}
}]);
var table3 = new google.visualization.Table(document.getElementById('table3'));
table3.draw(view2);
//group by date & company aggregate source totals
var grouped_data_table2 = google.visualization.data.group(view, [0,2], [{ 'column': 3, 'aggregation': google.visualization.data.sum, 'type': 'number' }]);
var table3 = new google.visualization.Table(document.getElementById('table3'));
table3.draw(grouped_data_table2);
//group by date & company aggregate cash
var grouped_data_table3 = google.visualization.data.group(view2, [0,2], [{ 'column': 3, 'aggregation': google.visualization.data.sum, 'type': 'number' }]);
var table4 = new google.visualization.Table(document.getElementById('table4'));
table4.draw(grouped_data_table3);
/*
how do I pivot the table from the view or the grouped data?
I would like to use the pivoted table to draw the chart
*/
//example chart table below
var pivoteddata = new google.visualization.DataTable();
pivoteddata.addColumn('datetime', 'start date');
pivoteddata.addColumn('string', 'tick text');
pivoteddata.addColumn('number', 'company 1');
pivoteddata.addColumn('number', 'company 2');
pivoteddata.addRows([
[new Date('2016-01-01 00:00'),'2015 WK 53', 4,2],
[new Date('2016-01-08 00:00'),'2016 WK 1', 0,6]
]);
//mock table
var table5 = new google.visualization.Table(document.getElementById('table5'));
table5.draw(pivoteddata);
var viewc = new google.visualization.DataView(pivoteddata);
viewc.setColumns([0,2,3]);
//is there a better way to add ticks to hAxis?
var dates=pivoteddata.getDistinctValues(0);
var ticks=pivoteddata.getDistinctValues(1);
var newTicks=[];
for(i=0;i<ticks.length;i++){
newTicks.push({v: new Date(dates[i]), f: ticks[i]});
}
var chartoptions={
'width':'100%',
"hAxis": {
"ticks":newTicks
}
}
//draw chart with mock pivot data table
var chart = new google.visualization.ColumnChart(document.getElementById('chart2'));
chart.draw(viewc, chartoptions);
}