我需要根据父母的孩子的价值为父母评分/着色。问题是我正在使用root.descendants()这是一个平面数组(即一个数组包含所有父级和子级)。我需要知道: 1)确定孩子属于哪个父母 2)如何读懂孩子们的价值观(很简单,我可以解决这个问题) 3)如何根据孩子的值/颜色更改父母的颜色
由于我使用的是root.descendants(),因此我尝试强制访问父级和子级,如Web链接所示。这种方法是不可扩展的。 我也尝试使用root.links(),但是返回错误。我相信这仍然是一个平面阵列。 我还尝试了谷歌搜索“树”和根函数,但找不到解决我问题的内置函数。
代码示例:
var link = g.selectAll(".link")
.data(root.descendants().slice(1))
// .data(root.links())
.enter().append("path")//if data equals sum choose
.attr("class", function(d,i){
if(i==24||i==3)return "link1";else return "link";})
.attr("d", function(d) {
return "M" + project(d.x, d.y)
+ "C" + project(d.x, (d.y + d.parent.y) / 2)
+ " " + project(d.parent.x, (d.y + d.parent.y) / 2)
+ " " + project(d.parent.x, d.parent.y);
});
我的代码位于: https://blockbuilder.org/MyAkosombo/fd2573ba5e6ed68e3930015f5e0601f2
我已手动将链接/路径涂成红色,以演示与我想做的事情类似的事情。红色链接是我称为“ root-parent-child”链接。
值-颜色归因 0-3-绿色 4-6-黄色 7-10-红色
情况1: Child1 = 3/10,Child2 = 2/10,Child3 = 1/10,然后=> Parent123 = 2/10(平均值),绿色
情况2: Child4 = 5.5 / 10,Child5 = 9/10然后=> Parent45 = 7.25 / 10(平均),红色