d3.js v4 分区,其中父项的值大于其子项的总和 (node.sum)

d3.js v4 Partition where parent's value is greater than sum of its children (node.sum)

我知道,在 d3.js v4 中,通过使用 d3.v4 hierarchy().sum()

,父项的值可能大于其子项的总和

我也知道 hierarchy().sum() 函数将 return 一个值,该值是节点及其子节点的总和。

但是,我只想绘制仅包含其值的相应矩形(而不是其值的总和加上其子项的总和)

可能吗?

例如,这是 JSON 文件:

{"name":"Top Level", "size": "50000" ,"children":[{"name":"Level 2: A","size":"10000","children":[{"name":"Son of A","size":"2000"},{"name":"Daughter of A","size":"3000"}]},{"name":"Level 2: B","size":"1000"}]}

所以对于顶级,我只有一个大小为 50000 的盒子。(不是 50000+10000+2000+3000+1000 = 66000)

您可以手动覆盖层次结构对象的值并跳过sum函数

var rawData = {
  "name": "Top Level",
  "size": "50000",
  "children": [
    {
      "name": "Level 2: A",
      "size": "10000",
      "children": [
        {
          "name": "Son of A",
          "size": "2000"
        },
        {
          "name": "Daughter of A",
          "size": "3000"
        }
      ]
    },
    {
      "name": "Level 2: B",
      "size": "1000"
    }
  ]
}

var root = d3.hierarchy(rawData);  //apply hierarchy 


root.each(d=> d.value = +d.data.size); //override values