【问题标题】:D3.js tree with odd number of vertices, edges not shown具有奇数个顶点的 D3.js 树,未显示边
【发布时间】:2013-05-24 15:41:10
【问题描述】:

我有以下 JavaScript 代码,它使用 D3.js 库来绘制一棵树(它遵循可以在各种在线教程中找到的标准结构):

var json = {
    "name": "A",
        "children": [{
        "name": "B"
    }]
};

var tree = d3.layout.tree().size([200, 200]);

var nodes = tree.nodes(json);

var vis = d3.select("#chart").attr("width", 300)
    .attr("height", 300)
    .append("svg:g")
    .attr("transform", "translate(40, 40)");

var diagonal = d3.svg.diagonal();

var link = vis.selectAll("path.link").data(tree.links(nodes)).enter()
    .append("svg:path")
    .attr("class", "link")
    .attr("d", diagonal);

var node = vis.selectAll("g.node").data(nodes).enter().append("svg:g")
    .attr("class", "node")
    .attr("transform", function (d) {
    return "translate(" + d.x + "," + d.y + ")";
});

node.append("svg:circle").attr("r", 10);

node.append("svg:text").attr("dx", function (d) {
    return 10;
})
    .attr("dy", 10)
    .attr("text-anchor", function (d) {
    return "start";
})
    .text(function (d) {
    return d.name;
});

JSFIDDLE

除了顶点有奇数个子节点(1、3、...)的树外,它几乎可以正常工作;在这种情况下,不会绘制奇数顶点的边(例如,在上面的示例中,不显示 A 和 B 之间的边)。我错过了什么?

【问题讨论】:

    标签: javascript graph d3.js visualization graph-visualization


    【解决方案1】:

    您缺少节点链接的样式。这有点变化:

    <style>
    .link {
        fill: none;
        stroke: #ccc;
        stroke-width: 4.5px;
    }
    </style>
    

    或者,在链接本身上设置它:

    .attr("d", diagonal).attr({ 'fill': 'none', 'stroke': 'grey', 'stroke-width': 4 });
    

    这取决于奇数与偶数,因为默认情况下,路径没有描边,填充颜色为黑色。所以直线不会出现,但曲线会被填充。

    【讨论】:

    猜你喜欢
    • 2016-07-09
    • 2015-12-20
    • 2013-10-21
    • 1970-01-01
    • 1970-01-01
    • 2015-08-19
    • 2021-11-06
    • 1970-01-01
    • 2013-11-03
    相关资源
    最近更新 更多