Legen Sie mit JFreeChart einen neuen Kurs fest

Als Entwickler werde ich oft gebeten, neue Anwendungen zu demonstrieren. Nachdem ich viele Demos gemacht hatte, bemerkte ich, dass Benutzer anfangs oft mehr daran interessiert sind, wie eine Anwendung aussieht als was sie tut. Mir ist auch aufgefallen, dass eine der besten Möglichkeiten, einen guten ersten Eindruck zu hinterlassen, ein farbenfrohes dreidimensionales Diagramm ist.

JFreeChart ist eine beliebte Open-Source-Java-Diagrammbibliothek, die die gängigsten Diagrammtypen generieren kann, einschließlich Kreis-, Balken-, Linien- und Gantt-Diagramme. Darüber hinaus unterstützt die JFreeChart-API viele interaktive Funktionen wie QuickInfos und Zoomen. JFreeChart bietet eine ausgezeichnete Wahl für Entwickler, die Swing- oder webbasierten Anwendungen Diagramme hinzufügen müssen.

Hinweis: Die folgenden Beispiele basieren auf JFreeChart Version 0.9.4. Um den in dieser Spalte enthaltenen Code zu kompilieren und auszuführen, müssen Sie zwei JAR-Dateien aus der JFreeChart-Distribution jfreechart-0.9.4.jarund jcommon-0.7.1.jarin Ihrem Klassenpfad haben.

Diagramme und Datensätze

Um ein Diagramm mit JFreeChart zu erstellen, müssen Sie ein Diagramm erstellen Dataset, mit dem Sie dann ein Diagramm erstellen JFreeChart. A Datasetenthält die Daten, die im Diagramm angezeigt werden. JFreeChart bietet viele verschiedene DatasetObjekte, mit denen Sie verschiedene Diagrammtypen erstellen können. Sobald Sie ein erstellt haben Dataset, erstellen Sie als Nächstes das eigentliche Diagramm. JFreeChart verwendet ein Objekt mit dem entsprechenden Namen JFreeChart, um Diagramme darzustellen. Sie erstellen JFreeChartObjekte aus DatasetObjekten mit der ChartFactoryKlasse. In den folgenden Beispielen erstellen wir Kreis-, XY- und Balkendiagramme zusammen mit den entsprechenden DatasetObjekten.

Kuchendiagramm

Ein Kreisdiagramm wird aus a erstellt PieDataset. Im folgende Beispiel wird eine PieDatasetder mit DefaultPieDatasetKlasse, fügt zwei Werte über das setValue()Verfahren, und erstellt dann ein Kreisdiagramm mit der ChartFactorys‘ createPieChart()Methode. In diesem Beispiel wird ein Kreisdiagramm mit dem Titel "Beispiel-Kreisdiagramm", einer Legende und zwei Segmenten erstellt : JavaWorld mit 75 Prozent des Kreises und Andere mit den anderen 25 Prozent:

