6
x.scale = d3.time.scale().domain(x.extent).range([0, dimensions.graph.width]);

このコードは、x.extent( [Wed Aug 01 2012 00:00:00 GMT+0300 (EEST), Tue Aug 07 2012 00:00:00 GMT+0300 (EEST)]) とグラフ幅 (1000) を使用してx値のスケールを生成します。ただし、この値を最も近い 25 の倍数 ( Math.round(x/25)*25) に丸める必要があります。

これを行うことで、現在次のように定義されている正確な幅の目盛りを実現したいと考えています。

x.axis = d3.svg.axis()
    .ticks(d3.time.days, 1)
    .tickSize(10, 5, 0)
    .scale(x.scale);

x.scale最も近い25の倍数に丸めるにはどうすればよいですか?

4

3 に答える 3

1

誤解かもしれませんが、スケール関数を適用した後、提案どおりに結果を変換できませんでしたか? すなわち:

function roundScale(origVal) { return Math.round(x.scale(origVal)/25) * 25;}

次に、その値を使用して属性を設定します。

.attr("x", function(d) { return roundScale(d.value); }
于 2012-08-26T19:14:53.163 に答える