0

d3ドキュメントによると:

ゼロへの補間またはゼロからの補間を行う場合、補間された値の一部が非常に小さい場合があります。JavaScript は指数表記で小さい数値をフォーマットしますが、残念ながら CSS ではサポートされていません。たとえば、不透明度をフェード インまたはフェード アウトに移行する場合、数値 0.0000001 は文字列 "1e-7" に変換されてから無視され、デフォルト値の 1 が与えられます。気を散らすちらつきを避けるには、遷移を 0 ではなく 1e-6 で開始または終了します。これは、指数表記でフォーマットされていない最小値です。

これにより、頻度が非常に低いヒストグラムで問題が発生します。四角形の高さは、エラーをスローする科学的な数値として補間されます。私は次のことを試しました:

svg.selectAll(".bar")
    .data(freq)
    .filter(function(d) {return d.freq>0.005})
    .transition()
    .duration(1000)
    .attr("y", function(d) { return y(d.freq); })
    .attr("height", function(d) { return height - y(d.freq) })

これにより、終了値がゼロになることは回避されますが、初期値がゼロに近い要素を除外するにはどうすればよいでしょうか?

4

1 に答える 1

0

バーを作成するときも同じことができます。

svg.selectAll("rect").data(freq).filter(...)
   .enter().append("rect");

この時点で、データを D3 に渡す前に事前にフィルター処理することは実際には理にかなっていvar filteredData = data.filter(...)ますfilteredData

于 2013-11-05T09:10:41.527 に答える