2013-12-21 6 views
1

Я новичок в D3, и я построил свой первый treemap.D3 treemap node order

Я пытаюсь найти узлы (ы) слева направо + сверху вниз, а не справа налево + снизу вверх. Порядок основан на размере каждого узла.

Прямо сейчас, это выглядит как

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

, но я хочу, как

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

Вот полный JSfiddle.

Я действительно ценю это заранее.

ответ

5

Для достижения этой цели вы можете использовать конструкцию treemap .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

Функция сортировки позволяет вам определить в основном любой порядок, который вам нравится, но если он не зависит от размеров, вам придется предоставить что-то еще для заказа. –

Смежные вопросы