【问题标题】:Filtering option in D3D3 中的过滤选项
【发布时间】:2013-06-19 06:32:44
【问题描述】:

我正在研究 D3(Rickshaw 框架),我必须使用名称过滤数据。

这是人力车用来创建圆圈的代码。

var nodes = graph.vis.selectAll("path").data(series.stack.filter(function(d) {
    return d.y !== null
})).enter().append("svg:circle").attr("cx", function(d) {
    return graph.x(d.x)
}).attr("cy", function(d) {
    return graph.y(d.y)
}).attr("fill-opacity", 1.0).attr('transform', 'translate(22,0)').attr("r", function(d) {
    return ("r" in d) ? d.r : graph.renderer.dotSize
});

我试图像这样过滤数据

$('#BestBrands input').on("change", function () {   
    console.log("called")
    var selected = $(this).attr('name'),
        display = this.checked ? "inline" : "none";
    console.log(selected)

    graph.vis.selectAll(".filter")
        .data(series.stack.filter(function(d) {
            return series.name[0] == selected
        }))    
        .attr("display", display);
});

//series.name 等于 d3.js 中的 d.name 所以 series[0] 是第一个坐标名 它不工作。我需要在课堂上附加任何课程吗?我不清楚这一点。我应该怎么做才能根据名称过滤数据?

【问题讨论】:

    标签: javascript jquery graph d3.js rickshaw


    【解决方案1】:

    如果我理解你的代码:

    graph.vis.selectAll("path")
      .data(series.stack.filter(function(d){
            //should return a boolean
            return selected === 'something';
           }))
        .attr("display", display);
    });
    

    编辑:

    $('#BestBrands input').on("change", function () {   
        console.log("called")
        var selected = $(this).attr('name'),
            display = this.checked ? "inline" : "none";
        console.log(selected)
    
        graph.vis.selectAll(".filter")
            .data(series.stack.filter(function(d) {
                return series[0].name == selected //assuming series[] is an array
            }))    
            .attr("display", display);
    });
    

    【讨论】:

      【解决方案2】:

      您似乎打算使用var selected = $(this).attr('name'),但从不将其与任何东西进行比较。

      在这一行:

      series.stack.filter(function(d){ return d.selected })
      

      我怀疑您想将d.selectedselected 进行比较。现在,这只是我的假设(你知道他们对假设的看法),但鉴于我在 D3 方面的经验,series.stack.filter 将遍历series.stack 中的元素,因此您需要确保d.selected是你想要的属性。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2021-10-02
        • 1970-01-01
        • 1970-01-01
        • 2013-06-06
        • 1970-01-01
        • 2011-11-04
        • 2021-04-17
        相关资源
        最近更新 更多