2012-04-11 2 views
2

d3.js를 사용하여 그래프를 시각화하려고했습니다. 나는 2 개의 배치, 묶음 방사형 및 힘을 시도했다.노드와 모서리가있는 간단한 그래프 모델링.

모든 노드가 부모 노드를 필요로하고 그래프 시각화에 적합하지 않기 때문에 번들 방사형이 작동하지 않았습니다.

강제 레이아웃의 경우 스크립트가 중단됩니다. 아마도이 그래프에는 많은 노드와 모서리가 있기 때문일 수 있습니다. 또한 강제 레이아웃과 함께 제공되는 시뮬레이션이 필요 없습니다.

d3.js에 다른 레이아웃을 사용해도 되나요?

+0

우리는 몇 개의 노드와 에지를 말하고 있습니까? –

답변

4

시뮬레이션이 필요하지 않은 경우 정적으로 강제 레이아웃을 사용할 수 있습니다. force.start를 호출 한 후, 시뮬레이션을 중단 force.stop 다음 번 몇 개의 force.tick 전화 :

// Run the layout a fixed number of times. 
// The ideal number of times scales with graph complexity. 
// Of course, don't run too long—you'll hang the page! 
force.start(); 
for (var i = n; i > 0; --i) force.tick(); 
force.stop(); 

일부의 경우를, 좋은 솔루션을 신속하게 수렴 시뮬레이션을 장려하는 결정 론적 노드 위치를 초기화하는 데 도움이 될 수 있습니다. 위치를 초기화하지 않으면 강제 레이아웃이 무작위로 초기화하므로 예측할 수없는 비트가 될 수 있습니다. 예를 들어, 나는 여기 대각선을 따라 노드를 초기화 :

// Initialize the positions deterministically, for better results. 
var n = nodes.length; 
nodes.forEach(function(d, i) { d.x = d.y = width/n * i; }); 

마지막으로 정적 레이아웃을 사용하는 경우, 여전히 대화 형 탐색 할 수 있도록 fisheye distortion을 사용하는 것이 좋습니다.

관련 문제