我有图表。该图具有节点。有svg圈子连接到节点:
node.append("circle")
.attr("class", "node")
.attr("cx", function (d) { return 0; })
.attr("cy", function (d) { return 0; })
.attr("r", function (d) { return getNodeSize(d); })
.style("fill", function (d) { return getNodeColor(d); })
.style("stroke", function (d) { return getNodeStrokeColor(d); })
.style("stroke-width", function (d) { return getNodeStrokeWidth(d); });
在某些时刻,我需要用不同的颜色重新绘制它们:
.style("fill", function (d) { return getNodeColor(d); })
我该怎么做?我不想重绘整个图表..
谢谢!
P.S。相关问题:如何只选择某些节点并重新绘制它们?
答案 0 :(得分:0)
您最好为“圈子”提供一个全面的ID,您可以随时选择它来操作它。
例如:
node.append("circle")
.attr("id", "circle-1")
.attr("class", "node")
.attr("cx", function (d) { return 0; })
.attr("cy", function (d) { return 0; })
...
并通过以下代码选择它:
var circles = d3.select("#circle-1");
获得圈子后,您可以更改它们的样式。
还有另外一种方法,如果你有父节点的id或节点实例,你可以通过以下代码选择它的后代圆圈:
var circles = d3.select("node-id").select("circle");
或
var circles = node.select("circle");