Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/mercurial/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
D3.js DC.js-选择菜单作为复合图表的过滤器_D3.js_Dc.js_Composite_Jquery Ui Selectmenu - Fatal编程技术网

D3.js DC.js-选择菜单作为复合图表的过滤器

D3.js DC.js-选择菜单作为复合图表的过滤器,d3.js,dc.js,composite,jquery-ui-selectmenu,D3.js,Dc.js,Composite,Jquery Ui Selectmenu,我的数据集类似于 我用复合折线图来表示这些数据 我正在使用selectMenu筛选“BW”和“NS”记录。但当我使用selectmenu时,复合图表保持不变 我将数据拆分为两个单独的文件(一个带有“BW”记录,另一个带有“NS”记录),以尝试实现中提供的数据选择功能。那也不行 最后,我想通过带或不带选择菜单的“BW”和“NS”记录过滤多个图表(复合、系列和气泡) 我如何实现这一点 问题不在于选择菜单或合成图表,而在于减少数据的方式 第一个参数是add函数,第二个参数是remove函数,最后一个

我的数据集类似于

我用复合折线图来表示这些数据

我正在使用selectMenu筛选“BW”和“NS”记录。但当我使用selectmenu时,复合图表保持不变

我将数据拆分为两个单独的文件(一个带有“BW”记录,另一个带有“NS”记录),以尝试实现中提供的数据选择功能。那也不行

最后,我想通过带或不带选择菜单的“BW”和“NS”记录过滤多个图表(复合、系列和气泡)


我如何实现这一点

问题不在于选择菜单或合成图表,而在于减少数据的方式

第一个参数是add函数,第二个参数是remove函数,最后一个参数是initialize函数

您通常不希望在执行以下操作时直接从
v
设置
p

var grp = dim.group().reduce(
          function(p,v){
            p.m = +v.m;
            p.a = +v.a;
            p.b = +v.b;
            return p;
          },
          function(p,v){
            p.m = +v.m;
            p.a = +v.a;
            p.b = +v.b;
            return p;
          },
          function(){return {m:0, a:0, b:0}; });
只有当每把钥匙都是完全唯一的,并且没有两件物品落在同一个箱子里时,这才有效

而且您几乎不想在remove函数中从
v
设置
p
。这将防止任何东西被移除

相反,添加和减去值,如下所示:

var grp = dim.group().reduce(
          function(p,v){
            p.m = p.m + +v.m;
            p.a = p.a + +v.a;
            p.b = p.b + +v.b;
            return p;
          },
          function(p,v){
            p.m = p.m - +v.m;
            p.a = p.a - +v.a;
            p.b = p.b - +v.b;
            return p;
          },
          function(){return {m:0, a:0, b:0}; });

这是一个。

谢谢你的解释,戈登。每当我想对多个列进行分组时,我只是简单地使用了reduce,而没有对它进行太多的考虑。下次我会记住这一点。
var grp = dim.group().reduce(
          function(p,v){
            p.m = p.m + +v.m;
            p.a = p.a + +v.a;
            p.b = p.b + +v.b;
            return p;
          },
          function(p,v){
            p.m = p.m - +v.m;
            p.a = p.a - +v.a;
            p.b = p.b - +v.b;
            return p;
          },
          function(){return {m:0, a:0, b:0}; });