2009-06-13 6 views
0

Auf der Suche nach Optionen für eine Live-, große Daten-Charting-Plattform, um mit einer großen Menge von sich ständig entwickelnden Daten umzugehen und sie über den Browser in einer verwendbaren Weise anzuzeigen.Charting-Plattform

Müsste von einem DB-Back-End gegen den Ansatz "liest XML-Datei" einiger der Flash-Anwendungen basieren.

Antwort

2

JFreeChart ist eine kostenlose und skalierbare Lösung.

http://www.jfree.org/jfreechart/

+0

JFreeChart vielleicht nicht die beste Wahl für Live-Daten wie die FAQ heißt es, dass es nicht wirklich Echtzeit Charting unterstützt. – Mark

+0

Ja, nahezu Echtzeit ist eine Schlüsselanforderung. –

+0

FYI: Wir verwenden JFreechart für Echtzeit-Charts jeden Tag. –

0

Da die Diagramme auf einem Browser sichtbar sein werden, Sie so etwas wie gnuplot nutzen könnten Bilddateien Ihrer Daten zu erzeugen, und diejenigen anzuzeigen. Gnuplot ist wirklich flexibel, Sie können so ziemlich alles erstellen, und es ist ziemlich schnell. Aber Sie müssen die Daten lesen und sie selbst in gnuplot einspeisen. Es gibt einige Java-Schnittstellen zu gnuplot, falls Sie bei Java bleiben möchten. Setzen Sie den Refresh-Header auf einen vernünftigen Betrag und beobachten Sie die Datenaktualisierung.

Siehe hier über gnuplot: http://www.gnuplot.info

hier über die Java-Schnittstellen Siehe: http://www.gnuplot.info/links.html

+0

Sieht aus wie nur serielle-statische Bilderstellung. –

0

Ich musste einmal ein Gantt-Diagramm von 150 Maschinen und 100.000 Aufgaben anzuzeigen. Ich schrieb ein benutzerdefiniertes Java-Applet mit benutzerdefinierten Rendering und die Datenübertragung wurde von http + Java Serialisierung API behandelt. Ich fand, dass jede andere Lösung (SVG, VML, Flash, Image-Tags) einfach zu langsam und schwer zu bedienen war.

aktualisieren: Here ist ein Bild, wie es aussieht. Leider für die Community war dies ein Industrieprojekt, daher ist der Quellcode nicht öffentlich. Ich kann nur einige Konzepte darüber teilen.

Der Diagrammbereich besteht aus verschiedenen Komponenten: horizontalen und vertikalen Bildlaufleisten, dem Diagrammbereich, der Zeitbeschriftung und den beiden Tabellen auf jeder Seite. Diese Komponenten sind über Ereignishandler miteinander verknüpft. Wenn man scrollt/ändert, wirkt sich das auf die anderen aus. Das Gantt-Diagramm besteht aus gefüllten Rechtecken, in denen die Farbe den Status der Aufgabe angibt. Das Rendern erfolgt in der paint() -Methode, indem jede sichtbare Zeile und die anzeigbaren Start-End-Daten durchlaufen werden. Das Rendern verwendet aggressives Clipping, anstatt die Clipping-Funktion von Graphics2D zu verwenden. Die Benutzer können die Ansicht schwenken und zoomen.

Die Daten werden in einer serialisierbaren Datenstruktur gespeichert. Der serverseitige Java-Code enthält einen Cache für die gesamte Datenstruktur. Diese Struktur wird alle 30 Sekunden aktualisiert, aber nur die Unterschiede werden aus der Backing-Datenbank abgerufen. Die Daten werden dann von dem Applet abgefragt, in das Gantt-Modell integriert, serialisiert und zur Client-Seite zurückgeführt. Die Datenaktualisierung auf der Client-/Applet-Seite erfolgt nicht automatisch: Benutzer müssen auf die Aktualisierungsschaltfläche klicken, damit sie das Bild ohne unerwartete Änderungen auswerten können.

Das Rendern eines Gantt-Diagramms benötigt nicht so viele Fancyness - fillRect, AlphaComposite, drawLine. Wenn Sie komplexere Bilder benötigen, müssen Sie bei meiner Vorgehensweise mehr Kodierung vornehmen.

+0

Dies ist ein interessanter Ansatz, keine weiteren Details? –

1
  1. Geben Sie die Daten mit JSON an den Browser - wie Sie wahrscheinlich benötigen - um die Informationen auf der Clientseite zu aktualisieren;
  2. die Daten zeichnen Raphaël

Diese verwenden, sollten Sie viel höheren Durchsatz geben, da Graphen clientseitige regeneriert werden, und innerhalb einer Plattform für die Zeichnung.

Hier sind ein paar Beispiele was man erreichen kann:

chart http://img140.imageshack.us/img140/5143/rapahelchart.png graph http://img269.imageshack.us/img269/6679/raphaelgraph.png

+0

Ermöglicht es "scrollen" durch die Timeline, Zoomen und andere "Interaktivität"? –