Frage

Nachdem einige Vorschläge für Graphen, frage ich mich, was das Optimum für mein Problem.

Ich möchte einen gerichteten Graphen auf ein Servlet / Bild machen, die im Browser angezeigt wird. Es sollte eine gewisse Art von Optimierung der Position sein. Keine Abhängigkeit zu Swing wäre vorzuziehen. Algorithmen sind nicht wichtig, da die Struktur des Graphen von Geschäftslogik bestimmt wird. Es wäre auch in der Lage sein add Etiketten Kanten gewünscht. es wäre optimal, wenn ich dies als png / svg dienen kann.

Welche Bibliothek / Service würden Sie empfehlen?

Erläuterungen:

1) Die Frage dreht sich alles um Graphen - wie gerichteten azyklischen Graphen - NOT - < a href = "http://en.wikipedia.org/wiki/Chart" rel = "nofollow noreferrer"> Chart .

2) flicht, Google Charts - nicht Diagramme zeichnen, nur Diagramme oder habe ich etwas verpasst

?

3) Nein, ich brauche keine Interaktivität

4) graphviz wäre schön, aber die Grappa-Java-Bibliothek ist ziemlich veraltet und basiert auf Swing / AWT gebaut. während es theoretisch möglich sein kann, schwingen, um Bilder zu machen, wäre es nicht mein Favorit Weg, um zu so in einem Server-App.

5) es wäre schön, einen Online-Dienst zu verwenden, wo die Bilder nicht lokal gehostet wird.

edit: hinzugefügt Links zu Wikipedia klären Graph / chart Begriff

War es hilfreich?

Lösung

