Récemment, je conçois un cours d'exploration de données. J'ai besoin d'afficher intuitivement les résultats de l'analyse des données aux utilisateurs. Pour réaliser cette fonction, j'ai besoin de plusieurs packages tiers :
1.jfreechart-1.0.13.jar
2. jcommon-1.0.16.jar
3. gnujaxp.jar
Jetons un coup d'oeil au rendu final :
Principalement jfreechart-1.0.13.jar, mais ces trois packages doivent être complets. J'ai compressé et téléchargé tous les packages jar liés à jfreechart avec le projet (code) de l'exemple dans cet article.
Adresse de téléchargement : http://download.csdn.net/detail/pzhtpf/4327700
Ensuite, nous mettons en œuvre ce programme étape par étape.
1. Lors du travail de préparation préliminaire, ces trois packages tiers sont ajoutés au projet de cet article. Le processus d'ajout est très simple. J'ai déjà écrit un blog sur la façon de lire des données dans des tableaux Excel avec Java (les étudiants intéressés peuvent le faire). Jetez un œil : http://blog.csdn.net/pzhtpf/article/details/7506135), vous devez également ajouter des packages tiers. Le processus d'ajout est exactement le même. Ici, nous le passerons en revue :
1. Créez un projet Java et créez un nouveau dossier lib dans ce projet ;
2. Copiez les trois packages jar ci-dessus dans lib
3. Cliquez ensuite avec le bouton droit sur le projet Java et sélectionnez Propriétés
4. Sélectionnez Java Build Path dans la liste de gauche et Bibliothèques à droite.
5. Cliquez sur Ajouter des JAR
6. Sélectionnez ensuite les trois jars dans le dossier lib de ce projet et cliquez sur OK
Après succès, il y aura un dossier supplémentaire dans le projet : Bibliothèques référencées
2. Code Java pour implémenter un histogramme :
importer java.awt.Font ; importer org.jfree.chart.ChartFactory ; importer org.jfree.chart.ChartPanel ; importer org.jfree.chart.JFreeChart ; importer org.jfree.chart.axis.CategoryAxis ; chart.axis.ValueAxis; importer org.jfree.chart.plot.CategoryPlot; org.jfree.chart.plot.PlotOrientation ; importer org.jfree.data.category.CategoryDataset ; importer org.jfree.data.category.DefaultCategoryDataset ; classe publique BarChart { ChartPanel frame1 ; ; Graphique JFreeChart = ChartFactory.createBarChart3D( "Fruit", // Titre du graphique "Fruit Type", // Afficher l'étiquette de l'axe du catalogue "Quantité", // Afficher l'étiquette de l'ensemble de données de l'axe numérique, // Ensemble de données PlotOrientation.VERTICAL, // Direction du graphique : horizontal, vertical vrai , // S'il faut afficher la légende (doit être faux pour un simple graphique à barres) false, // S'il faut générer des outils false // S'il faut générer des liens URL // Démarrer CategoryPlot à partir d'ici); plot=chart.getCategoryPlot();//Obtenir l'objet de la zone graphique CategoryAxis domainAxis=plot.getDomainAxis(); //Liste inférieure horizontale domainAxis.setLabelFont(new Font("黑体",Font.BOLD,14)); Titre inférieur horizontal domainAxis.setTickLabelFont(new Font("宋体",Font.BOLD,12)); //Titre vertical ValueAxis rangeAxis=plot.getRangeAxis(); //Obtenir un rangeAxis.setLabelFont(new Font("黑体",Font.BOLD,15)); chart.getLegend().setItemFont(new Font("黑体" , Font.BOLD, 15)); chart.getTitle().setFont(nouveau Font("宋体",Font.BOLD,20));//Définir la police du titre//Cela se termine ici Bien que le code soit un peu trop long, il n'a qu'un seul but, résoudre le problème des caractères chinois tronqués frame1. =new ChartPanel(chart,true); //chartFrame peut également être utilisé ici, qui peut générer directement un Frame indépendant } private static CategoryDataset getDataSet() { DefaultCategoryDataset dataset = new DefaultCategoryDataset(); dataset.addValue(100, "Pékin", "Apple"); dataset.addValue(100, "Shanghai", "Apple"); dataset.addValue(100, "Guangzhou", "Apple"); , "Pékin", "Poire"); dataset.addValue(200, "Shanghai", "Poire"); "Poire"); dataset.addValue(300, "Pékin", "Raisin"); dataset.addValue(300, "Shanghai", "Raisin"); dataset.addValue(400, "Pékin", "Banane"); dataset.addValue(400, "Shanghai", "Banane"); "Banane"); dataset.addValue(500, "Pékin", "Litchi"); dataset.addValue(500, "Shanghai", "Litchi"); retourner l'ensemble de données ; } public ChartPanel getChartPanel(){ return frame1 } } Les rendus sont les suivants :
Mais après avoir modifié les données dans la méthode statique privée CategoryDataset getDataSet(){}, un autre effet se formera. Par exemple, nous le modifions en :
private static CategoryDataset getDataSet() { DefaultCategoryDataset dataset = new DefaultCategoryDataset(); dataset.addValue(100, "Apple", "Apple"); dataset.addValue(200, "Pear", "Pear"); , "Raisin", "Raisin"); dataset.addValue(400, "Banane", "Banane"); dataset.addValue(500, "Litchi", "Litchi"); renvoyer l'ensemble de données }Les rendus sont les suivants :
Trois codes Java pour implémenter un diagramme circulaire :
package com.njue.testJFreeChart ; importer java.awt.Font ; importer java.text.DecimalFormat ; importer java.text.NumberFormat ; importer org.jfree.chart.ChartFactory ; .ChartPanel ; importer org.jfree.chart.JFreeChart ; org.jfree.chart.labels.StandardPieSectionLabelGenerator ; importer org.jfree.chart.plot.PiePlot ; importer org.jfree.data.general.DefaultPieDataset ; classe publique PieChart { ChartPanel frame1 ; ; Graphique JFreeChart = ChartFactory.createPieChart3D("Fruit Yield",data,true,false,false); //Définir le pourcentage PiePlot pieplot = (PiePlot) chart.getPlot(); un objet DecimalFormat, définissant principalement les problèmes décimaux NumberFormat nf = NumberFormat.getNumberInstance();//Obtenir un objet NumberFormat StandardPieSectionLabelGenerator sp1 = new StandardPieSectionLabelGenerator("{0} {2}", nf, df);//Obtenir l'objet StandardPieSectionLabelGenerator pieplot.setLabelGenerator(sp1);//Définir le pourcentage d'affichage du graphique à secteurs //Le contenu affiché lorsqu'il n'y a pas de données pieplot.setNoDataMessage("Aucune donnée affichée"); ); diagramme circulaire .setLabelGap(0.02D); pieplot.setIgnoreNullValues(true);//Définir pour ne pas afficher les valeurs nulles pieplot.setIgnoreZeroValues(true);//Définir pour ne pas afficher les valeurs négatives frame1=new ChartPanel (chart,true); chart.getTitle(). setFont(new Font(" Song Dynasty",Font.BOLD,20));//Définir la police du titre PiePlot piePlot= (PiePlot) chart.getPlot();//Obtenir l'objet de la zone graphique piePlot.setLabelFont(new Font("宋体",Font.BOLD,10));//Résoudre les caractères tronqués chart.getLegend().setItemFont(new Font("黑体", Font.BOLD,10)); } private static DefaultPieDataset getDataSet() { Ensemble de données DefaultPieDataset = new DefaultPieDataset(); dataset.setValue("pomme",100); dataset.setValue("poire",200); dataset.setValue("raisin",300); dataset.setValue("banane",400); " ",500); renvoyer l'ensemble de données ; } public ChartPanel getChartPanel(){ return frame1 } } Les rendus sont les suivants :
4. Code Java pour implémenter un graphique linéaire :
package com.njue.testJFreeChart ; importer java.awt.Font ; importer java.text.SimpleDateFormat ; importer org.jfree.chart.ChartFactory ; importer org.jfree.chart.ChartPanel ; .jfree.chart.axis.DateAxis ; org.jfree.chart.axis.ValueAxis ; importer org.jfree.chart.plot.XYPlot ; importer org.jfree.data.time.Month ; importer org.jfree.data.time.TimeSeries ; time.TimeSeriesCollection ; importer org.jfree.data.xy.XYDataset ; classe publique TimeSeriesChart { ChartPanel frame1 ; TimeSeriesChart(){ ) jfreechart.getPlot(); DateAxis dateaxis = (DateAxis) xyplot.getDomainAxis(); dateaxis.setDateFormatOverride(new SimpleDateFormat("MMM-yyyy")); frame1=new ChartPanel(jfreechart,true); dateaxis.setLabelFont(new Font("黑体",Font.BOLD,14)); //Titre horizontal inférieur dateaxis.setTickLabelFont(new Font("宋体",Font.BOLD,12)); //Titre vertical ValueAxis rangeAxis=xyplot.getRangeAxis(); //Obtenir un rangeAxis en colonnes.setLabelFont(new Font("黑体",Font.BOLD,15)); jfreechart.getLegend().setItemFont(new Font("黑体", Font.BOLD, 15)); jfreechart.getTitle().setFont(new Font("宋体",Font.BOLD,20));//Définir la police du titre} private static XYDataset createDataset() { //Cet ensemble de données est un peu trop, mais c'est pas difficile à comprendre TimeSeries timeseries = new TimeSeries("legal & general European Index Trust", org.jfree.data.time.Month.class timeseries.add(new Month(2, 2001), 181.80000000000001D); timeseries.add (nouveau mois (3, 2001), 167.30000000000001D); 167.59999999999999D); timeseries.add (nouveau mois (6, 2001), 158.80000000000001D); timeseries.add (nouveau mois (7, 2001), 148.30000000000001D); 153.90000000000001D); timeseries.add (nouveau mois (9, 2001), 142.69999999999999D); timeseries.add (nouveau mois (10, 2001), 123.2D); 131.80000000000001D); timeseries.add (nouveau mois (12, 2001), 139.59999999999999D); timeseries.add (nouveau mois (1, 2002), 142.90000000000001D); 138.69999999999999D); timeseries.add (nouveau mois (3, 2002), 137.30000000000001D); timeseries.add (nouveau mois (4, 2002), 143.90000000000001D); 139.80000000000001D); timeseries.add (nouveau mois (6, 2002), 137D); timeseries.add (nouveau mois (7, 2002), 132.80000000000001D); org.jfree.data.time.Month.class); timeseries1.add (nouveau mois (2, 2001), 129.5999999999999D); timeseries1.add (nouveau mois (3, 2001), 123.2D) timeseries1.add (nouveau); timeseries1.add(nouveau mois(3, 2001), 123.2D) Mois(4, 2001), 117.2D) timeseries1.add(nouveau); Mois (5, 2001), 124,099999999999999D); timeseries1.add (nouveau mois (6, 2001), 122,59999999999999D); timeseries1.add (nouveau mois (7, 2001), 119,2D); 8, 2001), 116.5D); timeseries1.add (nouveau mois (9, 2001), 112.7D); timeseries1.add (nouveau mois (10, 2001), 101.5D); timeseries1.add (nouveau mois (11, 2001), 106.09999999999999D); ); timeseries1.add(nouveau mois(12, 2001), 110.3D); timeseries1.add (nouveau mois (1, 2002), 111.7D); timeseries1.add (nouveau mois (2, 2002), 111D); 109.59999999999999D timeseries1.add (nouveau) ; Mois (4, 2002), 113.2D); timeseries1.add (nouveau mois (5, 2002), 111.59999999999999D); timeseries1.add (nouveau mois (6, 2002), 108.8D); 7, 2002), 101.59999999999999D); TimeseriesCollection timeseriescollection = new TimeSeriesCollection(); timeseriescollection.addSeries; timeseriescollection.addSeries(timeseriescollection; } public ChartPanel getChartPanel(){ return frame1 } }Les rendus sont les suivants :
Jetons un coup d'œil à la méthode principale :
importer java.awt.GridLayout; importer javax.swing.JFrame; public class mainClass { public static void main(String args[]){ JFrame frame=new JFrame("Java Data Chart"); ,2,10,10)); frame.add(new BarChart().getChartPanel()); //Ajouter un graphique à barres frame.add(new BarChart1().getChartPanel()); //Ajouter un autre effet de graphique à colonnes frame.add(new PieChart().getChartPanel()); //Ajouter un graphique à secteurs frame.add(new TimeSeriesChart().getChartPanel ()); //Ajouter un graphique linéaire frame.setBounds(50, 50, 800, 600); Cinq résumé
Ce qui précède est un exemple simple à mettre en œuvre. Les étudiants qui souhaitent en savoir plus peuvent vérifier les informations par eux-mêmes. En fait, les codes ci-dessus sont faciles à comprendre. Tant que vous combinez votre situation réelle, vous pouvez développer votre propre application. Vous pouvez voir que I Ceci est implémenté sur l'application. En fait, davantage de graphiques statistiques sont utilisés sur JavaWeb. Vous pouvez également en apprendre davantage par vous-même.