D3.js recebendo nós para aparecer no meio sem "saltar"
-
12-11-2019 - |
Pergunta
Eu tenho uma configuração D3 usando "nós" e "linhas".Quando o gráfico aparece pela primeira vez, ele salta com a gravidade até que ele se instale no meio.Alguém sabe de uma maneira de parecer automaticamente no meio sem o tipo de efeito "Bounce"?
p.s eu estou usando o layout de força
Solução
Chamando o início redefine o parâmetro de resfriamento, alfa;Alpha decai exponencialmente à medida que o layout converge em sua solução e, em seguida, pára de evitar desperdiçar a CPU.Não há jittering no início (além dos nós coincidentes, que é necessário para evitar uma divisão por zero).No entanto, sempre que você tiver forças conflitantes e restrições geométricas (links), é natural esperar que o layout ajuste ao iniciar.
Se você quiser evitar este salto, você precisa manter o gráfico permanentemente quente (digamos chamando d3.timer(function() { force.resume(); })
) ou você precisaria fazer outra coisa, como ajustar o parâmetro alfa manualmente para reaquecer gradualmente em vez de instantaneamente. .
Editar: em 2.8.x, você pode evitar o primeiro salto inteiramente executando o layout de força síncrona na inicialização.Por exemplo: http://bl.ocks.org/1667139
Outras dicas
Outra estratégia que usei antes é aumentar gradualmente os RADII de cada nó de zero nos primeiros, dizem, 50 ou 100 carrapatos.Você pode ver o que parece (em Protovis, mas se comportaria da mesma maneira em D3) nos cartogramas de Dorling no site de dados One.org .