0

我正在尝试通过单击堆叠栏中的某个矩形栏来过滤数据。这个堆栈条是一个二维图,水平指标是年份,垂直指标是不同的产品收入,我想按特定年份的特定产品进行过滤。意味着当我单击整个图表的矩形条时,数据应按特定年份和特定产品过滤。

我的代码是:

metrics.on("click", function(d,i,j){
         d3.select(this)
         .style("fill","lightcoral")
         .style("stroke","red");
         fdata =rawdata.filter(function(d){return (d[xvalue]==_seriesA[i])&&(d[yvalue]==_seriesB[j])});
    });

但奇怪的是 j 的值总是未定义的,尽管如果我给它附加一个标题:

metrics.append("title").text(
            function(d,i,j) {
                return i + ' - '+j ;
            });

j 的值将被正确打印,“on”点击功能有什么特别之处吗?为什么我不能得到 j 的值?任何帮助将不胜感激......这让我整晚都疯狂......

4

1 回答 1

0

根据文档,第二个参数.on()是一个接受两个参数的函数,而不是三个。同样,它也不应该在您的第二个示例中起作用。

我认为您对数据之间的区别及其呈现方式感到困惑。该.on()功能将为您提供数据。您在代码中某处创建的比例获取该数据并将其映射到图形中xy坐标(或者您直接使用没有比例的数据)。在.on()函数中,您使用数据的方式与创建图表时使用的方式完全相同。也就是说,数据项(d在您的代码中)包含您突出显示的特定位置的数据。

于 2012-12-31T05:38:51.903 回答