在d3 v4中改变节点颜色强制在画布

时间:2017-06-02 16:54:49

标签: javascript html5 d3.js canvas d3-force-directed

我正在使用d3v4和html画布处理强制导向图。 我已经成功地让节点动态更新,这样当你将一个节点拖到中心时,它会改变它的外观,所以那些通过链接立即与之相关的节点也是如此。 虽然我可以成功地改变节点的大小,但我无法改变颜色。我怀疑这是由于对HTML canvas缺乏了解。 这是我绘制节点的代码:

function drawNode(d) {
  var radius, colour;
  if (d.central) {
    radius = 10;
    colour = "red";
  } else if (d.related) {
    radius = 7;
    colour = "black";
  } else {
    radius = 3;
    colour = "grey";
  }
  context.moveTo(d.x + radius, d.y);
  context.font = "10pt Arial";
  context.fillStyle = "black"; // for the text
  context.fillText(d.name,d.x - 30, d.y - 10);
  context.arc(d.x, d.y, radius, 0, 2 * Math.PI);
  context.strokeStyle = colour;
  context.stroke();
  context.fillStyle = colour;
  context.fill();
}

不是节点根据它们是中心的,相关的还是不相关而被着色,而是似乎随意地为它们着色,有时全部变为红色或全部变为灰色。然而,半径完美地工作,所以我知道动态属性(中央,相关)被正确设置并被功能识别。我错过了什么?

0 个答案:

没有答案