javascript - 仅将 D3 Sankey 图表中的某些节点从矩形转换为圆形

标签 javascript svg d3.js sankey-diagram

我想重现 D3 Sankey chart using circle node instead of rectangle node 中的过程, 但是,我只想选择某些节点从矩形更改为圆形。

例如,在这个jsfiddle示例中使用,如何只选择节点 4节点 7 转换为圆?

enter image description here

最佳答案

我更新了你的 fiddle .

基本上你只需要一些方法来选择你想要不同的节点。我使用了唯一的类名,这样您也可以使用 CSS 设置它们的样式。我不想编写仅选择 4 和 7 的代码(我很懒),所以我只是选择了所有偶数节点。

// add in the nodes
var node = svg.append("g").selectAll(".node")
    .data(graph.nodes)
    .enter().append("g")
    .attr("class", function (d, i) { return i % 2 ? "node rect" : "node circle";
})

然后您可以使用它来选择节点并添加圆形而不是矩形。

svg.selectAll(".node.circle").append("circle")
    .attr("r", sankey.nodeWidth() / 2)
    .attr("cy", function(d) { return d.dy/2; })
    .attr("cx", sankey.nodeWidth() / 2)
    .style("fill", function (d) {

关于javascript - 仅将 D3 Sankey 图表中的某些节点从矩形转换为圆形,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26176404/

相关文章:

javascript - Fabricjs svg解析错误

objective-c - 如何识别 Swift 中 SVG 对象内部的触摸?

php - 星级评定,半星支持

javascript - 如何将固定范围的垂直线添加到 D3.js 图表

javascript - 使用 .htaccess 的登录页面

javascript - 添加 Javascript 来替换 Span 标签

javascript - 使用 jquery 更改 url

javascript - 按权重过滤节点并更改属性

d3.js - 在 d3 中具有顺序 x 轴的水平平移

javascript - Chart JS,不同数据集选择不同的Y轴