2014-02-08 83 views
0

我想做一個d3分組的條形圖。這是我到目前爲止: http://jsbin.com/sobuv/2/在D3分組圖表實現上的酒吧高度問題

我目前卡住的問題是如何我的酒吧的高度不匹配在y軸的值。例如,在第一組「Jan」中,值爲33.98,40.1,60.1,但我只設置高度。

我在做什麼錯在這裏 - 可能我想這些線?

.transition() 
    .duration(500) 
    .attr("y", parseInt(h, 10) - value) 
    .attr("height", value); 

我會很高興在這裏的手,我敢肯定它的東西很簡單,這是躲避我。謝謝!

+1

您正在創建x和y比例以繪製座標軸,但繪製矩形時從不使用它們。請看本教程以獲取有關條形圖的縮放的解釋:http://mbostock.github.io/d3/tutorial/bar-2.html – AmeliaBR

+0

什麼是我不瞭解的縮放比例? y(值)是否應該按照該值的比例返回高度? – Tim

+0

好吧,我想我明白了...... http://jsbin.com/sobuv/3但是爲什麼Mar的一個值不顯示? – Tim

回答

1

(重溫從評論)

如果你習慣使用統計學或電子表格圖表程序,你可能期望你的顯卡會根據創建的尺度,當你聲明的最大值和最小值繪製你的軸的值。這不是它如何與D3一起工作。每個元素都分別繪製爲一個SVG圖形對象,如果您給它的大小或位置值,則這些元素將被解釋爲像素值(如果使用任何圖形轉換,則轉換爲SVG座標)。

D3 scales用於管理數據值和屏幕像素之間的關係。根據數據值設置比例域,並根據要用於該數據的像素值設置比例範圍。對於線性(數值)比例尺,域和範圍被定義爲兩個元素的數組 - 第一個值是數據的像素值,等於域中的第一個值,第二個值是域中第二個值的像素值,以及每個其他值將與這些值成比例地計算。

但是簡單地創建規模是不夠的。比例對象是一個函數 - 您傳遞一個值作爲參數,並返回您應該用於設置SVG元素的寬度,高度,x和y位置的像素值。

好介紹給D3: