Разные расстояния и разные радиусы могут быть достигнуты в d3js.
Вы можете добавить свойство radius для каждого узла, т. Е. Ваши узлы должны выглядеть примерно так: {r:5, id:1, ...}
. Затем, когда пришло время создать соответствующие svg
элементы, вы можете сделать что-то вроде
var circles = svg.append("g").selectAll("circle").data(nodes);
circles.enter().append("circle").attr("r", function(d) { return d.r; });
Аналогично, вы можете добавить свойство dist
к каждой из ваших ссылок. Затем добавьте силу ссылки к вашей симуляции следующим образом:
var sim = d3.forceSimulation(nodes)
.force("link", d3.forceLink(links)
.distance(function(l){
return l.dist;
})
.strength(1)
);
В качестве рабочего примера вы можете проверить этот кодекс, который я только что создал. Вы всегда можете проверить официальную ссылку API для получения подробной информации.
По моему мнению, расклад сил D3 является очень гибким вариантом для изображения графиков.