1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144
| 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);
}
} |
Partager