2015-04-05 46 views
1

我正在玩d3.js,我遇到了一些奇怪的事情。在d3.js中改變y軸方向時丟失條紋

當我改變

var yScale = d3.scale.linear() 
     .domain([0, d3.max(data, function(d) { return d.Distance})]) 
     .range([0, h]) 

var yScale = d3.scale.linear() 
     .domain([0, d3.max(data, function(d) { return d.Distance})]) 
     .range([h, 0]) # CHANGED LINE 

得到軸在正確的方向來算,一個酒吧去失蹤,其餘棒的高度不再與值對應在軸上。

在這裏看到一個jsfiddle

我檢查的文件,我無法找到我在這裏失蹤。任何幫助將不勝感激。

回答

1

酒吧不會失蹤。它只有0的高度(即您看不到它),因爲您將域[0, 118377]中的最大值118377映射到範圍([h, 0])中的0。

您可以通過右鍵單擊圖形並單擊「檢查元素」按鈕來檢查它。你會看到三個rect元素,最後一個元素將會有height="0"

我假設你想讓y軸從與x軸相交的0開始。看看這個fork of your fiddle,我改變了屬性計算爲以下:

... 
.attr("y", function(d) { return yScale(d.Distance); }) 
.attr("height", function(d) { return h - yScale(d.Distance); }) 
+0

我看到我去擰有@Oleg,但是當我改變域[118377,0]的值我y軸翻轉回來,所以它從上到下重新計數,而不是從下到上。 – commesan 2015-04-05 13:00:22

+0

@commesan我已經編輯了答案,通過添加一個鏈接到你的小提琴的叉子。基本上,如果反轉範圍,則需要相應地調整屬性計算。 – Oleg 2015-04-05 13:06:24

+0

這個伎倆!謝謝@Oleg在我發現之前,我會失去幾個小時。 – commesan 2015-04-05 13:09:14