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] Affichage plusieurs charts


Sujet :

2D Java

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2015
    Messages
    45
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2015
    Messages : 45
    Points : 37
    Points
    37
    Par défaut [JFreeChart] Affichage plusieurs charts
    Bonjour,

    J'ai réussi à afficher un graphe avec ce code :

    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
    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
     
    import java.awt.BasicStroke;
    import java.awt.Color;
    import java.awt.Dimension;
     
    import javax.swing.JFrame;
     
    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.LineAndShapeRenderer;
    import org.jfree.data.category.CategoryDataset;
    import org.jfree.data.category.DefaultCategoryDataset;
    import org.jfree.ui.ApplicationFrame;
    import org.jfree.ui.RefineryUtilities;
     
    /**
     * 
     * 
     */
    public class Graph extends ApplicationFrameBis {
     
        /**
         *
         *
         * @param title  the frame title.
         */
        public Graph(final String title, String chart_title, String[] strColValues, String unit ) {
            super(title);
            final CategoryDataset dataset = createDataset(chart_title,strColValues);
            final JFreeChart chart = createChart(dataset, chart_title, unit);
     
            final ChartPanel chartPanel = new ChartPanel(chart);
            chartPanel.setPreferredSize(new Dimension(1000, 270));
            setContentPane(chartPanel);
     
        }
     
        /**
         * Creates a sample dataset.
         * 
         * @return The dataset.
         */
        private CategoryDataset createDataset(String chart_title, String[] strColValues ) {
     
            // row keys...
            final String series1 = chart_title;
            //final String series2 = "Second";
            //final String series3 = "Third";
     
            final String type[] = new String[100];
            for(int j=0; j<strColValues.length;j++){
            	type[j] = Integer.toString(j+1);
            }
     
            // create the dataset...
            final DefaultCategoryDataset dataset = new DefaultCategoryDataset();
     
            for(int i=0; i<strColValues.length;i++){
            	dataset.addValue(Double.parseDouble(strColValues[i]), series1, type[i]);
            }
                   return dataset;   
        }
     
        /**
         * Creates a sample chart.
         * 
         * @param dataset  a dataset.
         * 
         * @return The chart.
         */
        private JFreeChart createChart(final CategoryDataset dataset, String chart_title, String unit) {
     
            //Création du tableau
            final JFreeChart chart = ChartFactory.createLineChart3D(
                chart_title,       // chart title
                "Relevés",                    // domain axis label
                unit,                   // range axis label
                dataset,                   // data
                PlotOrientation.VERTICAL,  // orientation
                true,                      // include legend
                true,                      // tooltips
                false                      // urls
            );
     
     
            // NOW DO SOME OPTIONAL CUSTOMISATION OF THE CHART...
    //        final StandardLegend legend = (StandardLegend) chart.getLegend();
      //      legend.setDisplaySeriesShapes(true);
        //    legend.setShapeScaleX(1.5);
          //  legend.setShapeScaleY(1.5);
            //legend.setDisplaySeriesLines(true);
     
            chart.setBackgroundPaint(Color.white);
     
            final CategoryPlot plot = (CategoryPlot) chart.getPlot();
            plot.setBackgroundPaint(Color.lightGray);
            plot.setRangeGridlinePaint(Color.white);
     
            // customise the range axis...
            final NumberAxis rangeAxis = (NumberAxis) plot.getRangeAxis();
            rangeAxis.setStandardTickUnits(NumberAxis.createIntegerTickUnits());
            rangeAxis.setAutoRangeIncludesZero(true);
     
            // customise the renderer...
            final LineAndShapeRenderer renderer = (LineAndShapeRenderer) plot.getRenderer();
    //        renderer.setDrawShapes(true);
     
            renderer.setSeriesStroke(
                0, new BasicStroke(
                    2.0f, BasicStroke.CAP_ROUND, BasicStroke.JOIN_ROUND,
                    1.0f, new float[] {10.0f, 6.0f}, 0.0f
                )
            );
            renderer.setSeriesStroke(
                1, new BasicStroke(
                    2.0f, BasicStroke.CAP_ROUND, BasicStroke.JOIN_ROUND,
                    1.0f, new float[] {6.0f, 6.0f}, 0.0f
                )
            );
            renderer.setSeriesStroke(
                2, new BasicStroke(
                    2.0f, BasicStroke.CAP_ROUND, BasicStroke.JOIN_ROUND,
                    1.0f, new float[] {2.0f, 6.0f}, 0.0f
                )
            );
            // OPTIONAL CUSTOMISATION COMPLETED.
     
            return chart;
        }
    }
    Est ce que je peux afficher un autre graphique sur la même page ?

    Comme d'habitude je vous remercie d'avance pour votre aide !

  2. #2
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    Salut,

    Quand tu fais setContentPane(chartPanel);, tu remplaces le panneau principal (le content pane) de la fenêtre par le graphique. Mais tu peux aussi ajouter le graphique au content pane par getContentPäne().add(chartPanel);.

    Et par ce moyen, tu peux ajouter plusieurs composants donc plusieurs graphiques dans le content pane (c'est un conteneur (Container), il peut contenir autant de composants (Component) qu'on veut). Pour la disposition (en grille, les uns en dessous des autres, etc.) des composants à l'intérieur d'un conteneur, il faut utiliser un LayoutManager. Par défaut le LayoutManager du content pane est un BorderLayout, et la méthode add(chartPanel) ajoute toujours au centre : il faut donc que tu utilises un autre LayoutManager. Le plus simple, est de faire un nouveau JPanel, avec GridLayout, et d'ajouter celui-ci au content pane.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    JPanel panel = new JPanel(new GridLayout(0,2)); // 2 colonnes
    panel.add( charPanel1 );
    panel.add( charPanel2 );
    panel.add( charPanel3 );
    panel.add( charPanel4 );
    getContentPane().add(panel);
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

Discussions similaires

  1. [JFreeChart] Affichage infobulle dans courbe.
    Par logica dans le forum 2D
    Réponses: 8
    Dernier message: 26/07/2010, 18h56
  2. Réponses: 3
    Dernier message: 04/05/2007, 15h49
  3. affichage plusieurs lignes select
    Par Greggggggg dans le forum Langage
    Réponses: 1
    Dernier message: 29/08/2006, 08h46
  4. [JFreeChart] Affichage numéro de semaine
    Par Julio_del_pueblo dans le forum 2D
    Réponses: 1
    Dernier message: 22/08/2006, 09h52
  5. affichage plusieurs images collées en CSS
    Par rudwolf dans le forum Mise en page CSS
    Réponses: 3
    Dernier message: 23/03/2006, 09h12

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