【发布时间】:2020-04-08 13:59:25
【问题描述】:
我有一个我感兴趣的逻辑单一维度。我想使用多个过滤器对其进行过滤 - 一个在图表中,一个在文本选择对象中。这是a sample,它是这样的:
当仅使用文本选择器时,然后当我们在概览中添加选择时:
请注意,选择器和表格中的所有文本都会消失。如何使至少表格中的文本保持活跃/可见?还是 dc.js 的 bug?
var data = [{
'name': 'c',
'time': 0,
'val': 1
},
{
'name': 'c',
'time': 1,
'val': 7
},
{
'name': 'b',
'time': 0,
'val': 2
},
{
'name': 'b',
'time': 1,
'val': 3
},
{
'name': 'a',
'time': 0,
'val': 4
},
{
'name': 'a',
'time': 1,
'val': 5
}
];
var ndx = crossfilter(data);
var runDimension = ndx.dimension(function(d) {
return [d.name, +d.time];
});
var run2Dimension = ndx.dimension(function(d) {
return [d.name, d.time];
});
var run3Dimension = ndx.dimension(function(d) {
return [d.name];
});
var runGroup = runDimension.group().reduceSum(function(d) {
return +d.val;
});
var select1 = dc.selectMenu('#test-select1');
var select2 = dc.selectMenu('#test-select2');
var overview = dc.seriesChart('#test-view');
var focus = dc.seriesChart('#test-view2');
var datatable = dc.dataTable('#test-dt');
select1
.dimension(run3Dimension)
.group(run3Dimension.group())
.multiple(true)
.numberVisible(10)
.controlsUseVisibility(true);
select2
.dimension(run2Dimension)
.group(run2Dimension.group())
.multiple(true)
.numberVisible(10)
.controlsUseVisibility(true);
datatable
.dimension(run3Dimension)
// Group table by
//.section(function(d) {
// return d.val;
//})
.columns(['name', 'time', 'val'])
.size(data.length);
overview
.width(768)
.height(100)
.chart(function(c) {
return dc.lineChart(c).curve(d3.curveCardinal);
})
.x(d3.scaleLinear().domain([0, 20]))
.brushOn(true)
.xAxisLabel("Run")
.clipPadding(10)
.dimension(runDimension)
.group(runGroup)
.seriesAccessor(function(d) {
return "Expt: " + d.key[0];
})
.keyAccessor(function(d) {
return +d.key[1];
})
.valueAccessor(function(d) {
return +d.value;
});
focus
.width(768)
.height(480)
.chart(function(c) {
return dc.lineChart(c).curve(d3.curveCardinal).evadeDomainFilter(true);
})
.x(d3.scaleLinear().domain([0, 20]))
.brushOn(false)
.yAxisLabel("Measured Speed km/s")
.yAxisPadding("5%")
.xAxisLabel("Run")
.elasticY(true)
.dimension(runDimension)
.group(runGroup)
.mouseZoomable(true)
.rangeChart(overview)
.seriesAccessor(function(d) {
return "Expt: " + d.key[0];
})
.keyAccessor(function(d) {
return +d.key[1];
})
.valueAccessor(function(d) {
return +d.value;
})
.legend(dc.legend().x(350).y(350).itemHeight(13).gap(5).horizontal(1).legendWidth(140).itemWidth(70));
dc.renderAll();
【问题讨论】:
标签: javascript filtering dc.js crossfilter data-processing