Histogramme en temps réel

Rimy2 Messages postés 3 Date d'inscription mardi 10 juillet 2012 Statut Membre Dernière intervention 27 juillet 2012 - 23 juil. 2012 à 17:59
Rimy2 Messages postés 3 Date d'inscription mardi 10 juillet 2012 Statut Membre Dernière intervention 27 juillet 2012 - 27 juil. 2012 à 00:14
Bonjour tout le monde ,
comment je pourrais afficher un histogramme dynamique qui évolue en temps réel ?? bon au début j'ai utilisé JFreechart framework mais ça m'a servi à rien et puis après de longues recherches j'ai trouvé que le fait d'utiliser LiveGraph peut être une solution ?? mais comment??
merci d'avance.

5 réponses

cs_jojolemariole Messages postés 519 Date d'inscription mercredi 21 mars 2007 Statut Membre Dernière intervention 19 décembre 2016 25
23 juil. 2012 à 18:46
Pourquoi JFreeChart n'a pas fait l'affaire ?
Ça me surprend un peu parce que j'ai déjà travaillé sur des applications avec des graphiques JFreeChart mis à jour plusieurs fois par seconde.
0
Rimy2 Messages postés 3 Date d'inscription mardi 10 juillet 2012 Statut Membre Dernière intervention 27 juillet 2012
23 juil. 2012 à 19:05
Bon c'est la première fois que je travaille avec des graphiques JFreeChart ,j'ai peut être pas su les utiliser , j'ai besoin d'avoir un histogramme qui évolue en fonction du temps et j'ai pas su le faire si vous pouvez m'aider je vous serai reconnaissante . Merci
0
cs_jojolemariole Messages postés 519 Date d'inscription mercredi 21 mars 2007 Statut Membre Dernière intervention 19 décembre 2016 25
23 juil. 2012 à 19:11
De mémoire il ne s'agit pas d'une fonctionnalité de l'application, c'est plutôt un usage détourné.
J'essaierai de voir demain pour faire un exemple simple si personne ne répond avant.
0
Utilisateur anonyme
23 juil. 2012 à 21:26
Erf, je ne l'ai pas encore utilisé mais ça va venir ^^'

Au fait, y'a doublon avec CECI, faudrait supprimer le vieux sans réponse ;)


--
Pylouq
Heureux sont ceux qui lisent le Réglement, ils ne finiront peut-être pas au bûcher.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Rimy2 Messages postés 3 Date d'inscription mardi 10 juillet 2012 Statut Membre Dernière intervention 27 juillet 2012
27 juil. 2012 à 00:14
Bonjour tout le monde , j'ai ce code comment mettre à jour cette histogramme plusieurs fois par minute c'est à dire qu'il évolue en temps réel.Aidez moi s'il vous plait .merci.
package projet10;
import java.awt.*;
import java.sql.Date;
import javax.swing.*;
import javax.swing.border.Border;
import javax.swing.event.ChangeEvent;
import javax.swing.event.ChangeListener;
import org.jfree.chart.ChartPanel;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.axis.DateAxis;
import org.jfree.chart.axis.NumberAxis;
import org.jfree.chart.plot.XYPlot;
import org.jfree.chart.renderer.xy.XYBarRenderer;
import org.jfree.data.time.DateRange;
import org.jfree.data.time.Day;
import org.jfree.data.time.Hour;
import org.jfree.data.time.RegularTimePeriod;
import org.jfree.data.time.TimeSeries;
import org.jfree.data.time.TimeSeriesCollection;
import org.jfree.ui.ApplicationFrame;
import org.jfree.ui.RefineryUtilities;

public class DomainTranslateDemo extends ApplicationFrame {
private static class DemoPanel extends JPanel implements ChangeListener {

        private static int SLIDER_INITIAL_VALUE = 50;
        private JSlider slider;
        private DateAxis domainAxis;
        private int lastValue = SLIDER_INITIAL_VALUE;

        // one month (milliseconds, seconds, minutes, hours, days)
        private int delta = 1000 * 60 * 60 * 24 * 30;

        public DemoPanel() {
            super(new BorderLayout());
            JFreeChart chart = createChart();
            ChartPanel chartPanel = new ChartPanel(chart);
            chartPanel.setPreferredSize(new java.awt.Dimension(600, 270));
            chartPanel.setDomainZoomable(true);
            chartPanel.setRangeZoomable(true);
            Border border = BorderFactory.createCompoundBorder(
                BorderFactory.createEmptyBorder(4, 4, 4, 4),
                BorderFactory.createEtchedBorder()
            );
            chartPanel.setBorder(border);
            add(chartPanel);

            JPanel dashboard = new JPanel(new BorderLayout());
            dashboard.setBorder(BorderFactory.createEmptyBorder(0, 4, 4, 4));   

            this.slider = new JSlider(0, 100, SLIDER_INITIAL_VALUE);
            this.slider.addChangeListener(this);
            dashboard.add(this.slider);
            add(dashboard, BorderLayout.SOUTH);
        }

        private JFreeChart createChart() {

            TimeSeriesCollection timeSeriesCollection = new TimeSeriesCollection();
            TimeSeries series = createSerie(20,40);
            timeSeriesCollection.addSeries(series );
             
            this.domainAxis = new DateAxis("Time");
            NumberAxis rangeAxis = new NumberAxis("CurrentNumber");
            XYBarRenderer renderer = new XYBarRenderer();
            renderer.setShadowVisible(false);
            XYPlot plot = new XYPlot(timeSeriesCollection, domainAxis, rangeAxis, renderer);

            JFreeChart chart = new JFreeChart(
                    "Statistics", 
                    JFreeChart.DEFAULT_TITLE_FONT,
                    plot, 
                    true);
            // performance
            chart.setAntiAlias(false);
            return chart;
        }

        private TimeSeries createSerie(int domainCount,int rangeCount) {
            TimeSeries timeSeries =  new TimeSeries("timeSeries1");
            long flags = 0;
            Hour h= new Hour();
//Day d = new Day(new Date(flags));
            RegularTimePeriod regularTimePeriod = h.next();
            for (int index = 0; index < domainCount; index++) {
                if (index % 2 == 0) {
                    double value = (Math.random() * rangeCount);
                    timeSeries.add(regularTimePeriod,value);
                }
                regularTimePeriod = regularTimePeriod.next();
            }
            return timeSeries;
        }

        @Override
        public void stateChanged(ChangeEvent event) {
            int value = this.slider.getValue();
            long minimum = domainAxis.getMinimumDate().getTime();
            long maximum = domainAxis.getMaximumDate().getTime();
            if (value<lastValue) { // left
                minimum = minimum - delta;
                maximum = maximum - delta;
            } else { // right
                minimum = minimum + delta;
                maximum = maximum + delta;
            }
            DateRange range = new DateRange(minimum,maximum);
            domainAxis.setRange(range);
            lastValue = value;
        }


/*public void stateChanged(ChangeEvent arg0) {
// TODO Auto-generated method stub*/



  }

    public DomainTranslateDemo(String title) {
        super("Statistics");
        setContentPane(new DemoPanel());
    }

    public static JPanel createDemoPanel() {
        return new DemoPanel();
    }

    public static void main(String[] args) {
        DomainTranslateDemo demo = new DomainTranslateDemo("statistics");
        demo.pack();
        RefineryUtilities.centerFrameOnScreen(demo);
        demo.setVisible(true);
    }

} 
0
Rejoignez-nous