1

私はビジュアライゼーションに取り組んでおり、x 軸を線形にスケーリングしてうまく動作させています ( d3.scale.linear()) d3.scale.ordinal()

視覚化はここにあります http://bl.ocks.org/natemiller/raw/f9aa776243c9035f75b2/

ある程度の進歩はありましたが、まだ解決していない問題が 2 つあります。

  1. x 軸の値の順序を指定したいと思います。現在、値は数値 (1,2,3..) であるため、現在は昇順にしたいと考えていますが、後でより有益なラベルを使用し、その順序も指定できるようにしたいと考えています。

  2. データ ポイントが x 軸のラベルと一致せず、その理由がわかりません。データを変換して並べる必要があるかもしれないと思いますが、それが正しいかどうかはわかりません。x 軸の範囲を rangeBands として指定し、それを使用して円の位置を設定していますが、明らかにこの指定にはいくつかのエラーがあります。

助けてくれてありがとう。

PS: これは別の問題ですが、ランダムに円に非常に小さな「ジッター」を導入して、互いに重なり合わないようにする手段があるかどうか疑問に思っています。これは静的プロットで行われることがあり、この視覚化への興味深い追加になる可能性があります。または、それが面倒になる可能性があります。

ネイト

4

1 に答える 1

4

序数スケールの値の順序は、それらを に与える順序です.domain()。つまり、必要な順序を渡す.domain()だけで機能するはずです。

円とラベルが並んでいる問題は、範囲バンドのサイズを考慮していないためです。つまり、円は範囲バンドの開始位置に配置され、ラベルは中央に配置されます。x 座標を設定するコードは次のようになります。

.attr("cx", function (d) { return x(d[axes.xAxis]) + x.rangeBand()/2; })

また、渡された数値をソートしたい場合があることに注意してください。x.domain()現在、最後の値はその前の値よりも小さいです。

「ジッター」に関しては、簡単な方法の 1 つは、円の座標に小さな乱数を追加することです。d3 では明示的なサポートはありませんが、実装は簡単です。

于 2013-03-30T12:27:29.910 に答える