2017-08-02 20 views
2

からexampleを実装して面白いバグを見つけました。色が繰り返され、ユーザーがmouseoverアクションを繰り返すカラーチャートを使用している場合、現在のラベルだけではなく、現在の色ですべてのデータを表示します。散布図のバグ

チャート:ラベルmouseover

chart

バグ: enter image description here

enter image description here私はこのバグをいくつかfiddleを追加しました。これをどうすれば解決できますか?

+0

回避策として、すべてのシリーズに異なる色を使用することをお勧めしますか?本当にそれらの色を同じ色にしたい場合は、色をわずかに変えたり、異なる表現、すなわちrgb対hashとcolor name haha​​ yuckを使用することもできます。 – Gordon

+0

@ Gordonあなたは私にすべてのシリーズに異なる色を設定する方法をアドバイスできますか? Thanks –

答えて

2

はい、これはバグのようですが、dc.jsコードのdigによって問題が確認されます。凡例項目を描画するときに、イベントのコールバックが添付されます。 、そして、scatter.jsコードlet me confirm the bugに見

.on('mouseover', function (d) { 
    _parent.legendHighlight(d); 
}) 

::私たちは、そのハイライトは、アイテムの色があるかどうかをチェックすることによって行われる見ることができます

_chart.legendHighlight = function (d) { 
    resizeSymbolsWhere(function (symbol) { 
     return symbol.attr('fill') === d.color; 
    }, _highlightedSize); 
    _chart.chartBodyG().selectAll('.chart-body path.symbol').filter(function() { 
     return d3.select(this).attr('fill') !== d.color; 
    }).classed('fadeout', true); 
}; 

を重要なのは、アクションがon "mouseover" eventを行っています強調表示された凡例項目の色と同じです。あなたのケースでは、色が繰り返されるときに、あまりにも多くのポイントを強調表示します。

したがって、確かにバグであるため、in the dc.js githubの問題を登録することができます。

この場合、適切な項目を正しく強調表示するための簡単な修正はできません。生成されたHTMLでは、項目の識別が間に合わず、凡例とプロットを識別またはリンクすることはできません。それらをリンクするもの(既存のコードでそれを行うよりもここで書く方が簡単です))。

+0

ありがとうセドリック、あなたはかなり正しいです。 [ここに問題があります](https://github.com/dc-js/dc.js/issues/727)原作者がここで使用する固有のキーを見つけられなかったかもしれませんが、それでも恐ろしいことです。 – Gordon