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