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 */
028@SuppressWarnings("deprecation")
029public class TimeSeriesExample2 {
030
031        /**
032         * @param args not used for this class
033         */
034        public static void main(String[] args) 
035        {
036                TimeSeries heat = new TimeSeries("Track 1", Minute.class);
037                TimeSeries heat2 = new TimeSeries("Track 2", Minute.class);
038                long now = new java.util.Date().getTime();
039                for (long i = 0; i < 960; i++)
040                { 
041                        heat.add(new Minute(new Date(now + i * 6l * 60000l)), 
042                                10.0d + 2.0d*Math.sin(0.1d*i*Math.PI)); 
043                        heat2.add(new Minute(new Date(now + 30000l + i * 6l * 60000l)), 
044                                        14.0d + 3.0d*Math.sin(0.1d*i*Math.PI));                         
045                }
046                TimeSeriesCollection dataset = new TimeSeriesCollection();
047                dataset.addSeries(heat);
048                dataset.addSeries(heat2);
049                dataset.addSeries(DataGenerator.generateSine
050                                ("Test", 3600l*4000l, 3600l*24000l*4l, 60000l, 2.0d, 3.0d,
051                                                DateHelpers.startOfHour(new Date())));
052                
053                JFreeChart chart = ChartFactory.createTimeSeriesChart
054                        ("Temperature trend", null, "Temperature (degrees F)",
055                                        dataset, true, true, false);
056                TickUnitCollection ticks = new TickUnitCollection();
057                ticks.setMNTickMarks(chart, DateHelpers.startOfHour(new Date()),
058                                new Date(DateHelpers.startOfHour(new Date()).getTime() + 3600l*24000l*4l));
059                try
060                {
061                        if (args.length > 0)
062                        { ChartUtilities.saveChartAsJPEG(new File(args[0]), chart, 500, 300); }
063                        else
064                        {
065                                javax.swing.JMenuBar menuBar = new javax.swing.JMenuBar();
066                                ChartFrame frame = new ChartFrame("sample", chart);
067                                frame.setJMenuBar(menuBar);
068                                frame.pack();
069                                frame.setVisible(true);
070                        }
071                }
072                catch (Exception e)
073                {
074                        System.out.println("Problem occurred creating chart");
075                        System.out.println(e.getClass().getName());
076                        System.out.println(e.getMessage());
077                }
078        }
079}