D3.js принудительно ориентированный граф, уменьшает количество пересечений ребер, заставляя ребра отталкивать друг друга

Итак, у меня уже есть страница, которая рисует график, ориентированный на силу, как показано здесь .

И это прекрасно работает. Я использую JS из здесь с несколькими настройками, чтобы немного лучше распределить узлы.

Это более или менее единственные различия:

d3.json("force.json", function(json) {
  var force = d3.layout.force()
     .gravity(0.1)
     .charge(-2000)
     .linkDistance(1)
     .linkStrength(0.1)
     .nodes(json.nodes)
     .links(json.links)
     .size([w, h])
     .start();

Там, где уменьшение силы звена, кажется, делает звенья более похожими на пружины, так что это становится похожим на часто используемый метод Fruchterman & Reingold . Это работает достаточно хорошо, но только для довольно маленьких графов. С большими графами количество пересечений просто увеличивается -, как и следовало ожидать, но решение, на которое оно попадает, обычно далеко от оптимального. Я не ищу способ получить оптимальное решение, я знаю, что это очень сложно. Я просто хотел бы, чтобы у него было какое-то грубое дополнение, которое пытается разделить линии, а также узлы.

Есть ли способ добавить отталкивание между ссылками, а также между узлами? Я не знаком с тем, как работает сила D3, и я не могу найти ничего, что говорило бы о том, что это возможно...

51
задан VividD 1 February 2014 в 14:05
поделиться