Kürzlich entwerfe ich einen Data-Mining-Kurs. Ich muss den Benutzern die Ergebnisse der Datenanalyse intuitiv anzeigen. Um diese Funktion zu realisieren, benötige ich mehrere Pakete von Drittanbietern.
1.jfreechart-1.0.13.jar
2. jcommon-1.0.16.jar
3. gnujaxp.jar
Werfen wir einen Blick auf das endgültige Rendering:
Hauptsächlich jfreechart-1.0.13.jar, aber diese drei Pakete müssen vollständig sein. Ich habe alle JFreechart-bezogenen JAR-Pakete zusammen mit dem Projekt (Code) des Beispiels in diesem Artikel hochgeladen.
Download-Adresse: http://download.csdn.net/detail/pzhtpf/4327700
Als nächstes setzen wir dieses Programm Schritt für Schritt um.
1. In der vorbereitenden Vorbereitungsarbeit werden diese drei Pakete von Drittanbietern zum Projekt dieses Artikels hinzugefügt. Ich habe zuvor einen Blog darüber geschrieben, wie man Daten in Excel-Tabellen mit Java liest (interessierte Studenten können dies tun). Werfen Sie einen Blick auf: http://blog.csdn.net/pzhtpf/article/details/7506135. Sie müssen auch Pakete von Drittanbietern hinzufügen. Der Vorgang zum Hinzufügen ist genau derselbe:
1. Erstellen Sie ein Java-Projekt und erstellen Sie in diesem Projekt einen neuen Ordner lib.
2. Kopieren Sie die oben genannten drei JAR-Pakete nach lib
3. Klicken Sie dann mit der rechten Maustaste auf das Java-Projekt und wählen Sie Eigenschaften
4. Wählen Sie in der Liste links Java Build Path und rechts Bibliotheken aus.
5. Klicken Sie auf JARs hinzufügen
6. Wählen Sie dann die drei JARs im lib-Ordner dieses Projekts aus und klicken Sie auf OK
Nach Erfolg gibt es im Projekt einen zusätzlichen Ordner: Referenzierte Bibliotheken
2. Java-Code zum Implementieren eines Säulendiagramms:
import java.awt.Font; import org.jfree.chart.ChartPanel; import org.jfree.chart.axis.CategoryAxis; chart.axis.ValueAxis; import org.jfree.chart.plot.CategoryPlot; org.jfree.chart.plot.PlotOrientation; import org.jfree.data.category.DefaultCategoryDataset; public class BarChart { ChartPanel(){ CategoryDataset dataset = getDataSet() ; JFreeChart chart = ChartFactory.createBarChart3D( „Fruit“, // Diagrammtitel „Fruit Type“, // Anzeigebeschriftung der Katalogachse „Quantity“, // Anzeigebeschriftung des numerischen Achsendatensatzes, // Datensatz PlotOrientation.VERTICAL, // Diagrammrichtung: horizontal, vertikal true , // Ob die Legende angezeigt werden soll (muss für ein einfaches Balkendiagramm „false“ sein) false, // Ob Tools generiert werden sollen false // Ob URL-Links generiert werden sollen); // CategoryPlot von hier aus starten plot=chart.getCategoryPlot();//Holen Sie sich das Diagrammbereichsobjekt CategoryAxis domainAxis=plot.getDomainAxis(); //Horizontale untere Liste domainAxis.setLabelFont(new Font("黑体",Font.BOLD,14)); Horizontaler unterer Titel domainAxis.setTickLabelFont(new Font("宋体",Font.BOLD,12)); //Vertikaler Titel ValueAxis rangeAxis=plot.getRangeAxis(); //Get Columnar rangeAxis.setLabelFont(new Font("黑体",Font.BOLD,15)); chart.getLegend().setItemFont(new Font("黑体" , Font.BOLD, 15)); chart.getTitle().setFont(new Font("宋体",Font.BOLD,20));//Legen Sie die Titelschriftart fest//Der Code ist zwar etwas umfangreich, dient aber nur einem Zweck: der Lösung des Problems verstümmelter chinesischer Zeichen, Frame1 =new ChartPanel(chart,true); //chartFrame kann hier auch verwendet werden, wodurch direkt ein unabhängiger Frame generiert werden kann } private static CategoryDataset getDataSet() { DefaultCategoryDataset dataset = new DefaultCategoryDataset(); dataset.addValue(100, „Beijing“, „Apple“); dataset.addValue(100, „Shanghai“, „Apple“); dataset.addValue(100, „Guangzhou“, „Apple“); , „Beijing“, „Pear“); dataset.addValue(200, „Shanghai“, „Pear“); "Pear"); dataset.addValue(300, "Beijing", "Grape"); dataset.addValue(300, "Shanghai", "Grape"); dataset.addValue(400, „Beijing“, „Banana“); dataset.addValue(400, „Shanghai“, „Banana“); "Banana"); dataset.addValue(500, "Beijing", "Litchi"); dataset.addValue(500, "Shanghai", "Litchi"); return dataset; } public ChartPanel getChartPanel(){ return frame1 } } Die Darstellungen lauten wie folgt:
Aber nachdem wir die Daten in der privaten statischen CategoryDataset-Methode getDataSet(){} geändert haben, entsteht ein weiterer Effekt. Beispielsweise ändern wir ihn in:
privates statisches CategoryDataset getDataSet() { DefaultCategoryDataset dataset = new DefaultCategoryDataset(); dataset.addValue(100, "Apple", "Apple"); dataset.addValue(200, "Pear", "Pear"); , „Traube“, „Traube“); dataset.addValue(400, „Banana“, „Banana“); dataset.addValue(500, „Litchi“, „Litchi“);Die Darstellungen lauten wie folgt:
Drei Java-Codes zum Implementieren eines Kreisdiagramms:
package com.njue.testJFreeChart; import java.text.DecimalFormat; import org.jfree.chart.ChartFactory; .ChartPanel; import org.jfree.chart.JFreeChart; org.jfree.chart.labels.StandardPieSectionLabelGenerator; import org.jfree.data.general.DefaultPieDataset; public class PieChart(){ DefaultPieDataset data = getDataSet() ; JFreeChart-Diagramm = ChartFactory.createPieChart3D("Fruit Yield",data,true,false,false); //Legen Sie den Prozentsatz fest PiePlot = (PiePlot) chart.getPlot(); DecimalFormat df = new DecimalFormat("0.00%"); Ein DecimalFormat-Objekt, das hauptsächlich Dezimalzahlen festlegt. NumberFormat nf = NumberFormat.getNumberInstance();//Ein NumberFormat-Objekt abrufen StandardPieSectionLabelGenerator sp1 = new StandardPieSectionLabelGenerator("{0} {2}", nf, df);//Holen Sie sich das StandardPieSectionLabelGenerator-Objekt pieplot.setLabelGenerator(sp1);//Legen Sie den Anzeigeprozentsatz des Kreisdiagramms fest //Der angezeigte Inhalt, wenn keine Daten vorhanden sind pieplot.setNoDataMessage("Keine Daten angezeigt"); pieplot.setCircular(false ); Pieplot .setLabelGap(0.02D); pieplot.setIgnoreNullValues(true);//Legen Sie fest, dass Nullwerte nicht angezeigt werden. pieplot.setIgnoreZeroValues(true);//Legen Sie fest, dass keine negativen Werte angezeigt werden. setFont(new Font(" Song Dynasty",Font.BOLD,20));//Legen Sie die Titelschrift PiePlot fest piePlot= (PiePlot) chart.getPlot();//Holen Sie sich das Diagrammbereichsobjekt piePlot.setLabelFont(new Font("宋体",Font.BOLD,10));//Lösen Sie verstümmelte Zeichen chart.getLegend().setItemFont(new Font("黑体", Font.BOLD,10)); } private static DefaultPieDataset getDataSet() { DefaultPieDataset dataset = new DefaultPieDataset(); dataset.setValue("apple",100); dataset.setValue("pear",300); dataset.setValue("lychee". " ",500); return dataset; } public ChartPanel getChartPanel(){ return frame1 } } Die Darstellungen lauten wie folgt:
4. Java-Code zum Implementieren eines Liniendiagramms:
Paket com.njue.testJFreeChart; import java.text.SimpleDateFormat; import org.jfree.chart.ChartPanel; import org .jfree.chart.axis.DateAxis; import org.jfree.chart.axis.ValueAxis; import org.jfree.data.time.Month; import org.jfree.data.time.TimeSeries; time.TimeSeriesCollection; import org.jfree.data.xy.XYDataset; public class TimeSeriesChart { ChartPanel public TimeSeriesChart(){ ) jfreechart.getPlot(); DateAxis dateaxis = (DateAxis) xyplot.getDomainAxis(); dateaxis.setDateFormatOverride(new SimpleDateFormat("MMM-yyyy")); dateaxis.setLabelFont(new Font("黑体",Font.BOLD,14)); //Horizontaler unterer Titel dateaxis.setTickLabelFont(new Font("宋体",Font.BOLD,12)); //Vertikaler Titel ValueAxis rangeAxis=xyplot.getRangeAxis(); //Get Columnar rangeAxis.setLabelFont(new Font("黑体",Font.BOLD,15)); jfreechart.getLegend().setItemFont(new Font("黑体", Font.BOLD, 15)); jfreechart.getTitle().setFont(new Font("宋体",Font.BOLD,20));//Legen Sie die Schriftart des Titels fest} private static XYDataset createDataset() { //Dieser Datensatz ist ein bisschen viel, aber er ist es nicht schwer zu verstehen TimeSeries timeseries = new TimeSeries("legal & general European Index Trust", org.jfree.data.time.Month.class(new Month(2, 2001);) 181.80000000000001D); timeseries.add(new Month(3, 2001), 167.30000000000001D); 167.59999999999999D); timeseries.add(new Month(6, 2001), 158.80000000000001D); timeseries.add(new Month(7, 2001), 148.30000000000001D); 153.90000000000001D); timeseries.add(new Month(9, 2001), 142.69999999999999D); timeseries.add(new Month(10, 2001), 123.2D); 131.80000000000001D); timeseries.add(new Month(12, 2001), 139.5999999999999D); timeseries.add(new Month(1, 2002), 142.90000000000001D); 138.69999999999999D); timeseries.add(new Month(3, 2002), 137.30000000000001D); timeseries.add(new Month(4, 2002), 143.90000000000001D); 139.80000000000001D); timeseries.add(new Month(7, 2002), 132.8000000000001D); TimeSeries("legal & general UK Index Trust", org.jfree.data.time.Month.class); timeseries1.add(new Month(2, 2001), 129.5999999999999D); timeseries1.add(new Month(3, 2001), 123.2D); timeseries1.add(new Month(3, 2001), 123.2D) Month(4, 2001), 117.2D); Month(5, 2001), 124.09999999999999D(new Month(6, 2001), 122.5999999999999D); timeseries1.add(new Month(7, 2001), 119.2D); 8, 2001), 116,5D); timeseries1.add(neuer Monat(9, 2001), 112,7D); timeseries1.add(neuer Monat(10, 2001), 101,5D); ); timeseries1.add(neuer Monat(12, 2001), 110.3D); timeseries1.add(new Month(1, 2002), 111.7D); timeseries1.add(new Month(2, 2002), 111D); 109.59999999999999D); timeseries1.add(neu Month(4, 2002), 113.2D); timeseries1.add(new Month(5, 2002), 111.5999999999999D); timeseries1.add(new Month(6, 2002), 108.8D); 7, 2002), 101.5999999999999D); TimeSeriesCollection(); timeseriescollection.addSeries(timeseries1); return timeseriescollection;Die Darstellungen lauten wie folgt:
Werfen wir einen Blick auf die Hauptmethode:
import java.awt.GridLayout; import javax.swing.JFrame; public class void main(String args[]){ JFrame frame=new JFrame("Java Data Chart"); ,2,10,10)); frame.add(new BarChart().getChartPanel()); //Balkendiagramm hinzufügen frame.add(new BarChart1().getChartPanel()); //Einen weiteren Effekt des Säulendiagramms hinzufügen frame.add(new PieChart().getChartPanel()); //Kreisdiagramm hinzufügen frame.add(new TimeSeriesChart().getChartPanel()); //Ein Liniendiagramm hinzufügen frame.setBounds(50, 50, 800, 600); frame.setVisible(true); Fünf Zusammenfassung
Das Obige ist ein einfaches Beispiel für die Implementierung. Wenn Sie mehr über die Informationen erfahren möchten, können Sie die oben genannten Codes leicht verstehen Sie können sehen, dass dies in der Anwendung implementiert ist. Tatsächlich werden in JavaWeb weitere statistische Diagramme verwendet.