我的数据集类似于this。
name,code,proc,subP,date,m,a,b,o,t
BW,1333,29,1,2015-12-29 02:30:00,10,0,0,0,10
BW,1333,29,1,2015-12-29 12:00:00,25,0,0,0,25
BW,1333,29,1,2015-12-30 12:00:00,26,0,0,0,26
BW,1333,29,2,2015-12-31 12:00:00,27,0,0,0,27
BW,1333,29,2,2016-01-01 12:00:00,26.1,4.9,1.8,0,32.8
BW,1333,29,2,2016-01-02 12:00:00,26.4,4.9,1.9,0,33.2
BW,1333,29,2,2016-01-03 12:00:00,26.2,4.9,1.9,0,33
...
NS,1212,11,1,2016-07-28 15:30:00,1.6,3.7,4.4,0,9.7
NS,1212,11,1,2016-07-29 12:00:00,17.4,2.3,0,0,19.7
NS,1212,11,1,2016-07-30 12:00:00,21,5,14.1,0,40.1
NS,1212,11,2,2016-07-31 11:12:00,18.1,3.5,6.1,0,27.7
NS,1212,11,2,2016-07-31 12:00:00,0.1,0.2,0.2,0,0.5
NS,1212,11,2,2016-08-01 12:00:00,0.1,2.7,2.6,0,5.4
我正在使用复合折线图表示此数据。
我正在使用selectMenu过滤“ BW”和“ NS”记录。但是当我使用selectmenu时,综合图表保持不变。
我将数据分为两个单独的文件(一个带有'BW'记录,另一个带有'NS'记录)以尝试实现dc.js Series Chart example中提供的数据选择功能。那也不起作用。
Here is a fiddle with one of the charts.
最终,我想通过带有或不带有选择菜单的“ BW”和“ NS”记录过滤多个图表(合成,系列和气泡)。
我该如何实现?
答案 0 :(得分:1)
问题不在于您的selectMenu或复合图表,而在于您减少数据的方式。
group.reduce()的第一个参数是添加函数,第二个参数是删除函数,最后一个是初始化函数。
您通常不希望像这样做那样直接从p
设置v
:
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}; });
仅当每个键都是唯一的并且没有两个项位于同一容器中时,这才起作用。
您几乎从不需要在删除功能中设置p
中的v
。这样可以防止任何东西被移除。
相反,像这样添加和减去值:
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}; });