Biblioteca de visualización de gráficos en JavaScript


Tengo una estructura de datos que representa un gráfico dirigido, y quiero renderizarlo dinámicamente en una página HTML. Estos gráficos suelen ser sólo unos pocos nodos, tal vez diez en el extremo superior, por lo que mi conjetura es que el rendimiento no va a ser un gran problema. Idealmente, me gustaría poder conectarlo con jQuery para que los usuarios puedan ajustar el diseño manualmente arrastrando los nodos.

Nota: No estoy buscando una biblioteca de gráficos.

Author: Chris Farmer, 2008-08-10

5 answers

Acabo de reunir lo que puede estar buscando: http://www.graphdracula.net

Es JavaScript con layouting gráfico dirigido, SVG e incluso se puede arrastrar los nodos alrededor. Todavía necesita algunos ajustes, pero es totalmente utilizable. Puede crear nodos y bordes fácilmente con código JavaScript como este:

var g = new Graph();
g.addEdge("strawberry", "cherry");
g.addEdge("cherry", "apple");
g.addEdge("id34", "cherry");

Usé la biblioteca Raphael JS mencionada anteriormente (el ejemplo de graffle) más algo de código para un algoritmo de diseño de gráficos basado en fuerza que encontré en la red (todo abierto fuente, licencia MIT). Si tiene algún comentario o necesita una cierta característica, puedo implementarla, ¡solo pregunte!


Es posible que desee echar un vistazo a otros proyectos, también! A continuación se presentan dos meta-comparaciones:

  • SocialCompare tiene una extensa lista de bibliotecas, y la línea "Node / edge graph" filtrará las de visualización de gráficos.

  • DataVisualization.ch ha evaluado muchas bibliotecas, incluyendo las de nodo / gráfico. Desafortunadamente no hay directo enlace por lo que tendrá que filtrar por "gráfico":Selección DataVisualization.ch

Aquí hay una lista de proyectos similares (algunos ya se han mencionado aquí):

Bibliotecas JavaScript puras

  • Vis.js admite muchos tipos de gráficos de red/borde, además de líneas de tiempo y gráficos 2D/3D. Auto-layout, auto-clustering, motor de física elástica, mobile-friendly, navegación por teclado, diseño jerárquico, animación, etc. MIT licensed and developed by a Dutch firm especializada en investigación sobre redes autoorganizadas.

  • Cytoscape.js - análisis y visualización de gráficos interactivos con soporte móvil, siguiendo las convenciones de jQuery. Financiado a través de becas de los NIH y desarrollado por by @maxkfranz (ver su respuesta a continuación ) con la ayuda de varias universidades y otras organizaciones.

  • El kit de herramientas de InfoVis de JavaScript - Jit, un marco de diseño y dibujo gráfico interactivo y multipropósito. Ver por ejemplo, el Árbol Hiperbólico . Construido por Twitter dataviz architect Nicolas Garcia Belmonte y comprado por Sencha en 2010.

  • D3.js Potente biblioteca de visualización JS multipropósito, la sucesora de Protovis. Vea el ejemplo de grafo dirigido por fuerza, y otros ejemplos de grafo en la galería .

  • La biblioteca de visualización JS de Plotly utiliza D3.js con enlaces JS, Python, R y MATLAB. Véase a ejemplo de nexworkx en IPython aquí, ejemplo de interacción humana aquí, y JS Embed API.

  • Sigma.js Biblioteca ligera pero potente para dibujar gráficos

  • JsPlumb jQuery plug-in para crear gráficos interactivos conectados

  • Springy -un algoritmo de diseño gráfico dirigido por la fuerza

  • Procesando.js Puerto Javascript de la biblioteca de procesamiento por John Resig

  • JS Graph It - cajas de arrastrar y soltar conectadas por líneas rectas. Diseño automático mínimo de las líneas.

  • Raphaeljs's Graffle - gráfico interactivo ejemplo de una biblioteca de dibujos vectoriales genéricos multiusos. RaphaelJS no puede diseñar nodos automáticamente; necesitarás otra biblioteca para eso.

  • JointJS Core - Biblioteca de diagramación de código abierto con licencia MPL de David Durman. Se puede utilizar para crear estática diagramas o herramientas de diagramación totalmente interactivas y creadores de aplicaciones. Funciona en navegadores que soportan SVG. Algoritmos de diseño no incluidos en el paquete principal

  • MxGraph Biblioteca de diagramación HTML 5 previamente comercial, ahora disponible bajo Apache v2.0. mxGraph es la biblioteca base utilizada en draw.io.

Bibliotecas comerciales

  • GoJS Dibujo gráfico interactivo y diseño biblioteca

  • YFiles for HTML Biblioteca de diseño y dibujo de gráficos comerciales

  • KeyLines Commercial JS network visualization toolkit

  • ZoomCharts Biblioteca comercial de visualización multiusos

