Charts google图表API-如何从视图或分组视图透视数据

Charts google图表API-如何从视图或分组视图透视数据,charts,google-visualization,Charts,Google Visualization,如何通过谷歌图表API在谷歌图表中显示数据? 我有多个图表,所有这些图表都具有相同的原始数据表,我在这些数据上创建视图,以包括要包含和聚合的特定列,然后我将对数据进行分组,在某些情况下,需要从视图或分组数据中透视数据。 我目前遵循的顺序是DataTable->View->aggregate->group-有谁能提供一个pivot示例或有关如何实现这一点的详细信息吗?我提供了一把小提琴 /* 测试用例 在表上创建视图以仅显示中心列 1和2)总来源 3) 现金总额 4) 透视表格以显示每个公司的总

如何通过谷歌图表API在谷歌图表中显示数据? 我有多个图表,所有这些图表都具有相同的原始数据表,我在这些数据上创建视图,以包括要包含和聚合的特定列,然后我将对数据进行分组,在某些情况下,需要从视图或分组数据中透视数据。 我目前遵循的顺序是DataTable->View->aggregate->group-有谁能提供一个pivot示例或有关如何实现这一点的详细信息吗?我提供了一把小提琴

/*
测试用例
在表上创建视图以仅显示中心列
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);

      }