2011-10-07 11 views
5

Al crear un gráfico trivial de Arbor JS con un solo nodo, el nodo se agita por todas partes y no se pueden agregar más nodos.Error de nodo único en Arbor.JS

El problema también se informó aquí por otro usuario:

https://github.com/samizdatco/arbor/issues/12

agradecería su ayuda con una solución/solución

+0

Desde este momento me he mudado a la biblioteca d3.js [link] (http://mbostock.github.com/d3/), que es una excelente alternativa. –

+0

El problema parece aparecer también en otros casos cuando se tienen más nodos. Por ejemplo, tenía alrededor de 30 nodos conectados a un nodo central y ese nodo central también comenzó a rebotar. – user579674

Respuesta

2

el uso de la biblioteca en lugar de d3.js Arbor ha resuelto mi problema :-)

+0

¿Puedes redefinir redibujar? como puedes con cenador? Necesito poder usar elementos DOM para mis nodos, en lugar de formas renderizadas. = \ – NullVoxPopuli

2

En realidad no es una solución, sino que cuente el número de nodos y si menos de la I establece la fricción a 1,0

if (nodeCount == 1) { 
    //Stop single nodes bouncing all over the place 
    sys.parameters({ friction: '1.0' }); 
} 
+0

¿Cómo se cuentan exactamente los nodos? He intentado contarlos, pero no sé cómo hacerlo fuera del archivo arbor.js, ya que parece que no puedo acceder a la matriz de nodos. – user579674

1

Otra opción es reemplazar el archivo physics.js con this uno. Tiene varias correcciones para compensar los problemas relacionados con tener un solo nodo (incluidos los problemas al agregar el segundo).

0

probar esto

if (nodeCount == 1) { 
 
      sys.parameters({ repulsion: 10, gravity: false, dt: 0.035 }) 
 
     } 
 
     else if (nodeCount > 1 && nodeCount < 30) { 
 
      sys.parameters({ repulsion: 1000, gravity: false, dt: 0.35 }) 
 
     } 
 
     else { 
 
      sys.parameters({ friction: .1, stiffness: 0.1, repulsion: 1, gravity: false, dt: 0.035 }) 
 
     }

2

Utilizamos una solución solución para esto. Es probablemente más un truco que una solución completa, pero es fácil de implementar y funciona bien para la mayoría de los casos.

Lo que hacemos es determinar el número de partículas en el sistema cada vez que se agrega o elimina una partícula. Si este recuento es igual a uno, agregamos una nueva partícula en el sistema, con su color configurado en el color de fondo del lienzo. Como el color del nodo es igual que su fondo, no es visible.

Por lo tanto, en ningún punto hay un solo nodo en el gráfico. Cuando eso sucede debido a una adición o eliminación, agregamos este nodo de equilibrio oculto. Puede echar un vistazo a nuestro sitio web para ver un ejemplo en vivo de lo anterior: http://www.graphthinker.com. A medida que agrega nodos, puede ver que el gráfico sigue respondiendo incluso cuando tiene solo un nodo (visible).

Este nodo de equilibrio oculto podría eliminarse cuando ya no lo necesite, digamos cuando se agrega otro nodo o cuando se elimina el único nodo visible.

Cuestiones relacionadas