Javascript //大型目标节点 d3.选择(this.attr('transform',''); }) .on('mousedown',函数(d){ if(d3.event.ctrlKey)返回; //选择节点 mousedown_节点=d; 如果(mousedown\u node==选中的\u node)选中的\u node=null; else selected_node=鼠标向下_node; 所选链接=空; //重新定位拖曳线 拖曳线 .style('marker-end','url(#end arrow')) .classed('hidden',false) .attr('d','M'+mousedown_node.x+','+mousedown_node.y+'L'+mousedown_node.x+','+mousedown_node.y); 重启(); }) .on('mouseup',函数(d){ 如果(!mousedown_节点)返回; //FF所需 拖曳线 .classed('hidden',true) .style('marker-end',''); //检查是否拖动到自身 mouseup_节点=d; 如果(mouseup_节点===mousedown_节点){resetMouseVars();return;} //大型目标节点 d3.选择(this.attr('transform',''); //向图表添加链接(如果存在,则更新) //注意:链接严格是源

Javascript //大型目标节点 d3.选择(this.attr('transform',''); }) .on('mousedown',函数(d){ if(d3.event.ctrlKey)返回; //选择节点 mousedown_节点=d; 如果(mousedown\u node==选中的\u node)选中的\u node=null; else selected_node=鼠标向下_node; 所选链接=空; //重新定位拖曳线 拖曳线 .style('marker-end','url(#end arrow')) .classed('hidden',false) .attr('d','M'+mousedown_node.x+','+mousedown_node.y+'L'+mousedown_node.x+','+mousedown_node.y); 重启(); }) .on('mouseup',函数(d){ 如果(!mousedown_节点)返回; //FF所需 拖曳线 .classed('hidden',true) .style('marker-end',''); //检查是否拖动到自身 mouseup_节点=d; 如果(mouseup_节点===mousedown_节点){resetMouseVars();return;} //大型目标节点 d3.选择(this.attr('transform',''); //向图表添加链接(如果存在,则更新) //注意:链接严格是源,javascript,d3.js,svg,Javascript,D3.js,Svg,正如@Gerardo Furtado和@Sooraj Chandran已经提到的,不可能将文本添加到路径。如果你改变这个 drag_line.append('svg:text') .attr('x', 50) .attr('y', 20) .attr('class', 'id') .text(functio

正如@Gerardo Furtado和@Sooraj Chandran已经提到的,不可能将
文本
添加到
路径
。如果你改变这个
drag_line.append('svg:text')
                        .attr('x', 50)
                        .attr('y', 20)
                        .attr('class', 'id')
                        .text(function(d) {
                            return "Label";
                        });
var drag_line = svg.append('svg:path')
  .attr('class', 'link dragline hidden')
  .attr('d', 'M0,0L0,0');
var drag_line_text = svg.append('svg:text')
  .attr('class', 'link draglinetext hidden')
  .attr('x', '0');  
  .attr('y', '0'); 
  drag_line
        .style('marker-end', 'url(#end-arrow)')
        .classed('hidden', false)
        .attr('d', 'M' + mousedown_node.x + ',' + mousedown_node.y + 'L' + mousedown_node.x + ',' + mousedown_node.y);
  drag_line_text
        .classed('hidden', false)
        .attr('x', mousedown_node.x)
        .attr('y', mousedown_node.y);
  drag_line
    .classed('hidden', true)
    .style('marker-end', '');
  drag_line_text
    .classed('hidden', true);
function mousemove() {
  if(!mousedown_node) return;

  // update drag line
  drag_line.attr('d', 'M' + mousedown_node.x + ',' + mousedown_node.y + 'L' + d3.mouse(this)[0] + ',' + d3.mouse(this)[1]);
  // update drag line text
  drag_line_text
    .attr('x', (mousedown_node.x + d3.mouse(this)[0]) / 2)
    .attr('y', (mousedown_node.y + d3.mouse(this)[1]) / 2);

  restart();
}
function mouseup() {
  if(mousedown_node) {
    // hide drag line
    drag_line
      .classed('hidden', true)
      .style('marker-end', '');
    // hide drag line text
    drag_line_text
      .classed('hidden', true);
  }

  // because :active only works in WebKit?
  svg.classed('active', false);

  // clear mouse event vars
  resetMouseVars();
}
labels = svg.append('svg:g')
    .selectAll('.labels');
labels = labels.data(links);

labels.exit().remove();

labels.enter()
    .append("text")
    .attr("text-anchor", "middle")
    .attr("x", 0)
    .attr("dy", 16)
    .append("textPath")
    .attr("startOffset", "50%")
    .attr("xlink:href", function(d,i){ return "#id" + i})
    .text("label");