Javascript sankey.js中基于JSON的节点着色

Javascript sankey.js中基于JSON的节点着色,javascript,d3.js,Javascript,D3.js,关于D3 Sankey(),我想询问如何使用JSON文件中的某个分类变量为节点着色 链接到实际代码中使用的JSON文件: 因此,我的问题是,如果我提供一些与“名称”类别相关的信息: 然后,应该对源代码进行哪些更改,以便根据类别为节点着色。 注:我不是D3/JS方面的专家,如果这个问题显得太幼稚,请原谅我的技能有限 谢谢在链接的示例中,您将看到以下代码块: node.append("rect") .attr("height", function(d) { return d.dy; })

关于D3 Sankey(),我想询问如何使用JSON文件中的某个分类变量为节点着色

链接到实际代码中使用的JSON文件:

因此,我的问题是,如果我提供一些与“名称”类别相关的信息:

然后,应该对源代码进行哪些更改,以便根据类别为节点着色。 注:我不是D3/JS方面的专家,如果这个问题显得太幼稚,请原谅我的技能有限


谢谢

在链接的示例中,您将看到以下代码块:

node.append("rect")
  .attr("height", function(d) { return d.dy; })
  .attr("width", sankey.nodeWidth())
  .style("fill", function(d) { return d.color = color(d.name.replace(/ .*/, "")); })
  .style("stroke", function(d) { return d3.rgb(d.color).darker(2); })
  .append("title")
  .text(function(d) { return d.name + "\n" + format(d.value); });
样式(“填充”
行替换为:

.style("fill", function(d) { return d.color = color(d.category); })

在链接的示例中,您将看到以下代码块:

node.append("rect")
  .attr("height", function(d) { return d.dy; })
  .attr("width", sankey.nodeWidth())
  .style("fill", function(d) { return d.color = color(d.name.replace(/ .*/, "")); })
  .style("stroke", function(d) { return d3.rgb(d.color).darker(2); })
  .append("title")
  .text(function(d) { return d.name + "\n" + format(d.value); });
样式(“填充”
行替换为:

.style("fill", function(d) { return d.color = color(d.category); })

在博斯托克的代码中,这是为矩形着色的一行:

.style("fill", function(d) { 
    return d.color = color(d.name.replace(/ .*/, "")); 
})
因此,只需将其更改为:

.style("fill", function(d) { 
    return d.color = color(d.category); 
})

在博斯托克的代码中,这是为矩形着色的一行:

.style("fill", function(d) { 
    return d.color = color(d.name.replace(/ .*/, "")); 
})
因此,只需将其更改为:

.style("fill", function(d) { 
    return d.color = color(d.category); 
})

感谢您的编辑和您之前的评论Gerardo。我实际上是在寻找使用JSON中的分类变量为节点着色的节点(多个节点可能会得到相同的颜色),这样对应于节点类别的图例将使Sankey更具信息性。从您的注释中获得线索,我正在尝试解决方案。感谢您的编辑和您以前的注释Gerardo。我实际上是在使用JSON中的分类变量为节点着色(多个节点可能具有相同的颜色),这样对应于节点类别的图例将使Sankey更具信息性。从您的评论中获得线索,我正在尝试解决方案。感谢Hanks Mark…昨天也做了同样的事情。嗨,我很好奇是否可以将Sankey节点安排在同心圆中(因为它固有地以分层格式组织节点)@NaSu,sankey插件中没有内置的东西可以为您这样做。从源代码中的一条注释来看:
//节点被分配了传入邻居的最大宽度加上一;//没有传入链接的节点被分配了宽度零,而//没有传出链接的节点被分配了最大宽度。
也许您想要什么类似于。感谢Mark…昨天也做了同样的事情。嗨,我很好奇是否可以将Sankey节点安排在同心圆中(因为它固有地以分层格式组织节点)@NaSu,sankey插件中没有内置的东西可以为您这样做。从源代码中的一条注释来看:
//节点被分配了传入邻居的最大宽度加上一;//没有传入链接的节点被分配了宽度零,而//没有传出链接的节点被分配了最大宽度。
也许您想要什么类似于,谢谢你,杰勒多,萨米塔克斯,杰勒多,也一样