使用热图dc.js进行交叉过滤。

问题描述 投票:1回答:1

试图建立一个 简单的仪表盘 用热图(建立为图表)和行图。选择区域,我希望在行图上看到变化,反之亦然。但是这样就不行了。

var dim = ndx.dimension(d=>[d.x,d.y,d.region])

var group = dim.group().reduce(
    (p,v)=>{
        ++p.count;
        p.total+=v.salary;
        p.avg_salary=p.total/p.count;
return p
},
(p,v)=>{
    --p.count;
    p.total-=v.salary;
    p.avg_salary=p.total/v.count;
return p
},
()=>({avg_salary: 0,count: 0,total:0})
)


var graduationDim = ndx.dimension(d=>d.graduation)
var graduationGroup = graduationDim.group().reduce(
        (p,v)=>{
        ++p.count;
        p.total+=v.salary;
        p.avg_salary=p.total/p.count;
return p
},
(p,v)=>{
    --p.count;
    p.total-=v.salary;
    p.avg_salary=p.total/v.count;
return p
},
()=>({avg_salary: 0,count: 0,total:0}))

我到底做错了什么?任何帮助或建议都是非常感激的,谢谢。

dc.js crossfilter
1个回答
0
投票

这是你的reduce-remove函数中的一个错误。v.count 应是 p.count:

(p,v)=>{
    --p.count;
    p.total-=v.salary;
    p.avg_salary=p.total/p.count;
return p
},

因为这个字段在你的原始数据中不存在,所以你可能得到的是NaNs。

您的代码本的工作叉.

© www.soinside.com 2019 - 2024. All rights reserved.