JFreechart ist ein Java -Projekt auf der Open -Source -Site SourceForge.net. Es wird hauptsächlich für eine Vielzahl von Diagrammen verwendet, darunter: Kreisdiagramme, Balkendiagramme (normale Balkendiagramme und Stack -Balkendiagramme), Liniendiagramme, Flächendiagramme, Verteilungsdiagramme, gemischte Diagramme, Gantt -Diagramme und einige Dashboards.
Um Jfreechart zum Zeichnen von Bildern anzuwenden, benötigen Sie zwei JAR -Pakete: jfreechart.jar und jcommon.jar, Download -Adresse.
Hier ist ein Beispiel für das Zeichnen eines Zeilendiagramms:
Paket yuth.jfree.demo; /*** Erstellen Sie ein Zeilendiagramm mit CategoryDataset -Datensatz* Wenn viele Daten vorhanden sind, kann der Wert der horizontalen Koordinate im JPanel nicht vollständig zu sehen sein und als Ellipsis angezeigt werden. * Lösung: * Methode 1. Wenn Sie den Bericht als Bild speichern, setzen Sie die Breite des Bildes so groß genug (2000 oder 3000), damit das Bild den horizontalen Koordinatenwert anzeigen kann. * Diese Methode behandelt die Symptome, aber nicht die Grundursache, daher gibt es eine zweite Methode* Methode 2: Legen Sie die Label auf der x-Achse ein, um sie 45 Grad zu neigen. */ import Java.awt.AbasicStroke; Import Java.awt.Color; Import Java.awt.Dimension; import Java.awt.font; Import Java.awt.geom.ellipse2d; Import Java.io.file; importieren java.io.ioException; importieren java.net.url; importieren java.text.decimalformat; import Java.util.random; import Javax.swing.imageicon; import Javax.swing.jpanel; import org.jfree.chart.chartfactory; import org.jfree.chart.chartpanel; import org.jfree.chart.chartutilities; import org.jfree.chart.jfreechart; import org.jfree.chart.axis.categoryaxis; import org.jfree.chart.axis.categoryLabelPositions; import org.jfree.chart.axis.numberaxis; import org.jfree.chart.labels.standardCategoryItemLabelGenerator; import org.jfree.chart.plot.categoryPlot; import org.jfree.chart.plot.plotorientation; import org.jfree.chart.renderer.category.LinEandshaperenderer; import org.jfree.chart.title.texttitle; import org.jfree.data.category.categoryDataset; import org.jfree.data.category.defaultCategoryDataset; import org.jfree.ui.applicationframe; import org.jfree.ui.horizontalalignment; import org.jfree.ui.Rectangleged; import org.jfree.ui.Rectangleinsets; import org.jfree.ui.Refineryutilities; öffentliche Klasse LineChartDemo1 erweitert ApplicationFrame {private statische endgültige lange Serialversionuid = -6354350604313079793L; / * synthetisch */statische Klasse Klasse $ Demo $ lineChartDemo1; public lineChartDemo1 (String String) {Super (String); Jpanel jpanel = createMopanel (); jpanel.setPreferredSize (neue Dimension (500, 270)); setContentPane (jpanel); } /*** wie man verschiedene Legenden unterscheidet: Unterscheidet anhand, ob der zweite Parameter von defaultCategoryDataset.addValue () gleich ist. * Die Reihenfolge der in derselben Legende hinzugefügten Daten wirkt sich auf die endgültige Anzeige aus. Die Reihenfolge der in den verschiedenen Legenden hinzugefügten Daten hat keinen Einfluss auf die endgültige Anzeige. * @return */ private statische CategoryDataset erregerataset () {defaultCategoryDataset defaultCategoryDataset = new DefaultCategoryDataset (); //DefaultCategoryDataset.AddValue () Parameteranalyse: (Numerische, Legendame, horizontaler Koordinatenwert) /* // Datenmethode 1 // Legend 1 StandardCategoryDataset.Addvalue (212.0, "First", "1001.0"); defaultCategoryDataset.addValue (504.0, "First", "1001.1"); defaultCategoryDataset.addValue (1520.0, "First", "1001.2"); // Legend 2 defaultCategoryDataset.AddValue (712.0, "Second", "1001.0"); defaultCategoryDataset.addValue (1204.0, "Second", "1001.1"); defaultCategoryDataset.addValue (1820.0, "Second", "1001.2"); /*///* // Datenmethode 2 // Zufall experimentieren, um Testergebnisse zu generieren, Random Random = New Random (12345); // Legend 1, 40 Daten für (int i = 0; i <40; i ++) {defaultCategoryDataset.addValue (random.Nextint (100000), "First", String.ValueOf (1000+i)); } // Legend 2, 40 Daten für (int i = 0; i <40; i ++) {defaultCategoryDataset.addValue (random.nextint (100000), "zweite", String.Valueof (1000+i)); } //*/return defaultCategoryDataset; } private static JFreeChart createChart(CategoryDataset categorydataset) { JFreeChart jfreechart = ChartFactory.createLineChart( "jfreechart test",// Chart title "X", // Spindle label (x-axis) "Y",// Range axis label (y-axis) categorydataset, // Dataset Plotorientation.vertical, // Orientierung Falsch, // ob Legend true, // Aufforderung zur Nachricht, ob falsch); // ob URLs verwendet werden soll // die Hintergrundfarbe des Diagramms jfreechart.setbackgroundPaint (color.white); CategoryPlot categoryPlot = (categoryPlot) jfreechart.getPlot (); CategoryPlot.SetbackgroundPaint (color.lightgray); categoryPlot.setRangeGridlinePaint (color.white); categoryPlot.setRangeGridlinesVisible (false); // die Bereichsachse ändern. Wir ändern den Standard -Skalierungswert (zugelassen, Dezimalstellen anzuzeigen), um nur Integer -Skalierungswerte anzuzeigen. NumberAxis numberRaxis = (numberAxis) categoryPlot.getRangeAxis (); numberRaxis.setStandardTickunits (numberAxis.createIntegertickunits ()); // Setzen Sie die Lennel auf der x -Achse, um sie 45 Grad Categoryaxis Domainaxis = CategoryPlot.GetDomainaxis () zu neigen; Domainaxis.SetCategoryLabelPositions (CategoryLabelPosition.UP_45); // Stellen Sie die Lennel auf der x -Achse ein, um die Domainaxis von 45 Grad zu neigen. Setlowermargin (0,0); // den Abstand vom linken Ende der Bilddomainaxis.SetupperMargin (0,0) festlegen; // den Abstand vom rechten Ende des Bildes lineandshaperenderer lineandshaperenderer = (lineandshaperenderer) categoryPlot .getrenderer () festlegen; lineandshaperenderer.setShapesvisible (true); lineandshaperenderer.setDrawoutlines (true); lineandshaperenderer.setuseFillpaint (true); lineandshaperenderer.setBaseFillpaint (color.white); lineandshaperenderer.setSerieStroke (0, neuer BasicStroke (3.0f)); lineandshaperenderer.setSeriesoutLinestReke (0, neuer BasicStroke (2.0f)); lineandshaperenderer.setSerieSthape (0, New Ellipse2d.double (-5,0, -5.0, 10.0, 10.0)); lineandshaperenderer.setItemmargin (0,4); // Setzen Sie den Abstand jedes Wertes der X-Achse (nicht funktionieren?) // Datenwert Decimalformat Decimalformat1 = new DecimalFormat ("##. ##"); // Das Format von Datenpunkten mit Datenwerten lineandshaperenderer.setbaseItemlGenerator (new standardcategorteMlabelGenerator) (new StandardCategoryitemlabel) (", {2}), {{2}), {{{2 {2}),", {{{2 {2 {2}), ",", ",", ",", ",", ",", ",", ",", ",", ",", "," ",", ",", ""/"/"/"/"/"/"/"/"/"/"/"/"/"/"/"/"/"/"/"/"/"/"/"/"/"/"/""/"" "" "". Legen Sie den Generator der Datenelement -Etikett Lineandshaperenderer.setbaseItemLabelsible (true); // Die grundlegende Element -Label -Anzeige lineandshaperenderer.setbaseShapesFiln (true); // Solid kleine Icons am Data Point Return Jfreechart anzeigen; } public static jpanel erstellteMopanel () {jfreechart jfreechart = CreateChart (createdataset ()); Versuchen Sie {ChartUtilities.savechartasjpeg (neue Datei ("d: /linechartdemo1.png"), // Der physische Pfad zum Speichern der Datei enthält den Pfad und den Dateinamen // 1.0f, // Bildqualität, 0,0F ~ 1.0F JFreechart // Diagramm -Objekt 1024, // Bildbreite, dies wird feststellen. 768); } catch (ioException e) {// Todo automatisch generierter Catch-Block e.printstacktrace (); } // Bildhöhe geben neue ChartPanel zurück (JFreechart); } public static void main (String [] Strings) {lineChartDemo1 lineChartDemo1 = new lineChartDemo1 ("jfreechart - Zeilendiagramm -Demo 1"); lineChartDemo1.pack (); RefineryUtilities.CenterFrameOnscreen (lineChartDemo1); lineChartDemo1.setvisible (true); } / * synthetisch * / statische Klasse Klasse $ (String String) {class var_class; try {var_class = class.forname (string); } catch (classNotFoundException classNotFoundException) {neue noclassDeffoundError werfen (classNotFoundException.getMessage ()); } return var_class; }}Auslaufergebnisse:
Das obige ist der gesamte Inhalt dieses Artikels. Ich hoffe, es wird für das Lernen aller hilfreich sein und ich hoffe, jeder wird Wulin.com mehr unterstützen.