2016-05-28 12 views
1

Mike Bostock's exampleをフォローして、正と負の値を持つ横棒グラフを作成しています。ds3.js水平バー - y軸を集中化するにはどうすればよいですか?

私はy軸を集中させようとしているので、x軸は常に同じ長さになるようにしています。しかしそこには例は見つけられません。私は、x軸のスケールをデータに敏感なままにしたいので、範囲を指定したくありません。

彼が仕事に与えた例は得られません。 :定量的尺度について

、d3.extent使用してデータ領域(最小値と最大値)を計算する:スケールNicing

var x = d3.scale.linear() 
    .domain(d3.extent(data, function(d) { return d.value; })) 
    .range([0, width]); 

最寄りに若干程度を延長します概数。 のゼロ値をキャンバスの中央に配置する場合は、最小値と最大値のうち大きい方を大きな値で取るか、希望するドメイン を単純にハードコードします。

正しくドメインを計算する方法や、大部分の歓迎に役立つ例はありますか。

答えて

2

まず、の方が大きいどちら発見してみましょう最小値または最大値:

var greater; 

if (Math.abs(d3.min(data, function(d){ return d.value})) > Math.abs(d3.max(data, function(d){ return d.value}))) { 
    greater = Math.abs(d3.min(data, function(d){ return d.value})); 
    } else { 
    greater = Math.abs(d3.max(data, function(d){ return d.value})); 
    }; 

そしてスケールを設定します。

var x = d3.scale.linear() 
.domain([greater * -1, greater]) 
.range([0, width]); 
+0

ハ!今すぐ明らかにそうだ!どうもありがとう。 –

関連する問題