D3.js dc.js在多个值上添加过滤器
我正在使用dc.js 我想添加基于复选框选择的过滤器。这是我的设想 当我选择复选框的基础上,我需要过滤器 这是我的密码D3.js dc.js在多个值上添加过滤器,d3.js,crossfilter,dc.js,D3.js,Crossfilter,Dc.js,我正在使用dc.js 我想添加基于复选框选择的过滤器。这是我的设想 当我选择复选框的基础上,我需要过滤器 这是我的密码 var ndx = crossfilter(readData); var practiceDimension = ndx.dimension(function (d) { return d.practice_name; }); $('#treeview input[name="practice_name[
var ndx = crossfilter(readData);
var practiceDimension = ndx.dimension(function (d) {
return d.practice_name;
});
$('#treeview input[name="practice_name[]"]:checked').each(function() {
if(searchPracticeArray.indexOf($(this).val()) == -1)
searchPracticeArray.push($(this).val());
// If I added searchPracticeArray as filter parameter then it's not working
// searchPracticeArray value are ['LPS','Mercy']
practiceDimension = practiceDimension.filter($(this).val());
bubbleChart.filter($(this).val());
});
目前我有两个复选框,但它应该是两个以上 您可以基于函数筛选维度。我建议你这样做
但是,请记住,此函数将在某个时刻对数据集中的每个记录运行,因此您只需执行一次DOM查询,然后将这些值保存到函数范围内的数组中,然后对其进行筛选。嗨,我找到了一些类似的解决方案 这里searchPracticeArray是数组值,它根据选择存储值
if(searchPracticeArray.length > 0)
{
var practiceDimensionFilterData;
for(var d=0; d < searchPracticeArray.length; d++ )
{
pract_name_search = searchPracticeArray[d].key;
practiceDimensionFilterData = readData.filter(function(d){ return(d.practice_name == pract_name_search)})
practiceDimension2[d] = practiceDimensionFilterData
if(d > 0)
{
practiceDimension6 = practiceDimension2[0].concat(practiceDimension2[d])
}
else{
practiceDimension6 = practiceDimension2[d];
}
bubbleChart.filter(pract_name_search);
}
ndx = crossfilter(practiceDimension6);
}
if(searchPracticeArray.length>0)
{
var practiceDimensionFilterData;
for(var d=0;d0)
{
practiceDimension6=practiceDimension2[0]。concat(practiceDimension2[d])
}
否则{
实际尺寸6=实际尺寸2[d];
}
bubbleChart.filter(实用名称搜索);
}
ndx=交叉滤波器(实际尺寸6);
}
Hi,我找到了一些逻辑,请检查一下,让我知道这是对多个字段进行过滤的正确方法。不,这不正确,或者更确切地说,它没有使用交叉过滤。您需要使用Crossfilter的维度和过滤器API。