Neben Wochen als Warte über Magic-Framework zu hören, die alle Ihre Probleme in einer Zeile Code zu lösen geht, gibt es auch die andere Möglichkeit, nur schreiben einige Code selbst zu tun genau das, was Sie wollen ... (I 'sage nicht, es ist 10 Minuten Arbeit, aber es ist wahrscheinlich ein oder zwei Tage, und Sie auf dem Laufenden Ihre Frage über vor zwei Wochen ...)

Haben Sie einen Blick hatten, zum Beispiel bei dem Wikipedia-Eintrag auf Kraft-basierte Algorithmen -. es hat Pseudo-Code und ein paar Links, die hilfreich sein könnten

Ich nehme an, es der Layout-Algorithmus ist, dass das Problem ist, und nicht die Frage des eine BufferedImage zu schaffen, zeichnet seinen Grafikkontext, PNG-kodierenden und es auf den Sockel zu senden. Sie wirklich nicht brauchen, einen Rahmen für die , die bit, ich glaube nicht.

Andere Tipps

Hier finden Sie aktuelle graphviz

yFiles könnte dies nützlich sein.

Wie über die Punktkomponente von Graphviz? Es erzeugt Diagramme (nicht-Charts), Ausgänge zu PNG und SVG, und unterstützt die Kennzeichnung Kanten. Sie können aus Punkt Shell das Bild, das Sie benötigen, und geben einen img-Tag, dass verweist zu erzeugen. Alternativ können Sie einen img-Tag zurück, die eine URL verweist, die die erforderlichen Graphen erzeugen (oder eine Cache-Kopie abrufen). Hier ist der Punkt Info:

http://www.graphviz.org/pdf/dotguide.pdf

Sie können auch einen Blick auf webdot nehmen, die offensichtlich für diesen Zweck ausgelegt ist:

http://www.graphviz.org/webdot/

Versuchen Sie aiSee . Es ist für die Data Mining von allen Arten von Web-basierten Anwendungen verwendet, statische Programmanalyse , Matrix-Visualisierung , Netzwerkanalyse , und so weiter. Es wird auch einige von Mediawikis als Graph verwendet Layout-Backend.

Sie haben eine riesige Datenbank von Beispielgraphen über bei aiSee .com. Hör zu. Es unterstützt Etiketten, Export nach kartiert SVG und HTML, und ist nicht abhängig von Schwingen.

Wir schaffen mxGraph für solche Anforderungen. Wir entließen sie tatsächlich im Jahr 2006, aber dauerte eine Weile, um diese Frage zu bemerken ...

server , versuchen JUNG , können Sie es laufen gegen Batik und schöne SVG oder PNG-Dateien erzeugen. JUNG hat ein schönes Design und sehr leistungsfähige Layout-Algorithmen ...

Auch da Sie erwähnen, dass "es gut wäre, einen Online-Service verwenden" , einen Dienst graphviz bietet genannt webdot Graphen zu machen.

Es gibt andere, entlang dieser Linie auch ... z http://graph.gafol.net/ (scheint nach unten zu sein)

Client-Seite:

  • Versuchen Sie http://arborjs.org/ für eine minimale (ish) Bibliothek ist es gewidmet um das Layout, verwenden Sie diese können Sie Ihre eigene Rendering-Routinen (div, Leinwand, svg, paper.js, Verarbeitung ... etc).

  • bevorzugen ist gefallen
  • Ich mag auch http://sigmajs.org/ für eine vollständigere Ansatz, bauen in Touch-Unterstützung, Plug-in, Dateiformate etc.

Interessanterweise ist das Eclipse-Projekt hat eine SWT / JFace Komponente / Rahmen anzeigen kann und Erzeugung (Import / Export) Graphviz des 'DOT' -Format, in reinem Java:

ZEST (Homepage & Download-Links)

Siehe http://wiki.eclipse.org/Graphviz_DOT_as_a_DSL_for_Zest Verwendungsbeispiele.

Obwohl ZEST als Eclipse-Plugin angekündigt wird, es scheint, dass die DOT-Manipulation API Standalone und außerhalb einer Eclipse-Installation verwendet werden kann.

Prost

Reich

Sie können versuchen, sigma.js: http://sigmajs.org/

Es ist eine leichte, Open-Source-Bibliothek in Javascript auf der Web große Graphen angezeigt werden soll.

JPGD ist ein Graphviz-Parser in Java. Es ist ein kleine verlassen, aber der Code ist schön und klar, und wenn Sie Fehler ich bin sicher, dass der Autor finden würde, trugen sowohl Korrekturen übernehmen.

Obwohl als Parser beworben, es ist auch ein Generator. Sie können Diagramme als Sammlungen von Knoten und Edge-Objekte bauen, dann bekommen .dot Graph.toString () verwenden. dies als eine Grafik immer eine einfache Schale aus auf den Graphviz Punkt ausführbar wäre.

Alternativ ist Punkt sehr leicht, sich selbst zu erzeugen. Im einfachsten Fall ist es nur eine Frage der eine Topf Header zu schreiben

digraph myGraph {

... gefolgt von einer Kante Definition pro Kante

node1 -> node2 ;

... gefolgt von einer schließenden Klammer

}

so nahm ich alook bei allen gegebenen Antworten und Links, es sieht aus wie Prefuse / Flare durch die optimale Wahl wird. sie haben sehr ansprechend visialisations, und sie haben für Graphen zur Unterstützung gebaut.

Vielleicht Besuche Google Charts ?

Sie können SVG verwenden in Kombination mit Batik. Ich habe dies mehrmals für die Anzeige von Grafiken verwendet. Batik mit Java 1.5 ist sehr schnell. Mit dieser Lösung können Sie Ihre Grafik in Java programmieren, ohne die Abhängigkeit von Schwingen. Sie können Etiketten hinzufügen, wo Sie hosten es als Servlets und zeigt es als png oder svg wollen.

Sie können die Diagramme in SVG erstellen (dies ist ein XML-Dokument).
Sie verwenden Batik das SVG-Dokument in ein PNG / JPG-Bild zu verwandeln.
Sie können ein Servlet verwenden um dieses Bild zu streamen an den Browser zurück.

In Java Sie eine SVG (= XML) Dokument erstellen. Die Proben für die SVG-Grafiken können Sie hier: Directed Graph und hier: Einfaches Graphen

Siehe diese Frage , vor allem Stephan Antwort über prefuse. Ich habe gelesen, dass Sie keine Interaktivität benötigen, aber prefuse kann noch nützlich sein.

Ich kann von ganzem Herzen empfehlen flechten - ausgezeichnet

Siehe Beispiele hier .

JFreeChart könnte der Weg Sie gehen wollen, aber Sie machen einen Unterschied zwischen Diagramme und Grafiken. Vielleicht können Sie erklären, was Sie damit meinen. Ich habe in der Regel diese Begriffe synonym verwendet. :)

JFreeChart hat eine gute Streuung, Balken- und Liniendiagramme sowie Spaß diejenigen wie Pie und Dial so vielleicht wird es für Sie arbeiten.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top