我正在尝试添加dc-count-widget,但我需要绕过默认维度/组,即所有data / groupAll。我的数据如下:
`[{"subjId":"subj1", "temp":"37"},
{"subjId":"subj1", "temp":"38"},
{"subjId":"subj2", "temp":"36.5"},
{"subjId":"subj2", "temp":"37.3"},
{"subjId":"subj3", "temp":"39"}
]`
我想在临时“温度”和直流计数上添加一个尺寸,以反映当我在温度范围内过滤时唯一主题的数量。
EDIT 我试过了:
subjectColumnName = 'subjId'
subjectDim = cfData.dimension(function(d) {return d[subjectColumnName]})
chart.dimension(subjectDim.group())
chart.group(subjectDim.groupAll())
但是在过滤时我得到的重复项不是唯一的主题数。
由于
答案 0 :(得分:0)
谢谢@Gordon dataCount graph filtered by a dimension中的解决方案可行,但如果其他图表被过滤,则窗口小部件不会更新,因此我必须创建自定义组功能以仅计算唯一主题。
我还不确定reduceRemoveSubj函数是否正确。它看起来像是一个非常有用的解决方案!
这是:
function reduceAddSubj(p, v) {
if( v[subjectColumnName] in p.subjects){
p.subjects[v[subjectColumnName]]++
}
else {
p.subjects[v[subjectColumnName]] = 1;
++p.count;
}
return p;
}
function reduceRemoveSubj(p, v) {
p.subjects[v[subjectColumnName]]--;
if(p.subjects[v[subjectColumnName]] === 0){
delete p.subjects[v[subjectColumnName]];
--p.count;
}
return p;
}
function initialSubj() {
return {subjects: {},
count:0
};
}
subjectColumnName = 'subjId'
subjectDim = cfData.dimension(function(d) {return d[subjectColumnName]})
uniqueSubjGrp = subjectDim.groupAll().reduce(reduceAddSubj, reduceRemoveSubj, initialSubj)
uniqueSubjGrpM = {value: function() {
return uniqueSubjGrp.value().count;
} };
chart.dimension(subjectDim.group())
chart.group(uniqueSubjGrpM)