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}