Bibliotecas abandonadas

  • Cytoscape Web Visor de red JS integrable (no hay nuevas características planeadas; sucedido por Cytoscape.js)

  • Canviz JS renderer para gráficos Graphviz. Abandonado en septiembre de 2013.

  • Arbor.js Gráficos sofisticados con buena física y dulces ojos. Abandonado en mayo de 2012. Existen varias bifurcaciones semi-mantenidas .

  • Jssvggraph "El algoritmo de diseño de grafos dirigido por fuerza más simple posible implementado como una biblioteca Javascript que usa objetos SVG". Abandonado en 2012.

  • Jsdot Gráfico del lado del cliente aplicación de dibujo. Abandonado en 2011 .

  • Protovis Kit de herramientas gráficas para Visualización (JavaScript). Sustituido por d3.

  • Moo Wheel Representación JS interactiva para conexiones y relaciones (2008)

  • JSViz 2007-era graph visualization script

  • Dagre diseño Gráfico para JavaScript

No Javascript Bibliotecas

  • Graphviz Sofisticado lenguaje de visualización de gráficos

    • Graphviz ha sido compilado a Javascript usando Emscripten aquí con una demostración interactiva en línea aquí
  • Flare Hermoso y poderoso dibujo gráfico basado en Flash

  • NodeBox Python Graph Visualization

 839
Author: Dan Dascalescu,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-05-23 12:26:33

Descargo de responsabilidad: Soy un desarrollador de Cytoscape.js

Cytoscape.js es una biblioteca de visualización de gráficos HTML5. La API es sofisticada y sigue las convenciones de jQuery, incluyendo

  • selectores para consultas y filtrado (cy.elements("node[weight >= 50].someClass") hace mucho de lo que cabría esperar),
  • encadenamiento (e. g.cy.nodes().unselect().trigger("mycustomevent")),
  • Funciones similares a jQuery para enlazar a eventos,
  • elementos como colecciones (como jQuery tiene colecciones de HTMLDomElements),
  • extensibilidad (puede añadir diseños personalizados, interfaz de usuario, funciones de núcleo y colección, etc.),
  • y más.

Si estás pensando en construir una webapp seria con gráficos, al menos deberías considerar Cytoscape.js. Es gratuito y de código abierto:

Http://js.cytoscape.org

 40
Author: maxkfranz,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-03-13 21:03:12

JsVIS era bastante agradable, pero lento con gráficos más grandes, y ha sido abandonado desde 2007.

Prefuse es un conjunto de herramientas de software para crear visualizaciones de datos interactivas enriquecidas en Java. flare es una biblioteca de ActionScript para crear visualizaciones que se ejecutan en Adobe Flash Player, abandonada desde 2012.

 35
Author: Sam C,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-11-13 09:47:19

En un escenario comercial, un concursante serio es yFiles para HTML :

Ofrece:

  • Fácil importar de datos personalizados (esta demostración interactiva en línea parece hacer casi exactamente lo que el OP estaba buscando)
  • Edición interactiva para crear y manipular los diagramas a través de gestos de usuario (ver el editor completo )
  • Una enorme API de programación para personalizar todos y cada uno de los aspectos de la biblioteca
  • Soporte para agrupación y anidamiento (ambos interactivos, así como a través de los algoritmos de diseño)
  • No depende de un kit de herramientas de interfaz de usuario specfic, pero admite integración {[9] } en casi cualquier kit de herramientas de Javascript existente (consulte las demostraciones de "integración" )
  • Diseño automático (varios estilos, como "jerárquico", "orgánico", "ortogonal", "árbol", "circular", "radial" y más)
  • Enrutamiento de bordes sofisticado automático (ortogonal y enrutamiento orgánico de bordes con evitación de obstáculos)
  • Diseño incremental y parcial (agregar y eliminar elementos y solo ligeramente o no cambiar en absoluto el resto del diagrama)
  • Soporte para agrupación y anidamiento (tanto interactivo, así como a través de los algoritmos de diseño)
  • Implementaciones de algoritmos de análisis de grafos (rutas, centralidades, flujos de red, etc.)
  • Utiliza tecnologías HTML 5 como SVG + CSS y Canvas y Javascript moderno aprovechando propiedades y otras características más ES5 y ES6 (pero por la misma razón no se ejecutará en IE versiones 8 y menores).
  • Utiliza una API modular que se puede cargar bajo demanda mediante cargadores UMD

Aquí hay una representación de ejemplo que muestra la mayoría de las características solicitadas:

Captura de pantalla de una representación de muestra creada por la demostración de BPMN.

Divulgación completa: Trabajo para yWorks, pero en Stackoverflow no represento a mi empleador.

 8
Author: Sebastian,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-07-26 14:13:57

Como mencionó guruz, el JIT tiene varios diseños de gráficos/árboles encantadores, incluidas las visualizaciones RGraph y HyperTree bastante atractivas.

Además, acabo de poner una implementación súper simple basada en SVG en github (sin dependencias, ~125 LOC) que debería funcionar lo suficientemente bien para pequeños gráficos mostrados en navegadores modernos.

 7
Author: Jack Rusher,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-05-05 12:07:54