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}