JFREECHART est un projet Java sur le site open source sourceforge.net. Il est principalement utilisé pour une variété de graphiques, notamment: graphiques à tarte, graphiques à barres (graphiques à barres normaux et graphiques à barres de pile), des graphiques de ligne, des graphiques de zone, des graphiques de distribution, des graphiques mixtes, des graphiques Gantt et des tableaux de bord.
Pour appliquer JFreeChart pour dessiner des images, vous avez besoin de deux packages JAR: jfreechart.jar et jcommon.jar, adresse de téléchargement.
Voici un exemple de dessin d'un tableau de ligne:
package yuth.jfree.demo; / ** * Créez un graphique de ligne à l'aide de CatégoryDataset DataSet * Lorsqu'il y a beaucoup de données, la valeur de la coordonnée horizontale ne peut pas être entièrement vue dans le JPanel, et elle est affichée sous forme de ellipse. * Solution: * Méthode 1. Lors de l'enregistrement du rapport en tant qu'image, définissez la largeur de l'image pour être suffisamment grande (2000 ou 3000), afin que l'image puisse afficher la valeur de coordonnées horizontale. * Cette méthode traite les symptômes mais pas la cause profonde, il existe donc une deuxième méthode * Méthode 2: Définissez la lable sur l'axe X pour l'incliner à 45 degrés. * / Importer java.awt.basicStroke; import java.awt.color; import java.awt.dimension; Importer java.awt.font; import java.awt.geom.ellipse2d; Importer java.io.file; Importer java.io.ioException; Importer java.net.url; import 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.chartulities; 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.lineandshaperender; 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.rectangleEdge; import org.jfree.ui.rectangleInsets; import org.jfree.ui.refineryutiability; classe publique LineChartDemo1 étend ApplicationFrame {private static final long SerialVersionUID = -6354350604313079793l; / * synthétique * / classe statique Classe $ Demo $ lineChartDemo1; public lineChartDemo1 (String String) {super (string); Jpanel jpanel = CreateDemOpanel (); jpanel.setPreferRedSize (nouvelle dimension (500, 270)); SetContentPane (JPanel); } / ** * Comment distinguer différentes légendes: distinguer si le deuxième paramètre de DefaultCategoryDataset.addValue () est le même. * L'ordre des données ajoutés dans la même légende affecte l'affichage final; L'ordre des données ajoutés dans les différentes légendes n'affecte pas l'affichage final. * @return * / Private Static CatégoryDataSet CreateDataSet () {defaultCategoryDataSet DefaultCategoryDataSet = new defaultCategoryDataSet (); //DefaultCategoryDataset.addValue () Analyse des paramètres: (Nom numérique, nom de légende, valeur de coordonnées horizontale) / * // Ajouter la méthode des données 1 // légende 1 defaultCategoryDataset.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, "deuxième", "1001.0"); defaultCategoryDataset.addvalue (1204.0, "deuxième", "1001.1"); DefaultCategoryDataset.addvalue (1820.0, "Second", "1001.2"); / * / // * // Ajouter une méthode de données 2 // Expérimentez le nombre aléatoire pour générer des résultats de test aléatoires aléatoires = nouveau aléatoire (12345); // Legend 1, 40 données pour (int i = 0; i <40; i ++) {defaultCategoryDataset.addvalue (random.nextint (100000), "First", string.valueof (1000 + i)); } // Legend 2, 40 données pour (int i = 0; i <40; i ++) {defaultCategoryDataset.addvalue (random.nextint (100000), "deuxième", string.valueof (1000 + i)); } // * / return defaultCategoryDataset; } JFREECHART STATIQUE PRIVÉE CREATECHART (catégoriedataset categoryDataset) {jfreechart jfreechart = chartfactory.createLineChart ("jfreechart test", // title de graphique "x", // étiquette de broche (x-axis) "y", // étiquette de l'axe de la gamme (axe y-axis) Plotorientation.vertical, // orientation false, // Inclure Legend True, // Message invite si FAUX); // Il faut utiliser les URL // modifier la couleur d'arrière-plan du graphique jfreechart.setbackgroundPaint (Color.white); CategoryPlot categoryPlot = (catégoriePlot) jfreechart.getPlot (); categoryPlot.setBackgroundPaint (Color.lightGray); categoryPlot.setRangeGridLinePaint (Color.white); categoryPlot.setRangeGridLinesVisible (false); // Modifiez l'axe de plage. Nous modifions la valeur d'échelle par défaut (autorisé à afficher les décimales) pour afficher uniquement les valeurs d'échelle entière. NumberAxis NumberRaxis = (NumberAxis) categoryPlot.getRangeaxis (); NumberRaxis.SetStandardTickUnits (NumberAxis.CreateInTeGerTickUnits ()); // Définissez le lable sur l'axe x pour l'incliner à 45 degrés catégoriesaxis domainaxis = categoryplot.getDomainaxis (); domainaxis.setCategoryLabelPositions (catégorieLabelPositifs.up_45); // Réglez le lable sur l'axe x pour l'incliner à 45 degrés Domainaxis.SetLowerMargin (0,0); // Définissez la distance de l'extrémité gauche de l'image Domainaxis.SetUppermargin (0,0); // Définissez la distance de l'extrémité droite de l'image LineAnDShePerender LineAnDshapeRender = (LineAnDshapeRenderer) catégoriePlot .getRenderère (); LineAnDshapeRender.SetShapesvisible (true); LineAnDshapeRenderer.SetDrawoutlines (true); LineAnDshapeRenderer.SettuseFillPaint (true); LineAnDshapeRender.SetBaseFillPaint (Color.White); LineAnDshapeRenderer.SetSerieSStroke (0, New BasicStroke (3.0f)); LineAnDshapereder.SetSeriesoutLinestroke (0, New BasicStroke (2.0f)); LineAnDshapereder.Setseriesshape (0, New Ellipse2d.Double (-5.0, -5.0, 10.0, 10.0)); LineAnDshapereder.SetItemMargin (0,4); // Définit l'espacement de chaque valeur de l'axe X (ne fonctionne pas ??) // Afficher la valeur de données Decimalformat decimalformat1 = new decimalformat ("##. ##"); // le format du point de données affichant les valeurs de données LineAnDSheapeRenderer.SetBaseItemLabelGenerator (New StandardCaLetemLabElGenerator ("{2}", DeccimalForat); Définissez le générateur de l'étiquette des éléments de données LineAnDshapeRenderer.SetBaseItemLabelsVisible (true); // L'étiquette de base affiche LineAnDsHeneRenderer.SetBaseshapesFild (true); // affiche de petites icônes solides au point de données JFREECHART; } public static jpanel CreateDemOpanel () {jfreeChart jfreechart = createChart (CreateDataSet ()); Essayez {Chartulitile.SaveChartasjPeg (nouveau fichier ("d: /linechartdemo1.png"), // le chemin physique pour enregistrer le fichier comprend le nom et le nom de fichier // 1.0f, // la qualité d'image, 0.0f ~ 1.0f jfreechart, // Object 1024, // la largeur de l'image, cela déterminera si la valeur Horizontal Axis peut être entièrement affichée ou entièrement. Ellipsis 768); } catch (ioException e) {// TODO Bloc de capture généré automatiquement e.printStackTrace (); } // Hauteur d'image Retour New ChartPanel (JFreEChart); } public static void main (String [] Strings) {LineChartDemo1 LineChartDemo1 = new LineChartDemo1 ("JFreECH - Ligne Chart Demo 1"); LineChartDemo1.pack (); Raffineryutiability.CenterFrameOnScreen (LineChartDemo1); LineChartDemo1.SetVisible (true); } / * synthétique * / classe statique classe $ (String String) {class var_class; try {var_class = class.forname (string); } catch (classNotFoundException classNotFoundException) {lancer un nouveau noclassdeffoundError (classNotFoundException.getMessage ()); } return var_class; }}Résultats en cours:
Ce qui précède est tout le contenu de cet article. J'espère que cela sera utile à l'apprentissage de tous et j'espère que tout le monde soutiendra davantage Wulin.com.