2014-07-21 2 views
1

나는 force-collapsable example을 기반으로 한 시각화를 얻었으며 속도를 높이거나 초기 노드 이동을 건너 뛰고 곧 그래프를 평형 상태로 가져오고 싶습니다. 가능한 한.트리 레이아웃의 힘 그래프에서 force.tick()을 호출 할 수 없음

나는 answer의 조언을 따라 내 코드에서 tick()을 호출했지만 force 객체에 눈금이나 알파 메서드가 없으므로 force-collabsable 예제에서는 작동하지 않습니다.

는 Heres는 어떻게 내 코드 수정 후처럼 보인다, 나는 틱 전화에 제거하고 마지막에 force.tick() 호출을 추가 한 :

var force = d3.layout.force() // line 38 in the example 
    //.on("tick", tick)  // commented out as I call tick instead 
    .charge(function(d) { return d._children ? -d.size/100 : -30; }) 
    .linkDistance(function(d) { return d.target._children ? 80 : 30; }) 
    .size([w, h - 160]); 

function update() {   // line 56 in the example 
    var nodes = flatten(root), 
     links = d3.layout.tree().links(nodes); 

    force      // line 60 in the example 
    .nodes(nodes) 
    .links(links) 
    .start(); 

    force.tick()     // added by me to cause a tick and the point of error 

을하지만, 호출은 'catch되지 않은 형식 오류와 함께 실패 : 메서드가 없기 때문에 undefined가 함수가 아닙니다. ' 나는 (크롬 디버거에서 촬영)를 호출 할 때

힘 객체의 값은 다음과 같습니다

charge: function (x) { distance: function (x) { drag: function() { friction: function (x) { gravity: function (x) { linkDistance: function (x) { linkStrength: function (x) { links: function (x) { nodes: function (x) { on: function (type, listener) { resume: function() { size: function (x) { start: function() { stop: function() { theta: function (x) { proto: Object

왜하지 않는 다른 힘 레이아웃의 예에 다른 예에 힘 객체 트리 레이아웃을 사용합니까? tick()을 직접 호출하려면 어떻게해야합니까?

+0

답변에 대한 링크가 없습니다. –

+0

관련 코드를 게시 할 수 있습니까? 또한 JS 오류의 줄 번호가 도움이 될 수 있으므로 정의되지 않은 부분을 알 수 있습니다. – mb21

답변

0

d3.geom.js 및 d3.layout.js에 대한 referecnes를 제거하면 tick()을 호출 할 수 있고 이러한 파일이 없으면 레이아웃에 부정적인 영향을 미치지 않습니다.