Biblioteka wizualizacji grafów w JavaScript

Mam strukturę danych, która reprezentuje ukierunkowany wykres i chcę dynamicznie renderować go na stronie HTML. Te wykresy będą zazwyczaj tylko kilka węzłów, może dziesięć na samym górnym końcu, więc moim zdaniem wydajność nie będzie wielka. Idealnie, chciałbym mieć możliwość podłączenia go do jQuery, aby użytkownicy mogli ręcznie dostosować układ, przeciągając węzły wokół.

Uwaga: nie szukam biblioteki Wykresów.

Author: Chris Farmer, 2008-08-10

5 answers

Właśnie zebrałem to, czego możesz szukać: http://www.graphdracula.net

Jest to JavaScript z ukierunkowanym układem graficznym, SVG i można nawet przeciągać węzły wokół. Nadal wymaga pewnych poprawek, ale jest całkowicie użyteczny. Łatwo tworzysz węzły i krawędzie za pomocą kodu JavaScript:

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

Użyłem wcześniej wspomnianej Biblioteki Raphael JS (przykład graffle) plus trochę kodu do algorytmu graficznego opartego na sile, który znalazłem w sieci (wszystko otwarte źródło, licencja MIT). Jeśli masz jakieś uwagi lub potrzebujesz pewnej funkcji, mogę ją wdrożyć, po prostu zapytaj!


Możesz też zajrzeć do innych projektów! Poniżej znajdują się dwa meta-porównania:

  • SocialCompare ma obszerną listę bibliotek, a linia "node / edge graph" będzie filtrować dla wizualizacji Wykresów.

  • DataVisualization.ch ocenił wiele bibliotek, w tym węzłowe / grafowe. Niestety nie ma bezpośredniego link więc będziesz musiał filtrować dla "graph":Wybór DataVisualization.ch

Oto lista podobnych projektów (niektóre zostały już wymienione tutaj):

Czyste Biblioteki JavaScript

  • Vis.js obsługuje wiele typów wykresów sieci/krawędzi, a także linii czasowych i wykresów 2D/3D. Auto-layout, auto-clustering, sprężysty silnik fizyki, przyjazny dla urządzeń mobilnych, nawigacja na klawiaturze, układ hierarchiczny, animacja itp. mit licencjonowany i opracowany przez holenderską firmę specjalizuje się w badaniach nad samoorganizującymi się sieciami.

  • Cytoscape.js - interaktywna analiza i wizualizacja Wykresów z obsługą urządzeń mobilnych, zgodnie z konwencjami jQuery. Finansowany z dotacji NIH i opracowany przez @ maxkfranz (Zobacz jego odpowiedź poniżej) przy pomocy kilku uniwersytetów i innych organizacji.

  • JavaScript InfoVis Toolkit - JIT, interaktywny, Wielofunkcyjny framework do rysowania i układania Wykresów. Zobacz też na przykład drzewo hiperboliczne . Zbudowany przez Twittera dataviz architect Nicolas Garcia Belmonte i kupiony przez Sencha w 2010 roku.

  • D3.JS potężna wielozadaniowa biblioteka wizualizacji JS, następca Protovisa. Zobacz przykład wykresu skierowanego siłą oraz inne przykłady Wykresów w galerii .

  • Biblioteka wizualizacji js Plotly ' ego używa D3.js z wiązaniami JS, Python, R i MATLAB. Zobacz też przykład nexworkx w Ipythonie tutaj, Przykład interakcji człowieka tutaj i js Embed API.

  • Sigma.js lekka, ale potężna biblioteka do rysowania wykresów

  • JsPlumb {[3] } jQuery plug - in do tworzenia interaktywnych połączonych Wykresów

  • Sprężysty - algorytm układu grafu kierowanego siłą

  • Przetwarzam.JS Javascript port Biblioteki Processing by John Resig

  • Js Graph It - Drag ' n ' drop pola połączone liniami prostymi. Minimalny automatyczny układ linii.

  • GRAFFLE Raphaeljsa - interaktywny Graf przykład ogólnej wielozadaniowej biblioteki rysunków wektorowych. RaphaelJS nie może automatycznie układać węzłów; do tego potrzebujesz innej biblioteki.

  • JointJS Core - licencjonowana przez mpl biblioteka diagramowania open source Davida Durmana. Może być używany do tworzenia statycznych diagramy lub w pełni interaktywne narzędzia do tworzenia diagramów i kreatorów aplikacji. Działa w przeglądarkach obsługujących SVG. Algorytmy układu nie-zawarte w pakiecie głównym

  • Mxgraph wcześniej komercyjna biblioteka diagramów HTML 5, Teraz dostępna pod Apache v2. 0. mxGraph jest biblioteką bazową używaną w draw.io.

Biblioteki komercyjne

  • Gojs Interaktywne rysowanie i układ graficzny biblioteka

  • YFiles for HTML Commercial graph drawing and layout library

  • KeyLines Commercial js network visualization toolkit

  • ZoomCharts komercyjna wielofunkcyjna biblioteka wizualizacji

