2013-01-17 94 views
0

我有圖。該圖有節點。有連接到節點SVG圈:如何重繪我的節點? D3.js

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

你最好給「圈子」一個全面的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");