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] Graphe qui avance dans le temps


Sujet :

2D Java

  1. #1
    Membre habitué
    Inscrit en
    Septembre 2005
    Messages
    747
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 747
    Points : 174
    Points
    174
    Par défaut [JFreeChart] Graphe qui avance dans le temps
    Bonjour,

    sur le net, j'ai trouvé le code suivant qui permet de faire avancer dans le temps le graphe chaque fois que l'on clique sur Add New Data Item.
    Voici le 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
     
    import java.awt.BorderLayout;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
     
    import javax.swing.JButton;
    import javax.swing.JPanel;
     
    import org.jfree.chart.ChartFactory;
    import org.jfree.chart.ChartPanel;
    import org.jfree.chart.JFreeChart;
    import org.jfree.chart.axis.ValueAxis;
    import org.jfree.chart.plot.XYPlot;
    import org.jfree.data.xy.XYDataset;
    import org.jfree.data.time.Millisecond;
    import org.jfree.data.time.TimeSeries;
    import org.jfree.data.time.TimeSeriesCollection;
    import org.jfree.ui.ApplicationFrame;
    import org.jfree.ui.RefineryUtilities;
     
    /**
     * A demonstration application showing a time series chart where you can dynamically add
     * (random) data by clicking on a button.
     */
    public class DynamicDataDemo extends ApplicationFrame implements ActionListener {
     
        /** The time series data. */
        private TimeSeries series;
     
        /** The most recent value added. */
        private double lastValue = 100.0;
     
        /**
         * Constructs a new demonstration application.
         *
         * @param title  the frame title.
         */
        public DynamicDataDemo(String title) {
     
            super(title);
            this.series = new TimeSeries("Random Data", Millisecond.class);
            TimeSeriesCollection dataset = new TimeSeriesCollection(this.series);
            JFreeChart chart = createChart(dataset);
     
            ChartPanel chartPanel = new ChartPanel(chart);
            JButton button = new JButton("Add New Data Item");
            button.setActionCommand("ADD_DATA");
            button.addActionListener(this);
     
            JPanel content = new JPanel(new BorderLayout());
            content.add(chartPanel);
            content.add(button, BorderLayout.SOUTH);
            chartPanel.setPreferredSize(new java.awt.Dimension(500, 270));
            setContentPane(content);
     
        }
     
        private JFreeChart createChart(XYDataset dataset) {
            JFreeChart result = ChartFactory.createTimeSeriesChart(
                "Dynamic Data Demo", 
                "Time", 
                "Value",
                dataset, 
                true, 
                true, 
                false
            );
            XYPlot plot = result.getXYPlot();
            ValueAxis axis = plot.getDomainAxis();
            axis.setAutoRange(true);
            axis.setFixedAutoRange(60000.0);  // 60 seconds
            axis = plot.getRangeAxis();
            axis.setRange(0.0, 200.0); 
            return result;
        }
     
        /**
         * Handles a click on the button by adding new (random) data.
         *
         * @param e  the action event.
         */
        public void actionPerformed(ActionEvent e) {
            if (e.getActionCommand().equals("ADD_DATA")) {
                double factor = 0.90 + 0.2 * Math.random();
                this.lastValue = this.lastValue * factor;
                Millisecond now = new Millisecond();
                System.out.println("Now = " + now.toString());
                this.series.add(new Millisecond(), this.lastValue);
            }
        }
     
        /**
         * Starting point for the demonstration application.
         *
         * @param args  ignored.
         */
        public static void main(String[] args) {
     
            DynamicDataDemo demo = new DynamicDataDemo("Dynamic Data Demo");
            demo.pack();
            RefineryUtilities.centerFrameOnScreen(demo);
            demo.setVisible(true);
     
        }
     
    }
    J'aimerai obtenir la même chose sans avoir à cliquer sur le bouton.
    J'ai modifié le code comme ceci mais ça ne fonctionne pas :
    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
    import java.awt.BorderLayout;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
     
    import javax.swing.JButton;
    import javax.swing.JPanel;
     
    import org.jfree.chart.ChartFactory;
    import org.jfree.chart.ChartPanel;
    import org.jfree.chart.JFreeChart;
    import org.jfree.chart.axis.ValueAxis;
    import org.jfree.chart.plot.XYPlot;
    import org.jfree.data.xy.XYDataset;
    import org.jfree.data.time.Millisecond;
    import org.jfree.data.time.TimeSeries;
    import org.jfree.data.time.TimeSeriesCollection;
    import org.jfree.ui.ApplicationFrame;
    import org.jfree.ui.RefineryUtilities;
     
    /**
     * A demonstration application showing a time series chart where you can dynamically add
     * (random) data by clicking on a button.
     */
    public class DynamicDataDemo extends ApplicationFrame implements ActionListener {
     
        /** The time series data. */
        private TimeSeries series;
     
        /** The most recent value added. */
        private double lastValue = 100.0;
     
        /**
         * Constructs a new demonstration application.
         *
         * @param title  the frame title.
         */
        public DynamicDataDemo(String title) {
     
            super(title);
            this.series = new TimeSeries("Random Data", Millisecond.class);
            TimeSeriesCollection dataset = new TimeSeriesCollection(this.series);
            JFreeChart chart = createChart(dataset);
     
            ChartPanel chartPanel = new ChartPanel(chart);
            JButton button = new JButton("Add New Data Item");
            button.setActionCommand("ADD_DATA");
            button.addActionListener(this);
     
            JPanel content = new JPanel(new BorderLayout());
            content.add(chartPanel);
            content.add(button, BorderLayout.SOUTH);
            chartPanel.setPreferredSize(new java.awt.Dimension(500, 270));
            setContentPane(content);
     
        }
     
        private JFreeChart createChart(XYDataset dataset) {
            JFreeChart result = ChartFactory.createTimeSeriesChart(
                "Dynamic Data Demo", 
                "Time", 
                "Value",
                dataset, 
                true, 
                true, 
                false
            );
            XYPlot plot = result.getXYPlot();
            ValueAxis axis = plot.getDomainAxis();
            axis.setAutoRange(true);
            axis.setFixedAutoRange(60000.0);  // 60 seconds
            axis = plot.getRangeAxis();
            axis.setRange(0.0, 200.0); 
            return result;
        }
     
     
        /**
         * Handles a click on the button by adding new (random) data.
         *
         * @param e  the action event.
         */
        public void actionPerformed(ActionEvent e) {
            if (e.getActionCommand().equals("ADD_DATA")) {
                double factor = 0.90 + 0.2 * Math.random();
                this.lastValue = this.lastValue * factor;
                Millisecond now = new Millisecond();
                System.out.println("Now = " + now.toString());
                this.series.add(new Millisecond(), this.lastValue);
            }
        }
     
        /**
         * Starting point for the demonstration application.
         *
         * @param args  ignored.
         */
        public static void main(String[] args) {
     
            DynamicDataDemo demo = new DynamicDataDemo("Dynamic Data Demo");
            demo.pack();
            RefineryUtilities.centerFrameOnScreen(demo);
            demo.setVisible(true);
     
        }
     
    }
    Est-ce que vous pourriez m'indiquer ce que je dois faire pour que cela fonctionne.

    Merci

  2. #2
    Membre éclairé Avatar de remika
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    806
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 806
    Points : 861
    Points
    861
    Par défaut
    Dans la démo, le graphe "JVM Memory usage" avance dans le temps tout seul, tu peux t'en inspirer

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 3
    Dernier message: 01/04/2015, 12h52
  2. [PHP 5.4] HTTP_USER_AGENT qui évolue dans le temps ?
    Par Fab le Fou dans le forum Langage
    Réponses: 0
    Dernier message: 15/10/2014, 16h14
  3. [JFreeChart] graphe en temps réel
    Par lasvegas_parano dans le forum 2D
    Réponses: 2
    Dernier message: 08/06/2011, 18h00
  4. [JFreeChart] graphe dans jsp
    Par fangriz dans le forum 2D
    Réponses: 0
    Dernier message: 07/08/2009, 17h04
  5. Réponses: 7
    Dernier message: 10/03/2009, 20h02

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