我有一个项目列表,其中一些项目有相同项目的多行(同一项目的不同变体)。
我想计算总共有多少项,以及选择了多少项。但是,当我使用数据计数窗口小部件时,默认情况下它只适用于行数,但无法弄清楚如何更改该行为。
var data=[{"item":"Category A","color":"blue"},
{"item":"Category B","color":"blue"},
{"item":"Category A","color":"pink"}];
var ndx = crossfilter(data);
var dimension = ndx.dimension(function(d) {return d.item;});
var all = ndx.groupAll();
dc.dataCount('.dc-data-count')
.dimension(ndx)
.group(all)
.html ({some: "%filter-count selected out of %total-count items <a class='btn btn-default btn-xs' href='javascript:dc.filterAll(); dc.renderAll();' role='button'>Reset filters</a>", all: "%total-count items. Click on the graphs to filter them"})
根据dc doc,唯一可能的维度是整个数据集,唯一的组是dimension.groupAll()返回的一个
是否有一种解决方法可以计算除记录数量之外的其他内容(例如,ndx.dimension(function(d){return d.item;});?
答案 0 :(得分:0)
嗯,这很丑陋,但你很容易破解它以产生其他行为。
如果您查看代码,则只会在维度上调用.size()
,并且仅在该组上调用.value()
。这就是为什么文件说只有一个小组才合适;常规组没有.value()
。
https://github.com/dc-js/dc.js/blob/develop/src/data-count.js#L93-94
但它不会在维度或组上调用其他方法,因此您可以非常轻松地伪造它:
chart.dimension({size: function() {
return 42; // calculate something here
} });
使用两个数字显示小部件可能更合适,但这应该有效。