2015-01-02 5 views

답변

2

추가] 원과 텍스트 그룹 요소 내부 중간에 텍스트를 정렬하는 텍스트 achor 속성을 사용합니다.

var nodes = svg.selectAll(".node") 
    .data(force.nodes()) 
    .enter() 
    .append("g") 
    .attr("class","node") 
    .call(force.drag); 

var circles = nodes.append("circle") 
    .attr("r", 6); 

var texts = nodes.append("text") 
    .attr("text-anchor", "middle") 
    .text(function(d) { 
     return d.name; 
    }); 

아래와 같이 틱 기능을 변경하십시오.

function tick() { 
    path.attr("d", linkArc); 
    nodes.attr("transform", transform);  
} 

중심에 텍스트를 정렬 업데이트

JSFiddle 1.

문자 라벨을 동그라미 안에 넣으려면 동그라미 반경을 name 속성으로 늘립니다. 이번에는 링크 대상 위치를 업데이트하여 원 반경을 기준으로 마커 위치를 조정해야합니다.

var circles = nodes.append("circle") 
    .attr("r", function(d){ d.radius = d.name.length*3; return d.radius; } 
); 

function linkArc(d) { 
    var tX = d.target.x-d.target.radius, 
     dx = tX - d.source.x, 
     dy = d.target.y - d.source.y, 
     dr = Math.sqrt(dx * dx + dy * dy); 
    return "M" + d.source.x + "," + d.source.y + "A" + dr + "," + dr + " 0 0,1 " + tX + "," + d.target.y; 
} 

JSFiddle 2

+0

당신은 전체 수정 된 스크립트를 공유 주시겠습니까? 제안 된 변경 사항을 적용했지만 그래프가 올바르게 표시되지 않습니다. 내가 뭔가 잘못하고있는 것 같아. – Mohsen