2013-12-21 127 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

排序功能允许您基本上定义您喜欢的任何顺序,但如果它不基于尺寸,则必须提供其他顺序。 –