javascript – 从现有的谷歌图表DataTable对象创建透视DataView
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了javascript – 从现有的谷歌图表DataTable对象创建透视DataView,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2953字,纯文字阅读大概需要5分钟。
内容图文
![javascript – 从现有的谷歌图表DataTable对象创建透视DataView](/upload/InfoBanner/zyjiaocheng/792/fa7db402936e4c24b2de41175647a42a.jpg)
我有一个DataTable包含:
id,day,proj,col1,col2,subtype,time
1,Nov 28,projectA,1050,880,foo,17481
2,Nov 28,projectA,1050,880,bar,16098
3,Nov 28,projectA,1080,40,foo,13509
4,Nov 28,projectA,1080,40,bar,9031
但是想创建一个新的透视DataView,其中包含:
id,day,proj,col1,col2,foo,bar
1,Nov 28,projectA,1050,880,17481,16098
3,Nov 28,projectA,1080,40,13509,9031
然后我想为它创建一个堆叠的columnChart.
查询语言中有一个pivot子句,但是如何透过DataTable中已有的数据?
解决方法:
手动.
您可以通过asgallant在jsfiddle上看到this example.这使用dataView来完成任务.
google.load('visualization', '1', {packages: ['table']});
google.setOnLoadCallback(drawChart);
function drawChart() {
var data = new google.visualization.DataTable();
data.addColumn('number', 'A');
data.addColumn('string', 'B');
data.addColumn('number', 'C');
data.addRows([
[1, 'foo', 6],
[2, 'foo', 2],
[3, 'foo', 1],
[4, 'foo', 3],
[1, 'bar', 7],
[2, 'bar', 3],
[1, 'baz', 8],
[2, 'baz', 4]
]);
var table1 = new google.visualization.Table(document.getElementById('table1'));
table1.draw(data, {});
/* manually pivot the data table
* set column A as the first column in the view,
* then we have to separate out the C values into their own columns
* according to the value of B, using a DataView with calculated columns
*/
var view = new google.visualization.DataView(data);
view.setColumns([0, {
type: 'number',
label: 'foo',
calc: function (dt, row) {
// return values of C only for the rows where B = "foo"
return (dt.getValue(row, 1) == 'foo') ? dt.getValue(row, 2) : null;
}
}, {
type: 'number',
label: 'bar',
calc: function (dt, row) {
// return values of C only for the rows where B = "bar"
return (dt.getValue(row, 1) == 'bar') ? dt.getValue(row, 2) : null;
}
}, {
type: 'number',
label: 'baz',
calc: function (dt, row) {
// return values of C only for the rows where B = "baz"
return (dt.getValue(row, 1) == 'baz') ? dt.getValue(row, 2) : null;
}
}]);
// next, we group the view on column A, which gets us the pivoted data
var pivotedData = google.visualization.data.group(view, [0], [{
column: 1,
type: 'number',
label: view.getColumnLabel(1),
aggregation: google.visualization.data.sum
}, {
column: 2,
type: 'number',
label: view.getColumnLabel(2),
aggregation: google.visualization.data.sum
}, {
column: 3,
type: 'number',
label: view.getColumnLabel(3),
aggregation: google.visualization.data.sum
}]);
var table2 = new google.visualization.Table(document.getElementById('table2'));
table2.draw(pivotedData, {});
}
或者,您可以手动方式执行此操作.
var data = new google.visualization.DataTable();
data.addColumn('string', 'First Column Title');
var baseline = chartData.getValue(chartData.getNumberOfRows() - 1, 15);
for (var i = 0; i < chartData.getNumberOfRows(); i++) {
data.addColumn('number', chartData.getFormattedValue(i, 0));
};
for (var j = 0; j < chartData.getNumberOfColumns() - 2; j++) {
data.addRow();
data.setValue(j, 0, chartData.getColumnLabel(j + 1));
for (var i = 0; i < chartData.getNumberOfRows(); i++) {
data.setValue(j, i + 1, chartData.getValue(i, j+1));
};
};
内容总结
以上是互联网集市为您收集整理的javascript – 从现有的谷歌图表DataTable对象创建透视DataView全部内容,希望文章能够帮你解决javascript – 从现有的谷歌图表DataTable对象创建透视DataView所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。