Optimierte Grafik-Zeichnung für das web
Gesehen einige Vorschläge für Graphen, Frage ich mich, was ist der optimale für mein problem.
Möchte ich zum Rendern eines gerichteten Graphen eine servlet/Bild, das im browser angezeigt wird. Es sollte eine gewisse Art von Optimierung der position. Keine Abhängigkeit zu Schwingen bevorzugt. Algorithmen sind nicht wichtig, da die Struktur des Graphen wird ermittelt, indem die business-Logik. Es würde erwünscht sein, können Beschriftungen hinzufügen, um die Kanten als gut.
es wäre optimal, wenn ich dienen kann, diese als png/svg.
Welche Bibliothek/service würden Sie empfehlen?
Klarstellungen:
1) Die Frage ist alles über Grafiken - wie Gerichtete Azyklische Graphen - NICHT - Charts.
2) flot, Google Charts - nicht-plot-Graphen, nur die charts, oder habe ich etwas verpasst?
3) Nein, ich nicht brauchen, Interaktivität
4) graphviz wäre schön, aber der grappa java-Bibliothek ist ziemlich veraltet, und basiert auf swing/awt. zwar mag es theoretisch möglich ist, zu erbringen schwingen, um Bilder, es wäre nicht meine Lieblings-Weg, um so in eine server-app.
5) wäre es fein, einen online-service, wo die Bilder sind nicht lokal gehostet.
edit: Hinzugefügt links zu Wikipedia, um zu klären graph/Diagramm-Begriff
Du musst angemeldet sein, um einen Kommentar abzugeben.
Sowie warten Wochen zu hören, über die Magie Rahmen, die gehen, um alle Ihre Probleme lösen, in einer Zeile code, gibt es auch die andere Möglichkeit, nur ein wenig Code Schreiben, selbst genau das zu tun, was Sie wollen... (ich sage nicht, dass es 10 Minuten Arbeit, aber es ist wahrscheinlich ein oder zwei Tage, und Sie veröffentlicht Ihre Frage über zwei Wochen...)
Haben Sie schon einen Blick zum Beispiel auf den Wikipedia-Eintrag über Kraft-basierte algorithmen-- es ist pseudocode und ein paar links, die hilfreich sein könnten.
Ich nehme an, es ist der layout-Algorithmus, das ist das Problem, und nicht die Frage der Schaffung eines BufferedImage, Zeichnung, Grafiken Kontext -, PNG-Codierung und senden Sie es nach unten den sockel. Sie wirklich nicht brauchen, einen Rahmen für die , dass bit, ich glaube nicht.
Werfen Sie einen Blick auf graphviz
yFiles könnte nützlich sein, für diese.
Wie etwa die dot-Komponente von Graphviz? Es erzeugt Diagramme (nicht charts), Ausgänge zu PNG und SVG, und unterstützt die Kennzeichnung Kanten. Sie können berappen zu Punkt, um das Bild zu erzeugen, die Sie benötigen, und gibt nur ein img-tag verweist, dass. Alternativ können Sie die Rückgabe auch ein img-tag verweist auf eine URL, die generiert die erforderlichen Graphen (oder rufen Sie eine Cache-Kopie). Hier ist der Punkt info:
http://www.graphviz.org/pdf/dotguide.pdf
Können Sie auch einen Blick auf WebDot, die offenbar für diesen Zweck konzipiert:
http://www.graphviz.org/webdot/
Versuchen aiSee. Es wird durch alle Arten von web-basierten Anwendungen für data mining, statische Programm-Analyse, - matrix-Visualisierung, Netzwerk-Analyse, und so weiter. Es wird auch von einigen MediaWikis als Ihren graph-layout-backend.
Haben Sie eine riesige Datenbank von Beispiel Diagramme über an aiSee.com. Überprüfen Sie es heraus. Es unterstützt edge-labels, export zugeordnet SVG und HTML, und ist nicht abhängig von Swing.
Erstellen wir mxGraph für solche Anforderungen. Wir haben tatsächlich die Freigabe im Jahr 2006, aber dauerte eine Weile, um zu bemerken, diese Frage...
Für serverside, versuchen JUNG, können Sie es gegen Batik und produzieren schöne SVG-oder PNG-Dateien. JUNG hat ein schönes design und sehr mächtigen layout-algorithmen...
Auch, weil Sie erwähnen, dass "es wäre schön, verwenden Sie eine online-service", graphviz bieten einen service namens webdot zum Rendern von Grafiken.
Gibt es andere, die entlang dieser Linien-als auch... z.B. http://graph.gafol.net/ (scheint down zu sein)
Client-Seite:
Versuchen http://arborjs.org/ für eine minimale(ish) Bibliothek gewidmet ist es-layout, verwenden Sie das ist Sie wie zu es vorziehen, Ihre eigenen rendering-Routinen (div, canvas, svg, paper.js, Verarbeitung... etc).
Ich auch gerne http://sigmajs.org/ für eine vollständige Ansatz, build-in touch-Unterstützung, plugins, Dateiformate, etc.
Interessant ist, das Eclipse-Projekt hat mit SWT/JFace Komponenten - /framework in der Lage die Anzeige und generieren (import/export) Graphviz 's" DOT " - format, in Java:
ZEST (Homepage & download-links)
Sehen http://wiki.eclipse.org/Graphviz_DOT_as_a_DSL_for_Zest Beispiele für die Verwendung.
Obwohl ZEST ist angepriesen als ein Eclipse-plugin, es scheint, dass die DOT-manipulation API ' s können auch standalone genutzt werden und außerhalb einer Eclipse-installation.
Cheers
Reich
Können Sie versuchen sigma.js: http://sigmajs.org/
Ist es ein leichtes, open-source-Bibliothek in Javascript für die Darstellung einer großen Grafik auf der Web.
JPGD ist ein Graphviz-parser in Java. Es ist ein wenig aufgegeben, aber der code ist schön und klar, und wenn Sie Fehler finden, ich bin sicher, der Autor würde akzeptieren beigetragen behebt.
Obwohl beworben als ein parser, es ist auch ein generator. Sie bauen Grafiken, die als Sammlungen von Node-und Edge-Objekte, dann bekommen .dot Graph.toString(). Immer diese Grafik würde eine einfache Schale aus dem Graphviz dot ausführbare Datei.
Alternativ Punkt ist sehr leicht selbst erzeugt werden. Im einfachsten Fall ist es nur eine Frage des Schreibens vergossen header
... gefolgt von einem edge-definition-pro edge
... gefolgt von einer schließenden Klammer
also nahm ich doch mal einen Blick auf all die Antworten und links, es sieht aus wie Prefuse/Flare wird durch die optimale Wahl.
Sie haben eine sehr ansprechende visialisations, plus Sie haben eingebaute Unterstützung für Grafiken.
Vielleicht check out Google Charts?
Können Sie SVG in Kombination mit Batik. Ich habe diese mehrmals, für die Anzeige von Grafik. Batik mit Java 1.5 ist sehr schnell. Mit dieser Lösung können Sie Programm Ihre Graphen in Java mit keine Abhängigkeit von Swing. Sie können Beschriftungen hinzufügen, wo Sie wollen, host es als ein Servlet und zeigen Sie Sie als png oder svg.
Können Sie die Grafiken in SVG (das ist ein XML-Dokument).
Verwenden Sie Batik zur Transformation der SVG-Dokument in eine PNG - /JPG-Bild.
Sie können ein Servlet zu streamen, dieses Bild an den browser zurück.
In java den Aufbau eines SVG(=XML) - Dokument. Beispiele für SVG-Grafiken können hier gefunden werden:
Gerichteter graph und hier: Einfachen gerichteten Graphen
Sehen diese Frage, vor allem Stephans Antwort über prefuse. Ich habe gelesen, dass Sie nicht brauchen, Interaktivität, aber prefuse noch nützlich sein können.
Kann ich voll und ganz empfehlen flot - ausgezeichnet!
Sehen Beispiele hier.
JFreeChart könnte der Weg Sie gehen wollen, aber Sie machen einen Unterschied zwischen Diagrammen und Grafiken. Vielleicht kannst du erklären, was du damit meinst. Ich habe in der Regel verwendet diese Begriffe Synonym verwendet. 🙂
JFreeChart hat eine gute Punkt -, Balken-und Liniendiagramme sowie Spaß, wie Pie und Zifferblatt so ist es vielleicht für Sie zu arbeiten.