Javascript 在D3JS中,是否可以仅为树布局的子节点到子节点绘制虚线链接

Javascript 在D3JS中,是否可以仅为树布局的子节点到子节点绘制虚线链接,javascript,d3.js,Javascript,D3.js,是否可以仅为子节点到子节点绘制虚线链接。子节点的父节点应为常规连续链接 a b ! ! ->dashed links ! ! c d | | ->continues links a 是的,这是可能的。您尚未指定链接的指定方式,但代码如下所示 .style("stroke-dasharray", function(d) { if(d.children == null) { retur

是否可以仅为子节点到子节点绘制虚线链接。子节点的父节点应为常规连续链接

    a   b
    !     !  ->dashed links
    !     !
     c    d
      |  | ->continues links
       a

是的,这是可能的。您尚未指定链接的指定方式,但代码如下所示

.style("stroke-dasharray", function(d) {
  if(d.children == null) {
    return "1,0";
  } else {
    return "1,1";
  }
})

这是可能的。来看看这个现场直播。截图如下:

我创建了两种样式,一种用于连续,另一种用于虚线链接:

.link_continuous {
    fill: none;
    stroke: #ff0000;
    stroke-width: 1.5px;
}
.link_dashed {
    fill: none;
    stroke: #ff0000;
    stroke-width: 1.5px;
    stroke-dasharray: 20,10,5,5,5,10;
}
JavaScript中的这一行决定应该应用什么样式:

.attr("class", function (d) { return (d.source != root) ? "link_dashed" : "link_continuous" ; })
我选择了有点奢侈的短跑风格,但你当然可以改变。在CSS文件中这样做的好处在于,您可以更轻松地进行实验

此外,本页还可用于学习SVG路径的样式:


同样,您也可以更改节点样式。希望这能有所帮助。

是的,使用
D3.js

D3.js

var cluster = d3.layout.tree();
     cluster.size([width,height]);
      var nodes = cluster.nodes(json);
     var link = svg.selectAll("g.node")
       .data(cluster.links(nodes))     
       .enter().append("g")
       .append("path")
          .attr("class", "link")
          .attr("stroke-dasharray", function(d) { 
              return (d.source.parent) ? "6,6" : "1,0"; }) //for dashed line
          .attr("d", elbow); 

它起作用了,当我折叠它用来从旧位置转换的任何节点时,我遇到了布局问题。但是现在它被替换了,但是带有链接的旧布局没有消失,结果两个布局(只有链接的旧布局)被替换了。请帮我解决这个问题。我认为这是一个单独的问题,如果你问了一个新问题,并附加了有问题的代码,这可能是最好的选择。这个代码不起作用。链接没有子级。并且节点没有数组样式。如果海报没有发布任何代码,这并不意味着你可以用错误的代码回答并误导海报。以前所有节点都有子节点,这就是为什么所有节点都是虚线的原因。现在我更改了代码。正确,现在我看到你检查了(d.source.parent)而不是(d.source.children),现在你的代码工作了,我确认。谢谢Manoj..&VividD。这段代码有效地解决了我的额外问题,正如上面所讨论的。再次感谢你们两位