使用crossfilter.js时,如何防止在所选范围之外选择数据突出显示?

时间:2014-01-30 21:00:19

标签: d3.js crossfilter dc.js

我是crossfilter.js的新手。每当我使用范围选择器时,我会在我的过滤范围之外的条形图上得到奇怪的块状突出显示区域。我无法弄清楚我做错了什么。

如何防止这个块状部分在我的范围之外突出显示?

Crossfilter strange bar selection

d3.csv("mydata.csv", function(data) {

    data.forEach(function(d) {
        d.conf = d3.round(+d.Conf,1);
        console.log(d.conf);

    });

    var facts = crossfilter(data); // Put data into crossfilter

    var confDim = facts.dimension(function (d) { return d.conf;}); // conf # filter
    var confTotal = confDim.group().reduceCount(function (d) { return d.conf;});

    var confChart = dc.barChart("#conf-chart");

    confChart
        .width(500).height(200)
        .dimension(confDim)
        .group(confTotal,"Confidence Number")
        .x(d3.scale.linear().domain([0,5]).range([10,400]))
        .yAxisLabel("Number of data points")
        .brushOn(true);

    dc.renderAll();

    });

1 个答案:

答案 0 :(得分:0)

您评论为过滤器的这一行实际上只是完整地设置维度:

var confDim = facts.dimension(function (d) { return d.conf;}); // conf # filter

您需要使用其中一个过滤器功能定义过滤器。请参阅文档here

请仔细阅读dimension.group的文档,因为它包含一个问题,即不会应用分组维度上的过滤器。要解决此问题,您可能需要实际定义两个相同的维度,并使用一个用于过滤,另一个用于分组。