D3.js force o gráfico direcionado, reduza os cruzamentos de borda fazendo com que as bordas se repelem
Então eu já tenho uma página que desenha um gráfico direcionado à força, como o mostradoAqui.
E isso funciona bem. Estou usando o JS deAqui, com alguns ajustes para espalhar os nós um pouco melhor.
Estas são mais ou menos as únicas diferenças:
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();
Onde a redução da força do link parece tornar os links mais parecidos com springs, torna-se semelhante aoFruchterman e Reingold técnica frequentemente usada. Isso funciona razoavelmente bem, mas apenas para gráficos relativamente pequenos. Com gráficos maiores, o número de cruzamentos aumenta - como seria de se esperar, mas a solução em que ele está normalmente está longe de ser ideal. Não estou procurando um método para obter a solução ideal, sei que é muito difícil. Eu gostaria apenas de ter alguma adição bruta que tente forçar as linhas a se separarem, assim como os nós.
Existe uma maneira de adicionar uma repulsão entre os links, bem como entre os nós? Eu não estou familiarizado com o modo como a força D3 funciona, e não consigo encontrar nada que diga que isso é possível ...