Cette source donne un exemple d'utilisation de JFreeChart pour créer un histogramme. Je n'ai codé que l'histogramme, les autres types de graphiques ont un fonctionnement similaire
Source / Exemple :
import java.awt.Color;
import java.awt.Dimension;
import java.awt.GradientPaint;
import java.awt.GridLayout;
import java.util.ArrayList;
import java.util.List;
import javax.swing.JFrame;
import javax.swing.JPanel;
import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartPanel;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.axis.NumberAxis;
import org.jfree.chart.plot.CategoryPlot;
import org.jfree.chart.plot.PlotOrientation;
import org.jfree.chart.renderer.category.BarRenderer;
import org.jfree.data.category.DefaultCategoryDataset;
public class Graphique extends JPanel {
private static final long serialVersionUID = 1L;
/** titre : Le titre du graphique affiché en haut */
private String titre;
/** ordonnee : le nom de l'axe des ordonnées */
private String ordonnee;
/** abscisses : le nom de l'axe des abscisses */
private String abscisse;
/** valeurs : les valeurs à afficher, elles sont triées par séries et par catégories*/
private List<Float> valeurs;
/** series : la liste des séries */
private List<String> series;
/** categories : la liste des categories */
private List<String> categories;
/** legende : booleen vrai si on affiche la légende */
private boolean legende;
/** couleurFond : la couleur du fond */
private Color couleurFond;
/** couleurBarres : les couleurs appliquées aux barres */
private Color[] couleursBarres = {Color.cyan.darker(),
Color.red, Color.green, Color.cyan, Color.magenta,
Color.yellow, Color.pink, Color.darkGray, Color.orange};
/**
- Constructeur
- @param titre : le titre du graphique
- @param abscisse : le nom de l'axe des abscisses
- @param ordonnee : le nom de l'axe des ordonnées
- @param valeurs : les valeurs
- @param fond : la couleur de fond
- @param listeSeries : les séries
- @param listeCategory : les catégories
- @param legende : vrai si on affiche la légende
- /
public Graphique(String titre, String abscisse, String ordonnee, List<Float> valeurs, Color fond, List<String> listeSeries, List<String> listeCategory, boolean legende) {
super(new GridLayout(1,0));
this.titre=titre;
this.ordonnee=ordonnee;
this.abscisse=abscisse;
this.valeurs=valeurs;
this.series=listeSeries;
this.categories=listeCategory;
this.legende=legende;
this.couleurFond=fond;
initialiser();
}
/**
- Initialise le graphique
- /
private void initialiser(){
DefaultCategoryDataset dataset = new DefaultCategoryDataset();
int k = 0;
for ( int j=0; j<categories.size(); j++){
for (int i=0; i<series.size(); i++){
dataset.addValue(valeurs.get(k), series.get(i), categories.get(j));
k++;
}
}
JFreeChart chart = ChartFactory.createBarChart(
titre, // chart title
abscisse, // domain axis label
ordonnee, // range axis label
dataset, // data
PlotOrientation.VERTICAL, // orientation
legende, // include legend
true, // tooltips
false // URL
);
// definition de la couleur de fond
chart.setBackgroundPaint(couleurFond);
CategoryPlot plot = (CategoryPlot) chart.getPlot();
//valeur comprise entre 0 et 1 transparence de la zone graphique
plot.setBackgroundAlpha(0.9f);
NumberAxis rangeAxis = (NumberAxis) plot.getRangeAxis();
rangeAxis.setStandardTickUnits(NumberAxis.createIntegerTickUnits());
BarRenderer renderer = (BarRenderer) plot.getRenderer();
renderer.setDrawBarOutline(false);
// pour la couleur des barres pour chaque serie
for (int s=0; s<series.size(); s++){
GradientPaint gp0 = new GradientPaint(0.0f, 0.0f, couleursBarres[s],
0.0f, 0.0f, new Color(0, 40, 70));
renderer.setSeriesPaint(s, gp0);
}
ChartPanel chartPanel = new ChartPanel(chart);
chartPanel.setFillZoomRectangle(true);
chartPanel.setMouseWheelEnabled(true);
chartPanel.setPreferredSize(new Dimension(500, 270));
add(chartPanel);
}
/**
- Création d'un graphique
- @param a
- /
public static void main(String[] a){
List<Float> donnees = new ArrayList<Float>();
List<String> l1 = new ArrayList<String>();
List<String> l2 = new ArrayList<String>();
l2.add("0");
l1.add("1");
l1.add("2");
l1.add("3");
l1.add("4");
donnees.add(2f);
donnees.add(3f);
donnees.add(4f);
donnees.add(4f);
JFrame f = new JFrame();
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.setBounds(10,10,500,500);
Graphique g = new Graphique("titre", "x", "y", donnees, Color.white, l2, l1, true);
f.add(g);
f.setVisible(true);
}
}
Vous n'êtes pas encore membre ?
inscrivez-vous, c'est gratuit et ça prend moins d'une minute !
Les membres obtiennent plus de réponses que les utilisateurs anonymes.
Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.
Le fait d'être membre vous permet d'avoir des options supplémentaires.