2013-12-21 125 views
1

我是D3的新手,我構建了我的第一個樹狀圖。D3樹圖節點順序

我想弄清楚從左到右,從上到下排列節點而不是從右到左+從上到下。該順序基於每個節點的大小值。

現在,它看起來像

size 20 | size 100 
size 50 | 
size 70 | size 200 

,但我要像

size 200 | size 70 
      | size 50 
size 100 | size 20 

這裏是全JSfiddle

我真的很感激它。

回答

5

您可以使用樹圖佈局的.sort function來實現此目的。默認的排序是這樣的:

.sort(function(a,b) { 
    return b.value - a.value; 
}) 

爲了得到正是你需要你想要什麼調整大小以及將其更改爲反向

.sort(function(a,b) { 
    return a.value - b.value; 
}) 

改變整體佈局一樣,所以。

var treemap = d3.layout.treemap() 
.size([width/1.5, height]) 
.sticky(true) 
.sort(function(a,b) { 
    return a.value - b.value; 
}) 
.value(function(d) { return d.size; }); 

完整示例here

+0

甜,非常感謝你的幫助。如果我想要左 - >右,但保持底部 - >頂部順序而不是頂部 - >底部? – user2975436

+0

排序功能允許您基本上定義您喜歡的任何順序,但如果它不基於尺寸,則必須提供其他順序。 –