gpt4 book ai didi

dc.js - 使用下拉列表过滤交叉过滤器维度

转载 作者:行者123 更新时间:2023-12-01 05:12:21 25 4
gpt4 key购买 nike

我正在尝试通过在下拉列表中选择值来过滤我的行图。
为此,我创建了一个维度并根据下拉列表中的选定值对该维度应用过滤器。

行图必须显示平均值,为此我创建了 ReduceAdd/Remove/Initial 函数。
平均值按预期工作。

但是,当我过滤用于下拉列表的维度时,它似乎向我的行图中添加了重复的值。

示例代码:http://jsfiddle.net/sy9xA/4/

var dropDownFilterDimension;
function ReduceAdd(p, v) {
var value = v.value;
++p.countAvg;
p.totalAvg += value;
return p;
}

function ReduceRemove(p, v) {
var value = v.value
--p.countAvg;
p.totalAvg -= value;
return p;
}

function ReduceInitial() {
return {countAvg: 0, totalAvg: 0};
}


function filterDropdown(dropDownID){
dropDown = document.getElementById(dropDownID);
dropDownFilterDimension.filterAll();
values = $(dropDown).val();
if( values != null ){
dropDownFilterDimension.filter(function(d) { if (values.indexOf(d) > -1) {return d;} });
}
dc.redrawAll();
}

Here for example, when "banana"is selected for filtering. ReduceRemove 为所有未选择的值调用,但此外,ReduceAdd 为香蕉调用(即使它已经在其中)。
所以现在在选择香蕉后,选择了苹果。香蕉还是有一定的值(value)的。

有人可以解释为什么会这样吗?或者我怎样才能避免这种情况发生?

提前致谢!
罗伯特

最佳答案

我还没有完全理解你在做什么,因为 jsfddle 只显示 js。

我可以告诉我我是怎么做的:

  • 您有一个与 dc 图表相关联的维度(ex chartDim)
  • 您有一个计算与直流图表相关的平均值的组(例如averageGroup)
  • 您有一个下拉列表,其中包含一组用作过滤器的值 (#myDropDown)

    d3.select('#myDropDown')
    .on('改变', function(){
    chartDim.filter(this.value)
    dc.redrawAll();
    })

  • dc.redrawAll() 的调用不仅会更新图表,还会更新averageGroup,一切都应该没问题。如果 dropDown 有自己的维度,只需过滤这个而不是 chartDim

    关于dc.js - 使用下拉列表过滤交叉过滤器维度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23676236/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com