Opuszczone biblioteki

  • Cytoscape Web Embeddable js Network viewer (nie planowane nowe funkcje; zastąpiony przez Cytoscape.js)

  • Canviz JS renderer dla Wykresów Grafviz. porzucony we wrześniu 2013.

  • Arbor.JS wyrafinowane graficzne z ładną fizyką i eye-candy. Opuszczony w maju 2012. Istnieje kilka częściowo utrzymanych widełek.

  • Jssvggraph "najprostszy możliwy algorytm układu graficznego ukierunkowanego na siłę zaimplementowany jako biblioteka Javascript wykorzystująca obiekty SVG". Opuszczony w 2012 roku.

  • Jsdot Client side graph aplikacja do rysowania. porzucony w 2011 .

  • Protovis Graficzny Zestaw Narzędzi do wizualizacji (JavaScript). Zastąpiony przez d3.

  • Moo Wheel Interaktywna reprezentacja JS dla połączeń i relacji (2008)

  • JSViz 2007-era graph visualization script

  • Dagre układ graficzny dla JavaScript

Non-Javascript Biblioteki

 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/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-23 12:26:33

Zastrzeżenie: jestem twórcą Cytoscape.js

Cytoscape.js jest biblioteką wizualizacji wykresów HTML5. API jest wyrafinowane i działa zgodnie z konwencjami jQuery, w tym
  • selektory do zapytań i filtrowania (cy.elements("node[weight >= 50].someClass") robi wiele, czego można się spodziewać),
  • łańcuchowanie (np. cy.nodes().unselect().trigger("mycustomevent")),
  • funkcje podobne do jQuery do wiązania zdarzeń,
  • elementy jako kolekcje (podobnie jak jQuery ma Kolekcje HTMLDomElements),
  • rozszerzalność (można dodać układy, interfejs użytkownika, funkcje core i collection itd.),
  • i więcej.

Jeśli myślisz o zbudowaniu poważnej webapp z wykresami, powinieneś przynajmniej rozważyć Cytoscape.js. Jest darmowy i open-source:

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/doraprojects.net/template/agent.layouts/content.php on line 54
2015-03-13 21:03:12

JsVIS był całkiem ładny, ale powolny z większymi grafami i został porzucony od 2007 roku.

Prefuse to zestaw narzędzi programistycznych do tworzenia bogatych interaktywnych wizualizacji danych w języku Java. flare jest biblioteką ActionScript do tworzenia wizualizacji uruchamianych w programie Adobe Flash Player, porzuconą od 2012 roku.

 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/doraprojects.net/template/agent.layouts/content.php on line 54
2014-11-13 09:47:19

W scenariuszu komercyjnym poważnym konkurentem na pewno jest yFiles dla HTML :

Oferuje:

  • Łatwy import z niestandardowych danych (to interaktywne demo online wydaje się robić dokładnie to, czego szukał OP)
  • Interaktywna Edycja do tworzenia i manipulowania diagramami za pomocą gestów użytkownika (Zobacz kompletny edytor )
  • ogromny API programistyczne do dostosowywania każdego aspektu biblioteka
  • wsparcie dla grupowania i zagnieżdżania (zarówno interaktywnych, jak i poprzez algorytmy układu)
  • Nie jest zależny od specfic UI toolkit, ale obsługuje integrację z niemal każdym istniejącym zestawem narzędzi Javascript (zobacz dema "integracja" ) Układ Automatyczny (różne style, takie jak "hierarchiczny", "organiczny", "ortogonalny", "drzewo", "okrągły", "radialny" i inne)]}
  • automatyczne wyznaczanie krawędzi (ortogonalne i organic edge routing with obstacle avoid)
  • Układ Przyrostowy i częściowy (dodawanie i usuwanie elementów i tylko nieznaczna lub wcale zmiana reszty diagramu)
  • wsparcie dla grupowania i zagnieżdżania (zarówno interaktywne, jak i poprzez algorytmy układu)
  • implementacje algorytmów analizy grafów (ścieżki, Centrale, przepływy sieciowe itp.)
  • wykorzystuje technologie HTML 5, takie jak SVG+CSS i Canvas oraz nowoczesne wykorzystanie Javascript właściwości i inne więcej funkcji ES5 i ES6 (ale z tego samego powodu nie będzie działać w IE w wersjach 8 i niższych).
  • [7]} używa modularnego API, które można ładować na żądanie za pomocą ładowarek UMD

Oto przykładowy rendering, który pokazuje większość żądanych funkcji:

Zrzut ekranu przykładowego renderowania stworzonego przez demo BPMN.

Pełne ujawnienie: pracuję dla yWorks, ale w Stackoverflow nie reprezentuję swojego pracodawcy.

 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/doraprojects.net/template/agent.layouts/content.php on line 54
2017-07-26 14:13:57

Jak wspomniał guruz, JIT ma kilka uroczych układów graficznych/drzew, w tym całkiem atrakcyjne wizualizacje RGraph i Hipertree.

Ponadto, właśnie umieściłem super prostą implementację opartą na SVG na github (bez zależności, ~125 LOC), która powinna działać wystarczająco dobrze dla małych Wykresów wyświetlanych w nowoczesnych przeglądarkach.

 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/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-05 12:07:54