001package bradleyross.opensource.jfreechart;
002import org.jfree.data.time.TimeSeries;
003import org.jfree.data.time.Minute;
004import org.jfree.chart.ChartFactory;
005import org.jfree.chart.ChartUtilities;
006import org.jfree.chart.JFreeChart;
007import org.jfree.chart.ChartFrame;
008import java.util.Date;
009import java.io.File;
010import org.jfree.data.time.TimeSeriesCollection;
011import bradleyross.opensource.jfreechart.helpers.DataGenerator;
012import bradleyross.opensource.jfreechart.helpers.TickUnitCollection;
013import bradleyross.library.helpers.DateHelpers;
014/**
015 * Shows a parameter varying over time.
016 * <p>This plot shows a sine wave over a period of
017 *    a few days.</p>
018 * @author Bradley Ross
019 * @see org.jfree.data.time.TimeSeries
020 * @see org.jfree.data.time.Minute
021 * @see org.jfree.chart.ChartFactory
022 * @see org.jfree.chart.ChartUtilities
023 * @see org.jfree.chart.JFreeChart
024 * @see org.jfree.chart.ChartFrame
025 * @see org.jfree.data.time.TimeSeriesCollection
026 *
027 */
028public class TimeSeriesExample2 {
029
030        /**
031         * @param args
032         */
033        public static void main(String[] args) 
034        {
035                TimeSeries heat = new TimeSeries("Track 1", Minute.class);
036                TimeSeries heat2 = new TimeSeries("Track 2", Minute.class);
037                long now = new java.util.Date().getTime();
038                for (long i = 0; i < 960; i++)
039                { 
040                        heat.add(new Minute(new Date(now + i * 6l * 60000l)), 
041                                10.0d + 2.0d*Math.sin(0.1d*i*Math.PI)); 
042                        heat2.add(new Minute(new Date(now + 30000l + i * 6l * 60000l)), 
043                                        14.0d + 3.0d*Math.sin(0.1d*i*Math.PI));                         
044                }
045                TimeSeriesCollection dataset = new TimeSeriesCollection();
046                dataset.addSeries(heat);
047                dataset.addSeries(heat2);
048                dataset.addSeries(DataGenerator.generateSine
049                                ("Test", 3600l*4000l, 3600l*24000l*4l, 60000l, 2.0d, 3.0d,
050                                                DateHelpers.startOfHour(new Date())));
051                
052                JFreeChart chart = ChartFactory.createTimeSeriesChart
053                        ("Temperature trend", null, "Temperature (degrees F)",
054                                        dataset, true, true, false);
055                TickUnitCollection ticks = new TickUnitCollection();
056                ticks.setMNTickMarks(chart, DateHelpers.startOfHour(new Date()),
057                                new Date(DateHelpers.startOfHour(new Date()).getTime() + 3600l*24000l*4l));
058                try
059                {
060                        if (args.length > 0)
061                        { ChartUtilities.saveChartAsJPEG(new File(args[0]), chart, 500, 300); }
062                        else
063                        {
064                                javax.swing.JMenuBar menuBar = new javax.swing.JMenuBar();
065                                ChartFrame frame = new ChartFrame("sample", chart);
066                                frame.setJMenuBar(menuBar);
067                                frame.pack();
068                                frame.setVisible(true);
069                        }
070                }
071                catch (Exception e)
072                {
073                        System.out.println("Problem occurred creating chart");
074                        System.out.println(e.getClass().getName());
075                        System.out.println(e.getMessage());
076                }
077        }
078}