如何切换过滤器,以便一次只选择一个项目?

时间:2013-12-06 21:50:08

标签: d3.js crossfilter dc.js

我有2个图表。条形图和圆环图(有3个类别['A','B','C'])。 当我点击甜甜圈的一段时,我切换该元素在过滤器中的成员资格。

e.g。如果选择['A','B','C'],然后点击'A',我就会留下['B','C']。如果我再次点击“A”,那么我将返回到完整集。

是否可以更改此行为,以便点击“取消选择”不是“A”的所有内容。所以当我点击'A'时,我得到'A',当我点击'B'时,我得到'B'等。

这个example在第174行的rowChart中实现了这一点,但是我既不理解实现,也不能在我自己的工作中重现这一点。

相关代码粘贴在此处:

rowChart.width(340)
        .height(850)
        .dimension(cityDimension)
        .group(cityGroup)
        .renderLabel(true)
        .colors(["#a60000","#ff0000", "#ff4040","#ff7373","#67e667","#39e639","#00cc00"])
        .colorDomain([0, 0])
        .renderlet(function (chart) { // <-this bit onwards does the magic (I think)
            bubbleChart.filter(chart.filter());
        })
        .on("filtered", function (chart) {
            dc.events.trigger(function () {
                bubbleChart.filter(chart.filter());
            });
                    });

1 个答案:

答案 0 :(得分:0)

在d3中,如果你需要从更大的数据集中过滤一些数据,你可以这样做:

var filter = dataset.filter(function (d) { retrurn d.ValueToFilter == "FilterToApply"; });

例如,如果您有一个水果数据集,并且您只想要橙色,那么您可以这样做:

var filter = dataset.filter(function (d) { return d.fruit == "orange"; })

这将仅返回"orange"

中具有d.fruit属性的值