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] Item dans legend


Sujet :

2D Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Juin 2003
    Messages
    50
    Détails du profil
    Informations forums :
    Inscription : Juin 2003
    Messages : 50
    Par défaut [JFreeChart] Item dans legend
    Bonjour,
    Connaissez-vous un moyen pour n'afficher que certains items dans la légende d'un graphe?
    Par exemple j'ai sur un même graphe 2 courbes et 2 "droite" horizontales qui sont des seuils.
    Je voudrais que la légende explique mes courbes mais pas les seuils.
    Suis-je assez claire?
    Merci par avance pour votre aide.

  2. #2
    Membre habitué
    Inscrit en
    Avril 2006
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 10
    Par défaut
    Bonjour,

    j'ai une petite solution qui n'est pas tras pratique mais bon..

    Si chaque courbe est associée à son propre dataSet on peut resoudre le probleme de cette façon :
    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
     
     DefaultCategoryDataset data1 = new DefaultCategoryDataset();
     
             data1.addValue(1,"Importation","Zn");
             data1.addValue(10,"Importation","Al");
             data1.addValue(5,"Importation","CU");
             data1.addValue(40,"Importation","Fe");
     
              DefaultCategoryDataset data2 = new DefaultCategoryDataset();
     
              data2.addValue(6,"Exportation","Zn");
              data2.addValue(3,"Exportation","Al");
              data2.addValue(8,"Exportation","CU");
              data2.addValue(19,"Exportation","Fe");
     
        JFreeChart jfreechart = ChartFactory.createLineChart("Test", "Category", "En £", 
                data1, PlotOrientation.VERTICAL, false, true, false);
     
         jfreechart.setBackgroundPaint(Color.white);
        CategoryPlot categoryplot = (CategoryPlot)jfreechart.getPlot();
     
        CategoryItemRenderer renderer2 = new LineAndShapeRenderer();
        categoryplot.setDataset(1, data2);
        categoryplot.mapDatasetToRangeAxis(1, 0);
        categoryplot.setRenderer(1, renderer2);
     
        LegendTitle legendtitle1 = new LegendTitle(categoryplot.getRenderer(0));
        legendtitle1.setItemPaint(Color.RED);
     
    //    LegendTitle legendtitle2 = new LegendTitle(categoryplot.getRenderer(1));
    //    legendtitle2.setItemPaint(Color.BLUE);
     
        BlockContainer blockcontainer = new BlockContainer(new BorderArrangement());
        blockcontainer.add(legendtitle1, RectangleEdge.BOTTOM);
    //    blockcontainer.add(legendtitle2, RectangleEdge.RIGHT);
     
        CompositeTitle compositetitle = new CompositeTitle(blockcontainer);
        compositetitle.setPosition(RectangleEdge.LEFT);
     
        jfreechart.addSubtitle(compositetitle);
     
         File fichier = new File("C:\\Test.png");
         try {
             ChartUtilities.saveChartAsPNG(fichier, jfreechart,500,270);
         } catch (IOException e) {
             e.printStackTrace();
         }
     
        }
    si je ne souhaite pas afficher la legende de data2 je commente la ligne suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    blockcontainer.add(legendtitle2, RectangleEdge.RIGHT);

  3. #3
    Membre averti
    Inscrit en
    Juin 2003
    Messages
    50
    Détails du profil
    Informations forums :
    Inscription : Juin 2003
    Messages : 50
    Par défaut
    Merci pour ta réponse.
    Les specs ont changé, je ne dois plus faire ça pour le moment
    J'y reviendrai si nécessaire..
    Mais je ne crois pas que cela fonctionne car j'ai un seul dataset pour toutes les courbes...

  4. #4
    Membre averti
    Inscrit en
    Juin 2003
    Messages
    50
    Détails du profil
    Informations forums :
    Inscription : Juin 2003
    Messages : 50
    Par défaut
    Bon, ça revient dans l'actualité du moment.

    En plus de ça, je voudrais savoir si c'est possible d'ajouter des éléments dans la légende.
    Par exemple : Ajouter "seuils" devant les trois premiers élément de ma légende :
    Seuils : bas : ° moyen : ° haut : ° Note 1 : ° Note 2 : °
    Pour prendre moins de place que :
    Seuil bas : ° seuil moyen : ° seuil haut : ° Note 1 : ° Note 2 : °
    (Mes '°' sont mes éléments de courbes qui apparaissent dans les légendes)

    Vous voyez la problématique?

  5. #5
    Membre averti
    Inscrit en
    Décembre 2007
    Messages
    64
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 64
    Par défaut
    J'ai plus ou moins le même problème que toi, as-tu trouvé un moyen de le résoudre ?

  6. #6
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 8
    Par défaut
    Bonjour,

    C'est possible d'ajouter des éléments dans la légende. Vous rédefinissez la methode getLegendItems() dans la classe CategoryPlot ou XYPlot.

    Ou bien, vous pouvez utiliser la methode setLegendItemLabelGenerator() dans AbstractCategoryItemRenderer ou AbstractXYItemRenderer. Par exemple:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    CategoryPlot plot = (CategoryPlot) chart.getPlot();
    BarRenderer renderer = (BarRenderer) plot.getRenderer();
    renderer.setLegendItemLabelGenerator(...);
    S’il vous plaît excuser mon français, je suis un Néo-Zélandais.

Discussions similaires

  1. [système] Comment ajouter un item dans le context menu de Windows ?
    Par ddmicrolog dans le forum API, COM et SDKs
    Réponses: 8
    Dernier message: 29/06/2005, 17h03
  2. [Portal 9iAS] : ordre des items dans une région
    Par melitta dans le forum Oracle
    Réponses: 8
    Dernier message: 21/10/2004, 14h01
  3. changer le texte de tous les Items dans un mainmenu
    Par C.M dans le forum Composants VCL
    Réponses: 7
    Dernier message: 25/07/2004, 13h19
  4. Suppression d'item dans une arborescence
    Par jonzuzu dans le forum MFC
    Réponses: 2
    Dernier message: 24/02/2004, 17h45
  5. Réponses: 2
    Dernier message: 17/08/2003, 20h07

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