0

私のd3グラフは、特定のズームレベルで0と1の間の中間値を入力しています。0と1は実際にはデータセットの一部であるため、アクセサーを使用してyAxisパラメーターでの外観を制御できtickFormatます。

d3が作成する中間の10進値を表示したくありません。

d3はそれらを薄い空気から作成しているのでtickFormat(d3.format(", .0f")、データセット内の要素から小数を削除するだけなので、単純に行うことはできません。

d3が10進値である場合に生成する偽の値を削除するにはどうすればよいですか?さらにズームレベルを上げると、中間値が表示されます。

4

1 に答える 1

3

https://github.com/mbostock/d3/wiki/SVG-Axesから役立つ可能性のある2つのこと:

# axis.ticks([arguments…])

基になるスケールのティック関数に渡される引数を取得または設定します。指定された引数はscale.ticksに渡され、ティック値が計算されます。定量的スケールの場合は、などの目的のティックカウントを指定しますaxis.ticks(20)

これは、使用するティックの数を示唆します(ただし、常にあなたの声を聞くとは限りません)が、ズームインしたときの混乱を減らすことができます。

また:

# axis.tickValues([values])

明示的なティック値を取得または設定します。配列が指定されている場合、スケールのティックジェネレーターを使用するのではなく、値がティックの生成に使用されます。がnullの場合、以前に設定された明示的な目盛り値をクリアし、スケールの目盛りジェネレーターに戻ります。が指定されていない場合は、現在設定されているティック値があればそれを返します。たとえば、特定の値でティックを生成するには、次のようにします。

var xAxis = d3.svg.axis()
    .scale(x)
    .tickValues([1, 2, 3, 5, 8, 13, 21]);

これにより、目盛りが明示的に設定されるため、目盛りをに設定できますが[0, 1]、ユーザーがズームアウトしたときに手動で修正する必要があります。おそらく、ズーム範囲などで整数を計算することができます。

于 2013-03-22T19:25:27.400 に答える