2015-08-16 8 views
2

Этот вопрос - Fix Node Position in D3 Force-Directed Layout - охватывает как фиксировать положение узла в силовой макете.Исправить только одно измерение узла в силовом расположении?

Мой вопрос заключается в том, как исправить один размер, X или Y, узла, а другой - реагировать на силы в макете.

ответ

2

Это не поддерживается напрямую в D3, но вы можете сделать это вручную, сбросив координату, которую вы хотите сохранить константой в функции обработчика tick.

force.on("tick", function() { 
    nodes.each(function(d) { 
    d.x = d.px = d.savedX; // similar for y 
    }); 
    // do other stuff 
}); 

Это требует, чтобы сохранить требуемое значение с данными, связанными с узлами, в примере, в атрибуте savedX (хотя вы можете явно использовать любое другое имя, пока он не используется что-нибудь еще).

+0

Спасибо! Для людей, которые это найдут - в первом абзаце есть немного документации об этом: https://github.com/mbostock/d3/wiki/Force-Layout и здесь - https://github.com/mbostock/d3/вики/Force-Layout # на – Laizer