Javascript d3。根据阵列内容更改单个节点的颜色
几天后我就开始和d3一起工作了。我选择显示另一个项目的层结构。本例中的Javascript d3。根据阵列内容更改单个节点的颜色,javascript,colors,d3.js,geometry,Javascript,Colors,D3.js,Geometry,几天后我就开始和d3一起工作了。我选择显示另一个项目的层结构。本例中的d3函数正是我的。我所做的唯一更改是要求项目中的节点在树中显示它们,而不是使用flare.json 因此,我询问了状态(是否启用)。请参阅下面的代码。如果启用了图层,则节点的圆圈应为绿色。如果未启用,则节点的圆圈应为红色。状态被赋予一个数组 var statusarray = []; for (i = 0; i < operational.children.length; i++ ) { //var statu
d3
函数正是我的。我所做的唯一更改是要求项目中的节点在树中显示它们,而不是使用flare.json
因此,我询问了状态(是否启用)。请参阅下面的代码。如果启用了图层,则节点的圆圈应为绿色。如果未启用,则节点的圆圈应为红色。状态被赋予一个数组
var statusarray = [];
for (i = 0; i < operational.children.length; i++ ) {
//var status to save children enabled-status at [i]
var status = operational.children[i].get("enabled");
//test output for operational.children at [i]
console.log(operational.children[i].id + " steht auf " + status) ;
//Create Array (statusarray) for status with length of operational children (saves true and false)
statusarray[i] = status;
}
我开始用以下内容来填充它:
for (i = 0 ; i < main.children.length; i++) {
// Array for children from root
var layer = main.children;
// Create childrn from Layers in Arrays and fill myjson with them
d_array.forEach(layer[i].children, function (ArrayElement) {
myjson.children[i].children.push({"name": ArrayElement.id});
}, this);
}
for(i=0;i
感谢您的帮助 您甚至不需要额外的数组,只需简单地执行即可
nodeEnter.append("circle")
.attr("r", 1e-6)
.style("fill", function(d) {
return d.enabled ? "green" : "red";
});
编辑:如果确实需要额外的数组,可以使用索引进行交叉引用
nodeEnter.append("circle")
.attr("r", 1e-6)
.style("fill", function(d, i) {
return statusarray[i] ? "green" : "red";
});
我看到的问题。我对treedata使用var myson。没有“已启用”的条目。我只能在另一个项目中获取启用状态。好的,我将编辑答案以使用与节点顺序相同的另一个数组。虽然工作不完全,但您帮助我的不仅仅是复制和粘贴它。我想我开始明白了。我将处理这个问题并发布我的解决方案。thanksok我的新问题是数组用于我的所有节点。因此,如果我在图中有10个节点打开,我会得到其他颜色,就像我有20个节点打开一样,依此类推。那么,我如何才能对整个树这样做呢?
nodeEnter.append("circle")
.attr("r", 1e-6)
.style("fill", function(d, i) {
return statusarray[i] ? "green" : "red";
});