javascript - 使用复选框过滤数据 - D3

标签 javascript jquery filter d3.js scatter-plot

我很难使用 d3 图中的复选框进行过滤。这里我有五个复选框,我必须根据复选框值过滤特定数据。

HTML

<div id="company"
    <ul id='BestBrands'>

    <label class="checkbox">
                                                    <input class="select-all" type="checkbox" id="brandAll"  name="bands" value="M&B"
                                                    onclick="selectMainBrandALL('brandAll');">
                                                    Select All</label>

    <label class="checkbox">
                                                    <input type="checkbox" id="TCS"  name="TCS" 
                                                     >
                                                    TCS</label>

    <label class="checkbox">
                                                    <input id="CTS" type="checkbox" name="CTS" " >
                                                    CTS </label>

     <label class="checkbox">
                                                    <input type="checkbox" id="info"  name="info" >
                                                    Info</label>
    <label 

    </ul>
</div>

这里是生成图表的 D3 散点图代码。我在这里使用 Rickshaw 框架..

 v

ar 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("render-order", 1)
                               .attr("r", function(d) { return ("r" in d) ? d.r : graph.renderer.dotSize});

如果我必须根据数据过滤数据,我可以这样做

.filter(function(d) {
    return d.x < 100;
  });

我已经做到了

   var check  =graph.vis.selectAll(".ck input").on("change", function () {
  console.log(this.name)
  var selected = this.name, 
  display = this.checked ? "inline" : "none";

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

但它不起作用......请帮助我......

最佳答案

请参阅此处,了解非常相似的问题和答案:d3 map with checkbox filtering

我认为您应该首先将散点图中的圆圈附加到“点”类中。就像这样:

svg.selectAll(".dot")
  .data(data)
  .enter().append("circle")...

请参阅此处的示例:http://www.ryansloan.org/d3samples/scatterplot.html

然后,假设您的数据具有一些您尝试过滤的属性“名称”,请执行以下操作:

d3.selectAll(".input class id").on("change", function () {
  var selected = this.name, 
  display = this.checked ? "inline" : "none";

  svg.selectAll(".dot")
    .filter(function(d) { return d.name == selected; })
    .attr("display", display);
});

关于javascript - 使用复选框过滤数据 - D3,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17037862/

相关文章:

r - 删除特定值之前和之后的特定值的运行

javascript - Three.js: vertexAttributePointer: no bound ARRAY_BUFFER (迁移到r69后)

javascript - 如何通过类名重新加载图像 - Javascript 或 Jquery

jquery - 从 JavaScript 调用 DataTables 导出函数

elasticsearch - ElasticSearch对聚合进行过滤,而不会影响聚合计数

android - 同时过滤游标适配器listview 3个字段

javascript - 如何使用 Angular.js/JavaScript 为我的 HTML 页面支持多语言?

php - 设置 JQuery 选择不执行任何操作

javascript - 使用 Jquery,仅在选择时调用函数一次

jquery - Bootstrap 两列列表