Изменяющиеся цвета узлов в d3 v4 принудительно ориентированный граф на холсте

Я работаю над форсированным графом, используя d3v4 и html canvas. Я успешно получил узлы для динамического обновления, так что, когда вы перетаскиваете узел в центр, он меняет свой внешний вид, как и те, которые непосредственно связаны с ним через ссылки. Однако, хотя я могу успешно изменить размер узла, я не могу изменить цвет. Я подозреваю, что это связано с отсутствием понимания HTML-холста. Вот мой код для рисования узлов:

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 ответов

Другие вопросы по тегам