我试图使用汇总数据表dc.js
和我使用dynaTable
插件的分页和其他选项。
通常在dc.js
数据表中,我们得到的数据显示整个数据。 但我想概括像透视表中的数据和网络而当选择发生在数据表中需要改变上显示。
我已经通过创建一个完成它dimension
和group
和我通过了小组dynaTable
。 而且它的正常工作。
假设我有数据的5列。 我可以创建的任何列的尺寸。
例如:我创建在所述第一列的维数并且在最后一列的值分组,说它是A-20, B-42, C-50, D-20.
。 现在我的组包含的值和变量。
但我希望创建一个维度组合2-3列。
例:
A,AA,20
A,AB,10
A,AC,30
A,AD,80
B,BA,30
B,BB,40
B,BC,50
B,BD,90
C,CA,70
C,CB,20
C,CC,10
C,CD,80
D,DA,30
D,DB,40
D,DC,60
D,DD,80
是否有可能创建这样的多个列中的维度?
如果是这样,请帮助我。
这里是小提琴: http://jsfiddle.net/3v68c/3/
如果你提供的jsfiddle或类似的东西,我可以为你提供一个工作的例子。 但得到的答复是肯定的,你可以定义基于尽可能多的列你想要的尺寸。 你只需要拥有未在任何值中的分隔符。 比方说,你有列A,B,C和你要使用的分隔符“”。 然后你:
var xfilter = crossfilter(data);
var multidimension = xfilter.dimension(function (d) {
return d.a + ',' + d.b + ',' + d.c;
});
我在创建了这个的jsfiddle http://jsfiddle.net/djmartin_umich/7R9wd/ 。 它可以使用一些清理,但它得到跨点。
1)创建具有级联字段维度(如阮经天的建议)。 我创建了一个新的层面,因为你可能希望你的图形使用的日期只有维度。 在这种情况下,我在连接前转换日期为字符串。
var dateLableDim = ndx.dimension(function(d) { return parseDate(d3.time.day.floor(d.date)) + " - " + d.label });
2)存储的实际日期和标签作为分组方法的一部分:
var dateDimTotal = dateDim.group().reduce(reduceAdd, reduceRemove, reduceInitial);
function reduceAdd(p, v) {
p.date = parseDate(d3.time.day.floor(v.date));
p.label = v.label;
++p.count;
p.total += v.value;
if (p.count == 0) {
p.average = 0;
} else {
p.average = p.total / p.count;
};
return p;
}
3)请参阅您的dataTable(或dynaTable)这些字段:
var datatable = $('.table').dataTable({
"aaData" : dateDimTotal.top(Infinity),
"bDestroy": true,
"aoColumns": [
{ "mData": function(d) { return d.value.label; }, "sDefaultContent": ""},
{ "mData": function(d) { return d.value.date; }, "sDefaultContent": ""},
{ "mData": function(d) { return d.value.count; }, "sDefaultContent": ""},
{ "mData": function(d) { return d.value.average; }, "sDefaultContent": ""}
]
})
您也可以直接在dc.js创建一个单一维度的多个关键领域的数组,如果你看一下简单的图表特定例子对dc.js Github上一系列的图表,你可以看到这是如何实现的。