我想获得下一个结果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();
这可能吗?
我想点击区域名称,逐个合并,并根据所选数据重新计算百分比。
问候
非常感谢
答案 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
的总体百分比。