グラフに表示されるd3.svg.axis整数ラベルの数を制限する可能性はありますか?たとえば、このグラフを見てください。ここにはサイズが5つしかありません:[0, 1, 2, 3, 4]
。ただし、ティックは.5, 1.5, 2.5
および3.5
についても表示されます。
独自のフォーマット関数を作成する代わりに、d3.format
を使用できるはずです。
d3.svg.axis()
.tickFormat(d3.format("d"));
また、軸がデフォルトで自動的に使用するスケールでtickFormat
を使用することもできます。
完全に除外するのではなく、これらの値を非表示にするだけで十分であることに気付きました。これは、tickFormat
(https://github.com/mbostock/d3/wiki/Formatting#wiki-d3_format)を次のように使用して実行できます。
d3.svg.axis()
.tickFormat(function(e){
if(Math.floor(e) != e)
{
return;
}
return e;
});
TickFormatとしてのd3.format("d")
の使用は、すべてのシナリオで機能するわけではありません( このバグを参照 )。 Windows Phoneデバイス(およびおそらく他のデバイス)では、計算が不正確であると、ティックが整数として正しく検出されない場合があります。 e。 「3」のティックは2.9999999999997として内部的に格納される場合があり、d3.format("d")
の場合は整数ではありません。
その結果、軸はまったく表示されません。この動作は、最大10の目盛り範囲で特に顕著になります。
考えられる解決策の1つは、イプシロン値を指定してマシンエラーを許容することです。値はこのように正確な整数である必要はありませんが、イプシロンの範囲までの次の整数とは異なる場合があります(データエラーよりもかなり低いはずです)。
var epsilon = Math.pow(10,-7);
var axis = d3.svg.axis().tickFormat(function(d) {
if (((d - Math.floor(d)) > epsilon) && ((Math.ceil(d) -d) > epsilon))
return;
return d;
}
他のスレッドでも言及されている別の解決策は、固定ティックカウントを指定してから、ティック(現在は「ほとんど」の整数)を最も近い整数に丸めることです。これが機能するには、データの最大値を知る必要があります。
var axis = d3.svg.axis().ticks(dataMax).tickFormat(d3.format(".0f"))