Bonjour,

Voici de nombreuses tentatives que j'effectue sur un problème de graphique avec Jfreechart. Le problème étant le suivant :

Je récupère des valeurs et monte 3 datasets différents :
Load
Capacity
Sum

Les datasets sont bien remplies et ne sont pas erronées.

J'affiche 2 types de graphique différents dans ma chart

Ici deux solutions :

Solutions n°1 :
J'affiche le load en fonciton de l'année et la sum en fonction de l'année dans un "LayeredBarRenderer", afin de pouvoir superposer les deux barres.
J'affiche la capacity en fonction de l'année avec un renderer "LineAndShapeRenderer" au dessus du graphique ( ce graphique là marche )

Solutions n°2
J'affiche le load en fonciton de l'année et la sum en fonction de l'année dans un "BarRenderer", afin de pouvoir mettre les deux barres l'un a coté de l'autre pour chaque année.
J'affiche la capacity en fonction de l'année avec un renderer "LineAndShapeRenderer" au dessus du graphique ( ce graphique là marche )

Le souci étant qu'à l'heure actuelle, je peux afficher sans soucis mon "LineAndShapeRenderer" ainsi que le Load mais le Sum s'affiche pas ou se superpose derriere.

Pour accompagner mon problème, les qq lignes de code qui me posent soucis :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
//CAPA : construction de la coubre CAPACITE    		
            final LineAndShapeRenderer rendererCapa = new LineAndShapeRenderer();
            rendererCapa.setStroke(new BasicStroke(1.5f));  
            rendererCapa.setPaint(new Color(0x226644));
            rendererCapa.setShape(ShapeUtilities.createDiamond(4f));
 
            final StackedBarRenderer labelrendererCapa = new StackedBarRenderer();      
            labelrendererCapa.setItemLabelPaint(new Color(0x226644));
            labelrendererCapa.setItemLabelGenerator(new CapacityItemLabelGenerator());
            labelrendererCapa.setPositiveItemLabelPosition(new ItemLabelPosition(ItemLabelAnchor.OUTSIDE12, TextAnchor.TOP_CENTER));
            labelrendererCapa.setBaseItemLabelsVisible(true);
            labelrendererCapa.setOutlinePaint(Color.WHITE);
            labelrendererCapa.setPaint(Color.WHITE);
            labelrendererCapa.setItemLabelFont(new Font("Arial", Font.PLAIN, 10));
 
            vPlot.setDataset(0, lCapaData); // lCapaData est le dataset de CAPA
            vPlot.setRenderer(0, rendererCapa);
            vPlot.setDataset(2, lCapaData); // lCapaData est le dataset de CAPA
            vPlot.setRenderer(2, labelrendererCapa);
 
            ValueAxis lAxis = new NumberAxis();
            lAxis.setInverted(true);
            lAxis.setVisible(false);
            lAxis.setRange(0, 10000);
            lAxis.setAxisLineVisible(true);
 
            vPlot.setRangeAxis(1, lAxis);
            vPlot.mapDatasetToRangeAxis(2, 1);
 
//CONTRUSCTION DE LA BARRE LOAD
            LayeredBarRenderer rendererLoad = new LayeredBarRenderer();
            rendererLoad.setBaseItemLabelFont(new Font("Arial", Font.PLAIN, 10));
            rendererLoad.setPaint(Color.YELLOW);
            rendererLoad.setSeriesBarWidth(1, 1.0);
            rendererLoad.setItemMargin(0.01);
 
//CONSTRUCTION DE LA BARRE SUM 
            LayeredBarRenderer rendererSum = new LayeredBarRenderer();
            rendererSum.setSeriesBarWidth(3, 0.5);
            rendererSum.setPaint(Color.BLUE);
            rendererSum.setItemMargin(0.01);
 
// Affichage dans le graphique        
            vPlot.setDataset(1, lLoadData); //lLoadData est le dataset du load
            vPlot.setRenderer(1, rendererLoad);
 
            vPlot.setDataset(1, lSumData); //lSumData est le dataset du sum
            vPlot.setRenderer(1, rendererSum);
 
 // Construction axis.
            CategoryAxis vAxis = new CategoryAxis();
            Color AXIS_COLOR = new Color(0x00080);
            vAxis.setCategoryMargin(0.25);
            vAxis.setLowerMargin(0.05);
            vAxis.setUpperMargin(0.05);
            vAxis.setMaximumCategoryLabelLines(10);
            vAxis.setTickMarkPaint(AXIS_COLOR);
            vAxis.setAxisLinePaint(AXIS_COLOR);
            vAxis.setAxisLineVisible(true);
            vAxis.setLabelPaint(AXIS_COLOR);
            vAxis.setTickLabelPaint(AXIS_COLOR);
            vPlot.setDomainAxis(vAxis);
 
// Construction upper axis.
            NumberAxis vAxisNumber = new NumberAxis();
            vAxisNumber.setUpperMargin(0.15);
            vAxisNumber.setAxisLinePaint(AXIS_COLOR);
            vAxisNumber.setAxisLineVisible(true);
            vAxisNumber.setTickLabelPaint(AXIS_COLOR);
            vPlot.setRangeAxis(vAxisNumber);
 
// Writing Graph : Une fonction à part qui permet d'afficher le graphe sous forme d'image png à uen dimension donnée.
writeChartResponse(vChart, pResponse);
Ceci me donne un graphique de ce genre :

Donc comme on peut le constater ici :
Seul la capacité et le load sont présent. Le Sum n'apparait pas.

En vous remerciant par avance pour toute aide et disponible pour les interrogations à ce sujet.

Cordialement,
Croumir