DefaultPieDataset pieDataset = new DefaultPieDataset (); pieDataset.setValue ("JavaWorld", neue Ganzzahl (75)); pieDataset.setValue ("Andere", neue Ganzzahl (25)); JFreeChart chart = ChartFactory.createPieChart ("Beispiel-Kreisdiagramm", // Titel pieDataset, // Dataset true // Legende anzeigen);

XY-Diagramm

Sie XYDatasetkönnen Flächen-, Linien- und Schritt-XY-Diagramme erstellen. Im folgenden Beispiel wird XYDatasetaus einer Reihe von Daten eine erstellt, die drei XY-Punkte enthält. Als nächstes ChartFactory‚s createAreaXYChart()schafft Verfahren eine Fläche XY - Diagramm. Zusätzlich zu den Parametern für Titel, Datensatz und Legende werden createAreaXYChart()die Beschriftungen für die X- und Y-Achse berücksichtigt:

XYSeries-Reihe = neue XYSeries ("durchschnittliche Größe"); series.add (20.0, 10.0); series.add (40,0, 20,0); series.add (70,0, 50,0); XYDataset xyDataset = neue XYSeriesCollection (Serie); JFreeChart chart = ChartFactory.createAreaXYChart ("Beispiel-XY-Diagramm", // Titel "Höhe", // X-Achsen-Bezeichnung "Gewicht", // Y-Achsen-Bezeichnung xyDataset, // Datensatz wahr // Legende anzeigen);

Balkendiagramm

A CategoryDatasetkann zahlreiche verschiedene Diagramme erstellen, einschließlich horizontaler und vertikaler Balkendiagramme. Im folgenden Beispiel wird ein CatagoryDatasetmit zwei Datenreihen und zwei Kategorien erstellt und anschließend aus diesem Datensatz ein vertikales 3D-Balkendiagramm erstellt. In diesem Beispiel wird ein Diagramm erstellt, in dem das Umsatzwachstum in zwei Quartalen über zwei Jahre verglichen wird:

String [] seriesNames = new String [] {"2001", "2002"}; String [] categoryNames = new String [] {"Erster Quater", "Zweiter Quater"}; Number [] [] categoryData = new Integer [] [] {{new Integer (20), new Integer (35)}, {new Integer (40), new Integer (60)}}; CategoryDataset categoryDataset = new DefaultCategoryDataset (seriesNames, categoryNames, categoryData); JFreeChart chart = ChartFactory.createVerticalBarChart3D ("Beispielkategoriediagramm", // Titel "Quartale", // X-Achsen-Label "Sales", // Y-Achsen-Label categoryDataset, // Dataset true // Legende anzeigen);

Integrieren Sie JFreeChart

Die Integration von JFreeChart in eine Swing-Anwendung ist relativ einfach. Erstellen Sie einfach ein BufferedImageaus dem Diagramm und verwenden Sie das Bild als Symbol für JLabel:

BufferedImage image = chart.createBufferedImage (500.300); JLabel lblChart = new JLabel (); lblChart.setIcon (neues ImageIcon (Bild));

JFreeChart enthält auch eine Klasse mit dem Namen ChartUtilities, die verschiedene Methoden zum Speichern von Diagrammen in Dateien oder zum Schreiben in Streams im JPEG- oder PNG-Format bietet. Der folgende Code kann beispielsweise ein Diagramm in ein JPEG exportieren:

ChartUtilities.saveChartAsJPEG (neue Datei ("chart.jpg"), Diagramm, 500, 300); 

Die Methoden in der ChartUtilitiesKlasse können zum Erstellen von JPEGs zur Verwendung auf einer statischen Webseite oder in einer JSP- (JavaServer Pages) / Servlet-basierten Anwendung verwendet werden, um Diagramme dynamisch auf Webseiten zu streamen.

Auf die Plätze, fertig, Diagramm!

In diesem Artikel wurde gezeigt, wie Sie mit der JFreeChart-Bibliothek einige gängige Datensätze und Diagramme erstellen. JFreeChart hat viel mehr zu bieten, einschließlich vieler Diagrammtypen und erweiterter Funktionen wie kombinierte Diagramme und Diagrammmausereignisse. Auf der JFreeChart-Homepage finden Sie die neueste Version der Software, eine servletbasierte Demo, Links zu Projekten, die JFreeChart verwenden, und vieles mehr.

Erik Swenson ist Berater und Gründer von Open Source Software Solutions. Swenson ist auf die Java-Entwicklung mit Open Source-Software und -Komponenten spezialisiert. Darüber hinaus entwickelte er Open Source-Projekte von JasperEdit und OpenReports.

Erfahren Sie mehr über dieses Thema

  • Laden Sie den Code herunter, der diesem Artikel beiliegt

    //images.techhive.com/downloads/idge/imported/article/jvw/2002/12/jw-1227-opensourceprofile.zip

  • Die JFreeChart-Homepage

    //www.object-refinery.com/jfreechart

  • jCharts ist eine Open Source-Alternative zu JFreeChart

    //jcharts.sourceforge.net

  • Erik Swensons Für weitere Open - Source - Tools, nach Open Source Profil Spalten

    //www.javaworld.com/columns/jw-opensource-index.shtml

  • Durchsuchen Sie den Abschnitt Entwicklungstools im aktuellen Index von JavaWorld

    //www.javaworld.com/channel_content/jw-tools-index.shtml

  • Chatten Sie im JavaWorld-Forum über die Java-Entwicklung

    //forums.devworld.com/[email protected]@.ee6b802

  • Melden Sie sich für den kostenlosen wöchentlichen E-Mail-Newsletter von JavaWorld an

    //www.javaworld.com/subscribe

  • Unter .net finden Sie eine Fülle von IT-Artikeln aus unseren Schwesterpublikationen

Diese Geschichte "Planen Sie einen neuen Kurs mit JFreeChart" wurde ursprünglich von JavaWorld veröffentlicht.