0

積み上げバーの特定の四角形バーをクリックして、データをフィルタリングしようとしています。この積み上げ棒グラフは 2 次元のグラフで、横方向のインデックスは年数、縦方向のインデックスはさまざまな製品の収益です。特定の年の特定の製品でフィルター処理したいと考えています。グラフ全体の四角形のバーをクリックすると、データが特定の年と特定の製品でフィルター処理されることを意味します。

私のコードは:

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 の値は正しく出力されますが、「オン」クリック機能について何か特別なことはありますか? j の値を取得できないのはなぜですか? どんな助けでも大歓迎です....これは一晩中私を夢中にさせています...

4

1 に答える 1

0

ドキュメントによると、 の 2 番目の引数.on()は、3 つではなく 2 つの引数を取る関数です。同様に、2 番目の例でも機能しないはずです。

データとそのレンダリング方法の違いについて混乱していると思います。関数は.on()データを取得します。コードのどこかに作成したスケールは、そのデータを取得し、グラフ内の座標にマップしxますy(または、スケールなしでデータを直接使用します)。この.on()関数では、最初にグラフを作成したときとまったく同じ方法でデータを使用します。つまり、データ項目 (dコード内) には、強調表示している特定の位置のデータが含まれています。

于 2012-12-31T05:38:51.903 に答える