IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

2D Java Discussion :

[Jfreechart] Superposition ou décalage de colonne.


Sujet :

2D Java

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 6
    Points : 5
    Points
    5
    Par défaut [Jfreechart] Superposition ou décalage de colonne.
    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

  2. #2
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 6
    Points : 5
    Points
    5
    Par défaut
    Comme on le dit, la nuit porte conseil.
    Le problème venait tout simplement du fait que je n'avais pas saisi la notion de Dataset. Il me fallait ajouter mes valeurs de Sum dans le meme dataset que celui du Load de la manière suivant ( oui car j'itère une liste de valeurs sur un nombre d'année pour remplir mes datasets ) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    DefaultCategoryDataset lLoadOnlyData = new DefaultCategoryDataset();
     
    // itération de la liste sur les années 
    while(iterYear.hasNext()) {
    Double lValueLoad = (Double)lLoadMap.get(lItemYear)
    Double lValueSum = (Double)lSumMap.get(lItemYear);
     
    //Set load
         lLoadData.setValue(lValueLoad , "load", lItemYear.substring(2));
     
    //Set Sum
        lLoadData.setValue(lValueSum , "sum", lItemYear.substring(2));
    }
    //
    ( simplifié le code si jamais une personne un jour une personne comme moi ne saisie pas de suite la logique ^^ ).

    Problème résolu, bonne soirée.

Discussions similaires

  1. Décalage de colonnes
    Par titou31000 dans le forum VB.NET
    Réponses: 1
    Dernier message: 14/04/2010, 21h08
  2. Réponses: 6
    Dernier message: 25/01/2010, 10h31
  3. [XL-2003] Problème de décalage des colonnes dans une listbox
    Par -Naek- dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 27/05/2009, 20h06
  4. Décalage de colonne avec un CopyFromRecordset
    Par Hamdi dans le forum VBA Access
    Réponses: 3
    Dernier message: 12/12/2008, 21h41
  5. Décalage de colonnes dans une vue
    Par vincepoencet dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 12/06/2008, 09h14

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo