domain : 表示上のサイズ
range : 実際の出力サイズ (px)
例:幅が400pxの横棒グラフで最大値5000円として表示したいとき
// スケール設定
var xScale = d3.scale.linear() // スケールを設定
.domain([0, 5000]) // 表示上のサイズ
.range([0, 400]); // 実際の出力サイズ
// x軸の描画
svg.append("g")
.attr("class", "axis")
.attr("transform", "translate(0, 0)") // 出力起点
.call(d3.svg.axis()
.scale(xScale) //スケールを適用する
.orient("bottom") //下段に描画(bottomはデフォルトなので省略でもよい)
);
domainは表示上のサイズなので、rangeで指定した400px目に5000の目盛が表示されることになる。
上記のように適当に数値設定すると1円が0.08pxとなるので棒のrect幅計算が複雑になる。
その辺に注意して設置したほうがよい。