在收到my last question中的答案后,我可以以所需的方式修改d3树代码。
请想象一下,我有下面的flare.csv文件
A
A.A
A.A.B
A.A.C
A.B
A.B.C
A.C
A.C.D
A.D
A.D.A
A.D.B
A.D.D
A.E
A.E.A
A.E.B然而,我遇到了另一个问题。为了给某些特定的节点分配颜色,建议应答者添加
.style("fill", function(d){
return !d.parent ? "blue" : d.data.id === "A.D.B" ? "red" :
"black";
})这基本上将父节点的颜色更改为蓝色,将"A.D.B“的颜色更改为红色。
现在,正如您所看到的,我在字母“B”中有几个d.data.id结尾。例如,"A.D.B“、"A.E.B”和"A.A.B“。在html javascript代码中,对所有这些节点执行相同操作的最简单方法是什么,即将它们的颜色更改为红色,即所有IDS以字母“B”结尾。
在linux和Matlab中,可以使用"*B“来实现这一目标。因为我刚开始使用javascript,所以我需要您的帮助来解决这个问题。请注意,我正在处理大量的d.data.id,因此在代码中指定所有这些都非常耗时。因此,我正在寻找一个方便的方法。谢谢。
发布于 2017-05-21 06:03:26
如果要将以data结尾的节点涂成红色,只需拆分字符串:
var array = d.data.id.split(".");检查最后一个元素。就你假设的CSV而言:
return !d.parent ? "blue" : array[array.length-1] === "B" ? "red" : "black";这将为以B结尾的任何ID涂上红色。
对于真实的bl.ocks (关于您的预编辑问题):
.style("fill", function(d){
var array = d.data.id.split(".");
return !d.parent ? "blue" : array[array.length-1] === "data" ? "red" : "black";
})下面是更新的bl.ocks:https://bl.ocks.org/anonymous/bb3ff95151d3252597d52c917489dda2
发布于 2017-05-21 06:11:34
不是最好的答案,但你也可以.
向三元条件中添加逻辑运算符以包括其他索引。
.style("fill", function(d){
return !d.parent ? "blue" : (d.data.id === "A.D.B" || d.data.id === "A.D.D") ? "red" :
"black";
})https://stackoverflow.com/questions/44093615
复制相似问题