Question

J'ai une configuration D3 à l'aide de "nœuds" et "lignes". Lorsque le graphique apparaît pour la première fois, il rebondit avec la gravité jusqu'à ce qu'il s'installe au milieu. Quelqu'un connaît-il un moyen de le faire apparaître automatiquement au milieu sans l'effet "rebond"?

Ps j'utilise la mise en page de la force

Était-ce utile?

La solution

L'appel de démarrage réinitialise le paramètre de refroidissement, Alpha; Alpha se désintègre de façon exponentielle lorsque la disposition converge sur sa solution, puis s'arrête de manière à éviter de gaspiller le CPU. Il n'y a pas de bouteille au départ (autre que des nœuds coïncidents, ce qui est nécessaire pour éviter une fracture par zéro). Cependant, chaque fois que vous avez des forces contradictoires et des contraintes géométriques (liens), il est naturel de s'attendre à ce que la disposition s'ajuste au démarrage.

Si vous voulez éviter ce rebond, vous devez soit garder le graphique en permanence (disons en appelant d3.timer(function() { force.resume(); })) Ou vous devez faire autre chose, comme ajuster manuellement le paramètre alpha pour réchauffer progressivement au lieu de instantanément.

Edit: Dans 2.8.x, vous pouvez éviter le premier rebond entièrement en exécutant la disposition de force de manière synchrone au démarrage. Par exemple: http://bl.ocks.org/1667139

Autres conseils

Une autre stratégie que j'ai utilisée auparavant est d'augmenter progressivement les rayons de chaque nœud de zéro sur le premier, par exemple, 50 ou 100 tiques de force. Vous pouvez voir à quoi cela ressemble (à Protovis, mais il se comporterait de la même manière en D3) dans les cartogrammes Dorling sur le site de données One.org.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top