0

我有图表。该图具有节点。节点上附加了 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); })

我怎么做?我不想重绘整个图表..

谢谢!

PS相关问题:如何仅选择某些节点并仅重绘它们?

4

1 回答 1

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");
于 2013-01-17T05:30:21.413 回答