2016-05-28 74 views
1

我跟隨Mike Bostock's example產生一個帶有正值和負值的水平條形圖。ds3.js單槓 - 如何集中y軸?

我想集中y軸,以便每邊都有相同長度的x軸。但是在那裏找不到任何例子。我希望x軸的比例尺對數據保持敏感,所以我不想指定範圍。

我無法得到他給工作的例子。 :

對於定量尺度,使用d3.extent計算數據域(最小值和最大值):

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

Nicing規模將稍微延伸的程度爲最接近的整數。如果您希望零值到 位於畫布中央,則可以取大小的最小值和最大值中的較大值,或者簡單地對所需的域進行硬編碼。

任何如何正確計算域的例子或幫助最受歡迎!

回答

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

哈!現在看起來如此明顯!非常感謝。 –