javascript - open - node js viz
Pure JavaScript Graphviz equivalente (6)
¿Alguien sabe de una implementación pura basada en Javascript de los diagramas de flujo direccional que GraphViz es capaz de generar? No me interesan las bonitas salidas visuales, sino los cálculos para calcular la profundidad máxima de cada nodo, junto con el diseño de las líneas bezier optimizadas para minimizar el número de bordes que se cruzan cuando se trata de un gráfico en lugar de un árbol de información. Me gustaría ejecutar este código tanto dentro de un navegador; Soy consciente de que podría incrustar fácilmente Graphviz en mi servidor de nodo como una extensión, o incluso popen()
y transmitir información sobre el gráfico en formato .dot
.
Como referencia, aquí hay una salida típica de GraphViz. Observe cómo los elementos se apilan y espacian para permitir que las líneas de conexión viajen entre nodos, sin intersecarse (muy a menudo) o pasar por los nodos.
Aquí hay una compilación cruzada de Graphviz a Javascript hecho usando Emscripten
Después de analizar todas las opciones, encontré viz.js ( https://github.com/mdaines/viz.js/ ) basado en jsviz y graphviz.js para tener realmente una API utilizable desde una página web, y suficientes ejemplos para entender.
Después de buscar por todas partes finalmente encontré la respuesta.
La solución fue que alguien realizó una compilación de Graphviz a Javascript usando llvm + emscripten. Aqui esta el link:
La fuente se puede encontrar en: https://github.com/mdaines/viz.js
Y para simplemente obtener un uso de página web:
var graphviz_text = ...;
document.body.innerHTML += Viz(graphviz_text, "svg");
Eche un vistazo a esta implementación de JavaScript puro de un renderizador de lienzo .dot:
La biblioteca no está documentada: el autor definitivamente debería publicitarla y documentarla más (me pondré en contacto con él para sugerirle que la ponga en github, como mínimo).
Actualización : el código se ha enviado a github: https://github.com/gyuque/livizjs
Actualización (14/2/2013) : ¡Ha surgido otro contendiente! cualquier persona interesada en el tema definitivamente debería echar un vistazo a la página de ejemplo de Viz.js y al repositorio github .
No se trata de un reemplazo de d3.js ya d3.js pero d3.js es una biblioteca que puede hacer varios diseños a partir de datos dados y sería una gran plataforma para implementar graphviz.
Aquí hay un ejemplo de diseños dirigidos por fuerza, que es una forma de lo que hace graphviz.
Aquí hay un discurso sobre diseños con diapositivas interactivas increíbles.
Para conocer el proyecto, los tutorials son muy buenos.
Se podría tratar de convertir graphviz a javascript, tal como se hizo para el ejemplo de ''lector de PDF'': https://github.com/kripken/emscripten