合并行而不创建维度和图形

时间:2017-04-12 15:52:31

标签: dc.js crossfilter

我想获得下一个结果https://jsfiddle.net/ajey2987/0bqjydx8/26/,  无需创建其他维度,组和图形,即没有region2dim和numxregion2以及函数reflect_filters。

var regiondim = ndx.dimension(function(d){return d.Region;});
var regiondim2= ndx.dimension(function(d){return d.Region;});
var numxregion=regiondim.group(); 
var numxregion2=regiondim2.group();

这可能吗?

我想点击区域名称,逐个合并,并根据所选数据重新计算百分比。

问候

非常感谢

1 个答案:

答案 0 :(得分:1)

我认为这里的主要观点是群组不会在自己的维度上观察过滤器,因此您需要做的是创建2个维度并将dc.js图表​​设置为使用维度和组没有联系。由于%计算还取决于需要未与过滤器维度相关联的groupAll组,因此您也希望在第二维上创建此组。

因此您的维度和组定义如下所示:

var ndx = crossfilter(datos);
var regiondim = ndx.dimension(function(d) {
  return '' + d.Region;
});
var regiondim2 = ndx.dimension(function(d) {
  return '' + d.Region;
});
var numxregion2 = regiondim2.group();
var countgroup = regiondim2.groupAll().reduceCount()

你的dc.js图表​​定义看起来像这样(基于你的例子,删除了格式):

barraxregion
  .dimension(regiondim)
  .group(numxregion2)
  .title(function(d) {
    return d.value + " (" + (d.value / countgroup.value() * 100).toFixed(1) + "%)"
  })

标题显示的值和基于先前定义的countgroup的总体百分比。

示例的工作版本:https://jsfiddle.net/esjewett/f4yqu8zo/1/