带有刷牙的D3堆积区域 - 仅显示第一个嵌套元素

时间:2014-02-25 15:20:09

标签: d3.js

我有一个奇怪的问题,我似乎无法弄明白。我有一个堆积区域图表,下面有一个较小的上下文图表,我可以刷相似于此:http://bl.ocks.org/mbostock/1667367

画笔正在工作,但仅适用于第一层(我已经将剪辑关闭,因为它更容易看到发生了什么)。

如果我检查控制台中的数据,刷子功能只有第一个键,如果我更改数据的顺序,图表中的键会发生变化,所以它始终是第一个键所在的位置。

这是一个JSFiddle:http://jsfiddle.net/goodspeedj/7Qzt4/

这是刷函数 - 函数中的第3行有console.log语句,显示数据只有'ABORTED'键(第一层)。

function brushed() {
    main_x.domain(brush.empty() ? mini_x.domain() : brush.extent());
    //main.select(".layer").attr("d", main_area);
    main.select(".layer").attr("d", function(d) { console.log(d); return main_area(d.values); })
    main.select(".x.axis").call(main_xAxis);
}  

我猜这是非常简单的事情 - 我似乎无法看到它。谢谢!

1 个答案:

答案 0 :(得分:3)

我想出来了。我应该一直在调用selectAll而不是在刷函数中选择。

此:

main.selectAll(".layer").attr("d", function(d) { console.log(d); return main_area(d.values); })

而不是:

main.select(".layer").attr("d", function(d) { console.log(d); return main_area(d.values); })