Java/Chart/Time Series Chart

Материал из Java эксперт
Перейти к: навигация, поиск

A time series chart, representing data from an XYDataset, ,the vertical axis has a logarithmic scale

A time series chart, representing data from an XYDataset, use of multiple chart titles

A time series chart with a moving average

JFreeChart: Event Frequency Demo

   <source lang="java">

/* ===========================================================

* JFreeChart : a free chart library for the Java(tm) platform
* ===========================================================
*
* (C) Copyright 2000-2004, by Object Refinery Limited and Contributors.
*
* Project Info:  http://www.jfree.org/jfreechart/index.html
*
* This library is free software; you can redistribute it and/or modify it under the terms
* of the GNU Lesser General Public License as published by the Free Software Foundation;
* either version 2.1 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
* without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
* See the GNU Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License along with this
* library; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330,
* Boston, MA 02111-1307, USA.
*
* [Java is a trademark or registered trademark of Sun Microsystems, Inc. 
* in the United States and other countries.]
*
* -----------------------
* EventFrequencyDemo.java
* -----------------------
* (C) Copyright 2002-2004, by Object Refinery Limited and Contributors.
*
* Original Author:  David Gilbert (for Object Refinery Limited);
* Contributor(s):   -;
*
* $Id: EventFrequencyDemo.java,v 1.19 2004/05/10 16:45:23 mungady Exp $
*
* Changes (from 10-Oct-2002)
* --------------------------
* 10-Oct-2002 : Added standard header and Javadocs (DG);
* 11-Feb-2003 : Fixed 0.9.5 bug (DG);
*
*/

package org.jfree.chart.demo; import java.awt.Color; import java.text.DateFormat; import org.jfree.chart.ChartFactory; import org.jfree.chart.ChartPanel; import org.jfree.chart.JFreeChart; import org.jfree.chart.axis.DateAxis; import org.jfree.chart.labels.CategoryToolTipGenerator; import org.jfree.chart.labels.StandardCategoryToolTipGenerator; import org.jfree.chart.plot.CategoryPlot; import org.jfree.chart.plot.PlotOrientation; import org.jfree.chart.renderer.category.CategoryItemRenderer; import org.jfree.chart.renderer.category.LineAndShapeRenderer; import org.jfree.data.category.DefaultCategoryDataset; import org.jfree.data.time.Day; import org.jfree.date.SerialDate; import org.jfree.ui.ApplicationFrame; import org.jfree.ui.RefineryUtilities; /**

* A demo application showing how to display category data against a date axis.
*
*/

public class EventFrequencyDemo extends ApplicationFrame {

   /**
    * Creates a new demo.
    *
    * @param title  the frame title.
    */
   public EventFrequencyDemo(final String title) {
       super(title);
       // create a dataset...
       final DefaultCategoryDataset dataset = new DefaultCategoryDataset();
       // initialise the data...
       final Day d1 = new Day(12, SerialDate.JUNE, 2002);
       final Day d2 = new Day(14, SerialDate.JUNE, 2002);
       final Day d3 = new Day(15, SerialDate.JUNE, 2002);
       final Day d4 = new Day(10, SerialDate.JULY, 2002);
       final Day d5 = new Day(20, SerialDate.JULY, 2002);
       final Day d6 = new Day(22, SerialDate.AUGUST, 2002);
       dataset.setValue(new Long(d1.getMiddleMillisecond()), "Series 1", "Requirement 1");
       dataset.setValue(new Long(d1.getMiddleMillisecond()), "Series 1", "Requirement 2");
       dataset.setValue(new Long(d2.getMiddleMillisecond()), "Series 1", "Requirement 3");
       dataset.setValue(new Long(d3.getMiddleMillisecond()), "Series 2", "Requirement 1");
       dataset.setValue(new Long(d4.getMiddleMillisecond()), "Series 2", "Requirement 3");
       dataset.setValue(new Long(d5.getMiddleMillisecond()), "Series 3", "Requirement 2");
       dataset.setValue(new Long(d6.getMiddleMillisecond()), "Series 1", "Requirement 4");
       // create the chart...
       final JFreeChart chart = ChartFactory.createBarChart(
           "Event Frequency Demo",      // title
           "Category",                  // domain axis label
           "Value",                     // range axis label
           dataset,                     // dataset
           PlotOrientation.HORIZONTAL,  // orientation
           true,                        // include legend
           true,                        // tooltips
           false                        // URLs
       );
       // NOW DO SOME OPTIONAL CUSTOMISATION OF THE CHART...
       // set the background color for the chart...
       chart.setBackgroundPaint(new Color(0xFF, 0xFF, 0xCC));

// final StandardLegend legend = (StandardLegend) chart.getLegend();

 //      legend.setDisplaySeriesShapes(true);
       // get a reference to the plot for further customisation...
       final CategoryPlot plot = chart.getCategoryPlot();
   //    plot.getDomainAxis().setMaxCategoryLabelWidthRatio(10.0f);
       plot.setRangeAxis(new DateAxis("Date"));
       final CategoryToolTipGenerator toolTipGenerator = new StandardCategoryToolTipGenerator(
           "", DateFormat.getDateInstance()
       );

// final CategoryItemRenderer renderer = new LineAndShapeRenderer(LineAndShapeRenderer.SHAPES);

 //      renderer.setToolTipGenerator(toolTipGenerator);
   //    plot.setRenderer(renderer);
                                                 
       // ****************************************************************************
       // * JFREECHART DEVELOPER GUIDE                                               *
       // * The JFreeChart Developer Guide, written by David Gilbert, is available   *
       // * to purchase from Object Refinery Limited:                                *
       // *                                                                          *
       // * http://www.object-refinery.ru/jfreechart/guide.html                     *
       // *                                                                          *
       // * Sales are used to provide funding for the JFreeChart project - please    * 
       // * support us so that we can continue developing free software.             *
       // ****************************************************************************
       
       // OPTIONAL CUSTOMISATION COMPLETED.
       // add the chart to a panel...
       final ChartPanel chartPanel = new ChartPanel(chart);
       chartPanel.setPreferredSize(new java.awt.Dimension(500, 270));
       setContentPane(chartPanel);
   }
   /**
    * Starting point for the demonstration application.
    *
    * @param args  ignored.
    */
   public static void main(final String[] args) {
       final EventFrequencyDemo demo = new EventFrequencyDemo("Event Frequency Demo");
       demo.pack();
       RefineryUtilities.centerFrameOnScreen(demo);
       demo.setVisible(true);
   }

}

      </source>
   
  
 
  



JFreeChart: Marker Demo 1

   <source lang="java">

/* ===========================================================

* JFreeChart : a free chart library for the Java(tm) platform
* ===========================================================
*
* (C) Copyright 2000-2004, by Object Refinery Limited and Contributors.
*
* Project Info:  http://www.jfree.org/jfreechart/index.html
*
* This library is free software; you can redistribute it and/or modify it under the terms
* of the GNU Lesser General Public License as published by the Free Software Foundation;
* either version 2.1 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
* without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
* See the GNU Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License along with this
* library; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330,
* Boston, MA 02111-1307, USA.
*
* [Java is a trademark or registered trademark of Sun Microsystems, Inc. 
* in the United States and other countries.]
*
* ----------------
* MarkerDemo1.java
* ----------------
* (C) Copyright 2003, 2004, by Object Refinery Limited and Contributors.
*
* Original Author:  David Gilbert (for Object Refinery Limited);
* Contributor(s):   -;
*
* $Id: MarkerDemo1.java,v 1.16 2004/05/11 14:56:17 mungady Exp $
*
* Changes
* -------
* 21-May-2003 : Version 1 (DG);
*
*/

package org.jfree.chart.demo; import java.awt.BasicStroke; import java.awt.Color; import java.awt.Font; import org.jfree.chart.ChartFactory; import org.jfree.chart.ChartPanel; import org.jfree.chart.JFreeChart; import org.jfree.chart.annotations.XYAnnotation; import org.jfree.chart.annotations.XYDrawableAnnotation; import org.jfree.chart.annotations.XYPointerAnnotation; import org.jfree.chart.axis.DateAxis; import org.jfree.chart.axis.ValueAxis; import org.jfree.chart.labels.StandardXYToolTipGenerator; import org.jfree.chart.plot.Marker; import org.jfree.chart.plot.PlotOrientation; import org.jfree.chart.plot.ValueMarker; import org.jfree.chart.plot.XYPlot; import org.jfree.data.time.Day; import org.jfree.data.time.Hour; import org.jfree.data.time.Minute; import org.jfree.data.time.TimeSeries; import org.jfree.data.time.TimeSeriesCollection; import org.jfree.data.xy.XYDataset; import org.jfree.ui.ApplicationFrame; import org.jfree.ui.RectangleAnchor; import org.jfree.ui.RefineryUtilities; import org.jfree.ui.TextAnchor; /**

* A demo application.
*
*/

public class MarkerDemo1 extends ApplicationFrame {

   /**
    * Creates a new instance.
    *
    * @param title  the frame title.
    */
   public MarkerDemo1(final String title) {
       super(title);
       final XYDataset data = createDataset();
       final JFreeChart chart = createChart(data);
       final ChartPanel chartPanel = new ChartPanel(chart);
       chartPanel.setPreferredSize(new java.awt.Dimension(500, 270));

// chartPanel.setVerticalZoom(true);

 //      chartPanel.setHorizontalZoom(true);
       setContentPane(chartPanel);
   }
   /**
    * Creates a sample chart.
    *
    * @param data  the sample data.
    *
    * @return A configured chart.
    */
   private JFreeChart createChart(final XYDataset data) {
       final JFreeChart chart = ChartFactory.createScatterPlot(
           "Marker Demo 1",
           "X",
           "Y", 
           data, 
           PlotOrientation.VERTICAL,
           true, 
           true, 
           false
       );
   //    chart.getLegend().setAnchor(Legend.EAST);
       // customise...
       final XYPlot plot = chart.getXYPlot();
       plot.getRenderer().setToolTipGenerator(StandardXYToolTipGenerator.getTimeSeriesInstance());
       // set axis margins to allow space for marker labels...
       final DateAxis domainAxis = new DateAxis("Time");
       domainAxis.setUpperMargin(0.50);
       plot.setDomainAxis(domainAxis);
       final ValueAxis rangeAxis = plot.getRangeAxis();
       rangeAxis.setUpperMargin(0.30);
       rangeAxis.setLowerMargin(0.50);
       // add a labelled marker for the bid start price...
       final Marker start = new ValueMarker(200.0);
       start.setPaint(Color.green);
       start.setLabel("Bid Start Price");
       start.setLabelAnchor(RectangleAnchor.BOTTOM_RIGHT);
       start.setLabelTextAnchor(TextAnchor.TOP_RIGHT);
       plot.addRangeMarker(start);
       // add a labelled marker for the target price...
       final Marker target = new ValueMarker(175.0);
       target.setPaint(Color.red);
       target.setLabel("Target Price");
       target.setLabelAnchor(RectangleAnchor.TOP_RIGHT);
       target.setLabelTextAnchor(TextAnchor.BOTTOM_RIGHT);
       plot.addRangeMarker(target);
       // add a labelled marker for the original closing time...
       final Hour hour = new Hour(2, new Day(22, 5, 2003));
       double millis = hour.getFirstMillisecond();
       final Marker originalEnd = new ValueMarker(millis);
       originalEnd.setPaint(Color.orange);
       originalEnd.setLabel("Original Close (02:00)");
       originalEnd.setLabelAnchor(RectangleAnchor.TOP_LEFT);
       originalEnd.setLabelTextAnchor(TextAnchor.TOP_RIGHT);
       plot.addDomainMarker(originalEnd);
       // add a labelled marker for the current closing time...
       final Minute min = new Minute(15, hour);
       millis = min.getFirstMillisecond();
       final Marker currentEnd = new ValueMarker(millis);
       currentEnd.setPaint(Color.red);
       currentEnd.setLabel("Close Date (02:15)");
       currentEnd.setLabelAnchor(RectangleAnchor.TOP_RIGHT);
       currentEnd.setLabelTextAnchor(TextAnchor.TOP_LEFT);
       plot.addDomainMarker(currentEnd);
       // ****************************************************************************
       // * JFREECHART DEVELOPER GUIDE                                               *
       // * The JFreeChart Developer Guide, written by David Gilbert, is available   *
       // * to purchase from Object Refinery Limited:                                *
       // *                                                                          *
       // * http://www.object-refinery.ru/jfreechart/guide.html                     *
       // *                                                                          *
       // * Sales are used to provide funding for the JFreeChart project - please    * 
       // * support us so that we can continue developing free software.             *
       // ****************************************************************************
       
       // label the best bid with an arrow and label...
       final Hour h = new Hour(2, new Day(22, 5, 2003));
       final Minute m = new Minute(10, h);
       millis = m.getFirstMillisecond();
       final CircleDrawer cd = new CircleDrawer(Color.red, new BasicStroke(1.0f), null);
       final XYAnnotation bestBid = new XYDrawableAnnotation(millis, 163.0, 11, 11, cd);
       plot.addAnnotation(bestBid);
       final XYPointerAnnotation pointer = new XYPointerAnnotation("Best Bid", millis, 163.0,
                                                             3.0 * Math.PI / 4.0);
       pointer.setBaseRadius(35.0);
       pointer.setTipRadius(10.0);
       pointer.setFont(new Font("SansSerif", Font.PLAIN, 9));
       pointer.setPaint(Color.blue);
       pointer.setTextAnchor(TextAnchor.HALF_ASCENT_RIGHT);
       plot.addAnnotation(pointer);
       return chart;
   }
   /**
    * Returns a sample dataset.
    *
    * @return A sample dataset.
    */
   private XYDataset createDataset() {
       final TimeSeriesCollection result = new TimeSeriesCollection();
       result.addSeries(createSupplier1Bids());
       result.addSeries(createSupplier2Bids());
       return result;
   }
   /**
    * Returns a sample data series (for supplier 1).
    *
    * @return A sample data series.
    */
   private TimeSeries createSupplier1Bids() {
       final Hour hour = new Hour(1, new Day(22, 5, 2003));
       final TimeSeries series1 = new TimeSeries("Supplier 1", Minute.class);
       series1.add(new Minute(13, hour), 200.0);
       series1.add(new Minute(14, hour), 195.0);
       series1.add(new Minute(45, hour), 190.0);
       series1.add(new Minute(46, hour), 188.0);
       series1.add(new Minute(47, hour), 185.0);
       series1.add(new Minute(52, hour), 180.0);
       return series1;
   }
   /**
    * Returns a sample data series (for supplier 2).
    *
    * @return A sample data series.
    */
   private TimeSeries createSupplier2Bids() {
       final Hour hour1 = new Hour(1, new Day(22, 5, 2003));
       final Hour hour2 = (Hour) hour1.next();
       final TimeSeries series2 = new TimeSeries("Supplier 2", Minute.class);
       series2.add(new Minute(25, hour1), 185.0);
       series2.add(new Minute(0, hour2), 175.0);
       series2.add(new Minute(5, hour2), 170.0);
       series2.add(new Minute(6, hour2), 168.0);
       series2.add(new Minute(9, hour2), 165.0);
       series2.add(new Minute(10, hour2), 163.0);
       return series2;
   }
   /**
    * Starting point for the demo application.
    *
    * @param args  ignored.
    */
   public static void main(final String[] args) {
       final MarkerDemo1 demo = new MarkerDemo1("Marker Demo 1");
       demo.pack();
       RefineryUtilities.centerFrameOnScreen(demo);
       demo.setVisible(true);
   }

}

      </source>
   
  
 
  



JFreeChart: Time Series Chart Demo 1: the renderer is modified to show filled shapes

   <source lang="java">

/* ===========================================================

* JFreeChart : a free chart library for the Java(tm) platform
* ===========================================================
*
* (C) Copyright 2000-2005, by Object Refinery Limited and Contributors.
*
* Project Info:  http://www.jfree.org/jfreechart/index.html
*
* This library is free software; you can redistribute it and/or modify it 
* under the terms of the GNU Lesser General Public License as published by 
* the Free Software Foundation; either version 2.1 of the License, or 
* (at your option) any later version.
*
* This library is distributed in the hope that it will be useful, but 
* WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY 
* or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public 
* License for more details.
*
* You should have received a copy of the GNU Lesser General Public License 
* along with this library; if not, write to the Free Software Foundation, 
* Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
*
* [Java is a trademark or registered trademark of Sun Microsystems, Inc. 
* in the United States and other countries.]
*
* -------------------------
* TimeSeriesChartDemo1.java
* -------------------------
* (C) Copyright 2003-2005, by Object Refinery Limited and Contributors.
*
* Original Author:  David Gilbert (for Object Refinery Limited);
* Contributor(s):   ;
*
* $Id: TimeSeriesChartDemo1.java,v 1.2 2005/03/28 19:38:45 mungady Exp $
*
* Changes
* -------
* 09-Mar-2005 : Version 1, copied from the demo collection that ships with
*               the JFreeChart Developer Guide (DG);
*
*/

package org.jfree.chart.demo; import java.awt.Color; import java.text.SimpleDateFormat; import javax.swing.JPanel; import org.jfree.chart.ChartFactory; import org.jfree.chart.ChartPanel; import org.jfree.chart.JFreeChart; import org.jfree.chart.axis.DateAxis; import org.jfree.chart.plot.XYPlot; import org.jfree.chart.renderer.xy.XYItemRenderer; import org.jfree.chart.renderer.xy.XYLineAndShapeRenderer; import org.jfree.data.time.Month; import org.jfree.data.time.TimeSeries; import org.jfree.data.time.TimeSeriesCollection; import org.jfree.data.xy.XYDataset; import org.jfree.ui.ApplicationFrame; import org.jfree.ui.RectangleInsets; import org.jfree.ui.RefineryUtilities; /**

* An example of a time series chart.  For the most part, default settings are 
* used, except that the renderer is modified to show filled shapes (as well as 
* lines) at each data point.
*/

public class TimeSeriesChartDemo1 extends ApplicationFrame {

   /**
    * A demonstration application showing how to create a simple time series 
    * chart.  This example uses monthly data.
    *
    * @param title  the frame title.
    */
   public TimeSeriesChartDemo1(String title) {
       super(title);
       XYDataset dataset = createDataset();
       JFreeChart chart = createChart(dataset);
       ChartPanel chartPanel = new ChartPanel(chart, false);
       chartPanel.setPreferredSize(new java.awt.Dimension(500, 270));
       chartPanel.setMouseZoomable(true, false);
       setContentPane(chartPanel);
   }
   /**
    * Creates a chart.
    * 
    * @param dataset  a dataset.
    * 
    * @return A chart.
    */
   private static JFreeChart createChart(XYDataset dataset) {
       JFreeChart chart = ChartFactory.createTimeSeriesChart(
           "Legal & General Unit Trust Prices",  // title
           "Date",             // x-axis label
           "Price Per Unit",   // y-axis label
           dataset,            // data
           true,               // create legend?
           true,               // generate tooltips?
           false               // generate URLs?
       );
       chart.setBackgroundPaint(Color.white);
       XYPlot plot = (XYPlot) chart.getPlot();
       plot.setBackgroundPaint(Color.lightGray);
       plot.setDomainGridlinePaint(Color.white);
       plot.setRangeGridlinePaint(Color.white);
       plot.setAxisOffset(new RectangleInsets(5.0, 5.0, 5.0, 5.0));
       plot.setDomainCrosshairVisible(true);
       plot.setRangeCrosshairVisible(true);
       
       XYItemRenderer r = plot.getRenderer();
       if (r instanceof XYLineAndShapeRenderer) {
           XYLineAndShapeRenderer renderer = (XYLineAndShapeRenderer) r;
           renderer.setDefaultShapesVisible(true);
           renderer.setDefaultShapesFilled(true);
       }
       
       DateAxis axis = (DateAxis) plot.getDomainAxis();
       axis.setDateFormatOverride(new SimpleDateFormat("MMM-yyyy"));
       
       return chart;
   }
   
   /**
    * Creates a dataset, consisting of two series of monthly data.
    *
    * @return The dataset.
    */
   private static XYDataset createDataset() {
       TimeSeries s1 = new TimeSeries("L&G European Index Trust", Month.class);
       s1.add(new Month(2, 2001), 181.8);
       s1.add(new Month(3, 2001), 167.3);
       s1.add(new Month(4, 2001), 153.8);
       s1.add(new Month(5, 2001), 167.6);
       s1.add(new Month(6, 2001), 158.8);
       s1.add(new Month(7, 2001), 148.3);
       s1.add(new Month(8, 2001), 153.9);
       s1.add(new Month(9, 2001), 142.7);
       s1.add(new Month(10, 2001), 123.2);
       s1.add(new Month(11, 2001), 131.8);
       s1.add(new Month(12, 2001), 139.6);
       s1.add(new Month(1, 2002), 142.9);
       s1.add(new Month(2, 2002), 138.7);
       s1.add(new Month(3, 2002), 137.3);
       s1.add(new Month(4, 2002), 143.9);
       s1.add(new Month(5, 2002), 139.8);
       s1.add(new Month(6, 2002), 137.0);
       s1.add(new Month(7, 2002), 132.8);
       TimeSeries s2 = new TimeSeries("L&G UK Index Trust", Month.class);
       s2.add(new Month(2, 2001), 129.6);
       s2.add(new Month(3, 2001), 123.2);
       s2.add(new Month(4, 2001), 117.2);
       s2.add(new Month(5, 2001), 124.1);
       s2.add(new Month(6, 2001), 122.6);
       s2.add(new Month(7, 2001), 119.2);
       s2.add(new Month(8, 2001), 116.5);
       s2.add(new Month(9, 2001), 112.7);
       s2.add(new Month(10, 2001), 101.5);
       s2.add(new Month(11, 2001), 106.1);
       s2.add(new Month(12, 2001), 110.3);
       s2.add(new Month(1, 2002), 111.7);
       s2.add(new Month(2, 2002), 111.0);
       s2.add(new Month(3, 2002), 109.6);
       s2.add(new Month(4, 2002), 113.2);
       s2.add(new Month(5, 2002), 111.6);
       s2.add(new Month(6, 2002), 108.8);
       s2.add(new Month(7, 2002), 101.6);
       TimeSeriesCollection dataset = new TimeSeriesCollection();
       dataset.addSeries(s1);
       dataset.addSeries(s2);
       dataset.setDomainIsPointsInTime(true);
       return dataset;
   }
   /**
    * Creates a panel for the demo (used by SuperDemo.java).
    * 
    * @return A panel.
    */
   public static JPanel createDemoPanel() {
       JFreeChart chart = createChart(createDataset());
       return new ChartPanel(chart);
   }
   
   /**
    * Starting point for the demonstration application.
    *
    * @param args  ignored.
    */
   public static void main(String[] args) {
       TimeSeriesChartDemo1 demo = new TimeSeriesChartDemo1(
           "Time Series Chart Demo 1"
       );
       demo.pack();
       RefineryUtilities.centerFrameOnScreen(demo);
       demo.setVisible(true);
   }

}

      </source>
   
  
 
  



JFreeChart: Time Series Demo

   <source lang="java">

/* ===========================================================

* JFreeChart : a free chart library for the Java(tm) platform
* ===========================================================
*
* (C) Copyright 2000-2004, by Object Refinery Limited and Contributors.
*
* Project Info:  http://www.jfree.org/jfreechart/index.html
*
* This library is free software; you can redistribute it and/or modify it under the terms
* of the GNU Lesser General Public License as published by the Free Software Foundation;
* either version 2.1 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
* without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
* See the GNU Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License along with this
* library; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330,
* Boston, MA 02111-1307, USA.
*
* [Java is a trademark or registered trademark of Sun Microsystems, Inc. 
* in the United States and other countries.]
*
* -------------------
* TimeSeriesDemo.java
* -------------------
* (C) Copyright 2002-2004, by Object Refinery Limited and Contributors.
*
* Original Author:  David Gilbert (for Object Refinery Limited);
* Contributor(s):   -;
*
* $Id: TimeSeriesDemo.java,v 1.19 2004/04/26 19:12:03 taqua Exp $
*
* Changes
* -------
* 08-Apr-2002 : Version 1 (DG);
* 25-Jun-2002 : Removed unnecessary import (DG);
*
*/

package org.jfree.chart.demo; import java.awt.Color; import java.text.SimpleDateFormat; import org.jfree.chart.ChartFactory; import org.jfree.chart.ChartPanel; import org.jfree.chart.JFreeChart; import org.jfree.chart.axis.DateAxis; import org.jfree.chart.plot.XYPlot; import org.jfree.chart.renderer.xy.StandardXYItemRenderer; import org.jfree.chart.renderer.xy.XYItemRenderer; import org.jfree.data.time.Month; import org.jfree.data.time.TimeSeries; import org.jfree.data.time.TimeSeriesCollection; import org.jfree.data.xy.XYDataset; import org.jfree.ui.ApplicationFrame; import org.jfree.ui.RefineryUtilities; import org.jfree.ui.Spacer; import org.jfree.util.Log; import org.jfree.util.PrintStreamLogTarget; /**

* An example of a time series chart.  For the most part, default settings are used, except that
* the renderer is modified to show filled shapes (as well as lines) at each data point.
*
*/

public class TimeSeriesDemo extends ApplicationFrame {

   /**
    * A demonstration application showing how to create a simple time series chart.  This
    * example uses monthly data.
    *
    * @param title  the frame title.
    */
   public TimeSeriesDemo(final String title) {
       
       super(title);
       final XYDataset dataset = createDataset();
       final JFreeChart chart = createChart(dataset);
       final ChartPanel chartPanel = new ChartPanel(chart);
       chartPanel.setPreferredSize(new java.awt.Dimension(500, 270));
       chartPanel.setMouseZoomable(true, false);
       setContentPane(chartPanel);
   }
   /**
    * Creates a chart.
    * 
    * @param dataset  a dataset.
    * 
    * @return A chart.
    */
   private JFreeChart createChart(final XYDataset dataset) {
       final JFreeChart chart = ChartFactory.createTimeSeriesChart(
           "Legal & General Unit Trust Prices",
           "Date", "Price Per Unit",
           dataset,
           true,
           true,
           false
       );
       chart.setBackgroundPaint(Color.white);

// final StandardLegend sl = (StandardLegend) chart.getLegend(); // sl.setDisplaySeriesShapes(true);

       final XYPlot plot = chart.getXYPlot();
       plot.setBackgroundPaint(Color.lightGray);
       plot.setDomainGridlinePaint(Color.white);
       plot.setRangeGridlinePaint(Color.white);

// plot.setAxisOffset(new Spacer(Spacer.ABSOLUTE, 5.0, 5.0, 5.0, 5.0));

       plot.setDomainCrosshairVisible(true);
       plot.setRangeCrosshairVisible(true);
       
       final XYItemRenderer renderer = plot.getRenderer();
       if (renderer instanceof StandardXYItemRenderer) {
           final StandardXYItemRenderer rr = (StandardXYItemRenderer) renderer;
           rr.setPlotShapes(true);
           rr.setShapesFilled(true);
           rr.setItemLabelsVisible(true);
       }
       
       final DateAxis axis = (DateAxis) plot.getDomainAxis();
       axis.setDateFormatOverride(new SimpleDateFormat("MMM-yyyy"));
       
       return chart;
   }
   
   // ****************************************************************************
   // * JFREECHART DEVELOPER GUIDE                                               *
   // * The JFreeChart Developer Guide, written by David Gilbert, is available   *
   // * to purchase from Object Refinery Limited:                                *
   // *                                                                          *
   // * http://www.object-refinery.ru/jfreechart/guide.html                     *
   // *                                                                          *
   // * Sales are used to provide funding for the JFreeChart project - please    * 
   // * support us so that we can continue developing free software.             *
   // ****************************************************************************
   
   /**
    * Creates a dataset, consisting of two series of monthly data.
    *
    * @return the dataset.
    */
   private XYDataset createDataset() {
       final TimeSeries s1 = new TimeSeries("L&G European Index Trust", Month.class);
       s1.add(new Month(2, 2001), 181.8);
       s1.add(new Month(3, 2001), 167.3);
       s1.add(new Month(4, 2001), 153.8);
       s1.add(new Month(5, 2001), 167.6);
       s1.add(new Month(6, 2001), 158.8);
       s1.add(new Month(7, 2001), 148.3);
       s1.add(new Month(8, 2001), 153.9);
       s1.add(new Month(9, 2001), 142.7);
       s1.add(new Month(10, 2001), 123.2);
       s1.add(new Month(11, 2001), 131.8);
       s1.add(new Month(12, 2001), 139.6);
       s1.add(new Month(1, 2002), 142.9);
       s1.add(new Month(2, 2002), 138.7);
       s1.add(new Month(3, 2002), 137.3);
       s1.add(new Month(4, 2002), 143.9);
       s1.add(new Month(5, 2002), 139.8);
       s1.add(new Month(6, 2002), 137.0);
       s1.add(new Month(7, 2002), 132.8);
       final TimeSeries s2 = new TimeSeries("L&G UK Index Trust", Month.class);
       s2.add(new Month(2, 2001), 129.6);
       s2.add(new Month(3, 2001), 123.2);
       s2.add(new Month(4, 2001), 117.2);
       s2.add(new Month(5, 2001), 124.1);
       s2.add(new Month(6, 2001), 122.6);
       s2.add(new Month(7, 2001), 119.2);
       s2.add(new Month(8, 2001), 116.5);
       s2.add(new Month(9, 2001), 112.7);
       s2.add(new Month(10, 2001), 101.5);
       s2.add(new Month(11, 2001), 106.1);
       s2.add(new Month(12, 2001), 110.3);
       s2.add(new Month(1, 2002), 111.7);
       s2.add(new Month(2, 2002), 111.0);
       s2.add(new Month(3, 2002), 109.6);
       s2.add(new Month(4, 2002), 113.2);
       s2.add(new Month(5, 2002), 111.6);
       s2.add(new Month(6, 2002), 108.8);
       s2.add(new Month(7, 2002), 101.6);
       final TimeSeriesCollection dataset = new TimeSeriesCollection();
       dataset.addSeries(s1);
       dataset.addSeries(s2);
       dataset.setDomainIsPointsInTime(true);
       return dataset;
   }
   /**
    * Starting point for the demonstration application.
    *
    * @param args  ignored.
    */
   public static void main(final String[] args) {
       Log.getInstance().addTarget(new PrintStreamLogTarget());
       final TimeSeriesDemo demo = new TimeSeriesDemo("Time Series Demo 1");
       demo.pack();
       RefineryUtilities.centerFrameOnScreen(demo);
       demo.setVisible(true);
   }

}

      </source>
   
  
 
  



JFreeChart: Time Series Demo 10 with per minute data

   <source lang="java">

/* ===========================================================

* JFreeChart : a free chart library for the Java(tm) platform
* ===========================================================
*
* (C) Copyright 2000-2004, by Object Refinery Limited and Contributors.
*
* Project Info:  http://www.jfree.org/jfreechart/index.html
*
* This library is free software; you can redistribute it and/or modify it under the terms
* of the GNU Lesser General Public License as published by the Free Software Foundation;
* either version 2.1 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
* without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
* See the GNU Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License along with this
* library; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330,
* Boston, MA 02111-1307, USA.
*
* [Java is a trademark or registered trademark of Sun Microsystems, Inc. 
* in the United States and other countries.]
*
* ---------------------
* TimeSeriesDemo10.java
* ---------------------
* (C) Copyright 2003, 2004, by Object Refinery Limited and Contributors.
*
* Original Author:  David Gilbert (for Object Refinery Limited);
* Contributor(s):   -;
*
* $Id: TimeSeriesDemo10.java,v 1.10 2004/04/26 19:12:03 taqua Exp $
*
* Changes
* -------
* 21-Feb-2003 : Version 1 (DG);
*
*/

package org.jfree.chart.demo; import org.jfree.chart.ChartFactory; import org.jfree.chart.ChartPanel; import org.jfree.chart.JFreeChart; import org.jfree.data.time.Hour; import org.jfree.data.time.Minute; import org.jfree.data.time.TimeSeries; import org.jfree.data.time.TimeSeriesCollection; import org.jfree.ui.ApplicationFrame; import org.jfree.ui.RefineryUtilities; /**

* A demo showing a time series with per minute data.
*
*/

public class TimeSeriesDemo10 extends ApplicationFrame {

   /**
    * A demonstration application.
    *
    * @param title  the frame title.
    */
   public TimeSeriesDemo10(final String title) {
       super(title);
       final TimeSeries series = new TimeSeries("Per Minute Data", Minute.class);
       final Hour hour = new Hour();
       series.add(new Minute(1, hour), 10.2);
       series.add(new Minute(3, hour), 17.3);
       series.add(new Minute(9, hour), 14.6);
       series.add(new Minute(11, hour), 11.9);
       series.add(new Minute(15, hour), 13.5);
       series.add(new Minute(19, hour), 10.9);
       final TimeSeriesCollection dataset = new TimeSeriesCollection(series);
       final JFreeChart chart = ChartFactory.createTimeSeriesChart(
           "Time Series Demo 10",
           "Time", 
           "Value",
           dataset,
           true,
           true,
           false
       );
       final ChartPanel chartPanel = new ChartPanel(chart);
       chartPanel.setPreferredSize(new java.awt.Dimension(500, 270));
       setContentPane(chartPanel);
   }
   // ****************************************************************************
   // * JFREECHART DEVELOPER GUIDE                                               *
   // * The JFreeChart Developer Guide, written by David Gilbert, is available   *
   // * to purchase from Object Refinery Limited:                                *
   // *                                                                          *
   // * http://www.object-refinery.ru/jfreechart/guide.html                     *
   // *                                                                          *
   // * Sales are used to provide funding for the JFreeChart project - please    * 
   // * support us so that we can continue developing free software.             *
   // ****************************************************************************
   
   /**
    * Starting point for the demonstration application.
    *
    * @param args  ignored.
    */
   public static void main(final String[] args) {
       final TimeSeriesDemo10 demo = new TimeSeriesDemo10("Time Series Demo 10");
       demo.pack();
       RefineryUtilities.centerFrameOnScreen(demo);
       demo.setVisible(true);
   }

}

      </source>
   
  
 
  



JFreeChart: Time Series Demo 12

   <source lang="java">

/* ===========================================================

* JFreeChart : a free chart library for the Java(tm) platform
* ===========================================================
*
* (C) Copyright 2000-2004, by Object Refinery Limited and Contributors.
*
* Project Info:  http://www.jfree.org/jfreechart/index.html
*
* This library is free software; you can redistribute it and/or modify it under the terms
* of the GNU Lesser General Public License as published by the Free Software Foundation;
* either version 2.1 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
* without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
* See the GNU Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License along with this
* library; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330,
* Boston, MA 02111-1307, USA.
*
* [Java is a trademark or registered trademark of Sun Microsystems, Inc. 
* in the United States and other countries.]
*
* ---------------------
* TimeSeriesDemo12.java
* ---------------------
* (C) Copyright 2003, 2004, by Object Refinery Limited and Contributors.
*
* Original Author:  David Gilbert (for Object Refinery Limited);
* Contributor(s):   -;
*
* $Id: TimeSeriesDemo12.java,v 1.7 2004/04/26 19:12:03 taqua Exp $
*
* Changes
* -------
* 07-Dec-2003 : Version 1 (DG);
*
*/

package org.jfree.chart.demo; import java.awt.BasicStroke; import java.awt.Color; import java.text.SimpleDateFormat; import org.jfree.chart.ChartFactory; import org.jfree.chart.ChartPanel; import org.jfree.chart.JFreeChart; import org.jfree.chart.axis.DateAxis; import org.jfree.chart.plot.XYPlot; import org.jfree.chart.renderer.xy.StandardXYItemRenderer; import org.jfree.chart.renderer.xy.XYItemRenderer; import org.jfree.data.time.Minute; import org.jfree.data.time.TimeSeries; import org.jfree.data.time.TimeSeriesCollection; import org.jfree.data.xy.XYDataset; import org.jfree.ui.ApplicationFrame; import org.jfree.ui.RefineryUtilities; import org.jfree.ui.Spacer; /**

* A demo.
* 
*/

public class TimeSeriesDemo12 extends ApplicationFrame {

   /**
    * A demo.
    * 
    * @param title  the frame title.
    */
   public TimeSeriesDemo12(final String title) {
       super(title);
       final XYDataset dataset = createDataset();
       final JFreeChart chart = createChart(dataset);
       final ChartPanel chartPanel = new ChartPanel(chart);
       chartPanel.setPreferredSize(new java.awt.Dimension(500, 270));
       chartPanel.setMouseZoomable(true, false);
       setContentPane(chartPanel);
   }
   // ****************************************************************************
   // * JFREECHART DEVELOPER GUIDE                                               *
   // * The JFreeChart Developer Guide, written by David Gilbert, is available   *
   // * to purchase from Object Refinery Limited:                                *
   // *                                                                          *
   // * http://www.object-refinery.ru/jfreechart/guide.html                     *
   // *                                                                          *
   // * Sales are used to provide funding for the JFreeChart project - please    * 
   // * support us so that we can continue developing free software.             *
   // ****************************************************************************
   /**
    * Creates a chart.
    * 
    * @param dataset  a dataset.
    * 
    * @return A chart.
    */
   private JFreeChart createChart(final XYDataset dataset) {
       final JFreeChart chart = ChartFactory.createTimeSeriesChart(
           "Sample Chart",
           "Date", 
           "Value",
           dataset,
           true,
           true,
           false
       );
       chart.setBackgroundPaint(Color.white);
       

// final StandardLegend sl = (StandardLegend) chart.getLegend();

 //      sl.setDisplaySeriesShapes(true);
       final XYPlot plot = chart.getXYPlot();
       //plot.setOutlinePaint(null);
       plot.setBackgroundPaint(Color.lightGray);
       plot.setDomainGridlinePaint(Color.white);
       plot.setRangeGridlinePaint(Color.white);
   //    plot.setAxisOffset(new Spacer(Spacer.ABSOLUTE, 5.0, 5.0, 5.0, 5.0));
       plot.setDomainCrosshairVisible(true);
       plot.setRangeCrosshairVisible(false);
       
       final XYItemRenderer renderer = plot.getRenderer();
       if (renderer instanceof StandardXYItemRenderer) {
           final StandardXYItemRenderer rr = (StandardXYItemRenderer) renderer;
           rr.setPlotShapes(true);
           rr.setShapesFilled(true);
           renderer.setSeriesStroke(0, new BasicStroke(2.0f));
           renderer.setSeriesStroke(1, new BasicStroke(2.0f));
          }
       
       final DateAxis axis = (DateAxis) plot.getDomainAxis();
       axis.setDateFormatOverride(new SimpleDateFormat("hh:mma"));
       
       return chart;
   }
   
   /**
    * Creates a sample dataset.
    *
    * @return the dataset.
    */
   private XYDataset createDataset() {
       final TimeSeriesCollection dataset = new TimeSeriesCollection();
       dataset.setDomainIsPointsInTime(true);
       
       final TimeSeries s1 = new TimeSeries("Series 1", Minute.class);
       s1.add(new Minute(0, 0, 7, 12, 2003), 1.2);
       s1.add(new Minute(30, 12, 7, 12, 2003), 3.0);
       s1.add(new Minute(15, 14, 7, 12, 2003), 8.0);
       
       final TimeSeries s2 = new TimeSeries("Series 2", Minute.class);
       s2.add(new Minute(0, 3, 7, 12, 2003), 0.0);
       s2.add(new Minute(30, 9, 7, 12, 2003), 0.0);
       s2.add(new Minute(15, 10, 7, 12, 2003), 0.0);
       
       dataset.addSeries(s1);
       dataset.addSeries(s2);
       return dataset;
   }
   /**
    * Starting point for the demonstration application.
    *
    * @param args  ignored.
    */
   public static void main(final String[] args) {
       final TimeSeriesDemo12 demo = new TimeSeriesDemo12("Time Series Demo 12");
       demo.pack();
       RefineryUtilities.centerFrameOnScreen(demo);
       demo.setVisible(true);
   }

}

      </source>
   
  
 
  



JFreeChart: Time Series Demo 13: two charts that use weekly data

   <source lang="java">

/* ===========================================================

* JFreeChart : a free chart library for the Java(tm) platform
* ===========================================================
*
* (C) Copyright 2000-2004, by Object Refinery Limited and Contributors.
*
* Project Info:  http://www.jfree.org/jfreechart/index.html
*
* This library is free software; you can redistribute it and/or modify it under the terms
* of the GNU Lesser General Public License as published by the Free Software Foundation;
* either version 2.1 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
* without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
* See the GNU Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License along with this
* library; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330,
* Boston, MA 02111-1307, USA.
*
* [Java is a trademark or registered trademark of Sun Microsystems, Inc. 
* in the United States and other countries.]
*
* ---------------------
* TimeSeriesDemo13.java
* ---------------------
* (C) Copyright 2004, by Object Refinery Limited and Contributors.
*
* Original Author:  David Gilbert (for Object Refinery Limited);
* Contributor(s):   -;
*
* $Id: TimeSeriesDemo13.java,v 1.4 2004/04/26 19:12:03 taqua Exp $
*
* Changes
* -------
* 11-Feb-2004 : Version 1 (DG);
*
*/

package org.jfree.chart.demo; import java.awt.BorderLayout; import java.awt.Color; import java.text.SimpleDateFormat; import javax.swing.JPanel; import javax.swing.JTabbedPane; import org.jfree.chart.ChartFactory; import org.jfree.chart.ChartPanel; import org.jfree.chart.JFreeChart; import org.jfree.chart.axis.DateAxis; import org.jfree.chart.axis.DateTickUnit; import org.jfree.chart.axis.TickUnits; import org.jfree.chart.plot.XYPlot; import org.jfree.chart.renderer.xy.StandardXYItemRenderer; import org.jfree.chart.renderer.xy.XYItemRenderer; import org.jfree.data.time.RegularTimePeriod; import org.jfree.data.time.TimeSeries; import org.jfree.data.time.TimeSeriesCollection; import org.jfree.data.time.Week; import org.jfree.data.xy.XYDataset; import org.jfree.ui.ApplicationFrame; import org.jfree.ui.RefineryUtilities; import org.jfree.ui.Spacer; /**

* This demo shows two charts that use weekly data.  A custom tick unit collection is defined to
* control the domain axis formatting.
*
*/

public class TimeSeriesDemo13 extends ApplicationFrame {

   /**
    * Creates a new demo instance.
    *
    * @param title  the frame title.
    */
   public TimeSeriesDemo13(final String title) {
       
       super(title);
       
       final XYDataset dataset1 = createDataset(26);
       final JFreeChart chart1 = createChart(dataset1);
       final ChartPanel chartPanel1 = new ChartPanel(chart1);
      
       final XYDataset dataset2 = createDataset(1);
       final JFreeChart chart2 = createChart(dataset2);
       final ChartPanel chartPanel2 = new ChartPanel(chart2);
       
       final JTabbedPane tabs = new JTabbedPane();
       tabs.add("Chart 1", chartPanel1);
       tabs.add("Chart 2", chartPanel2);
       final JPanel content = new JPanel(new BorderLayout());
       content.setPreferredSize(new java.awt.Dimension(500, 270));
       content.add(tabs);
       setContentPane(content);
   }
   /**
    * Creates a chart.
    * 
    * @param dataset  a dataset.
    * 
    * @return A chart.
    */
   private JFreeChart createChart(final XYDataset dataset) {
       final JFreeChart chart = ChartFactory.createTimeSeriesChart(
           "Weekly Data",
           "Date", 
           "Value",
           dataset,
           true,
           true,
           false
       );
       chart.setBackgroundPaint(Color.white);

// final StandardLegend sl = (StandardLegend) chart.getLegend();

 //      sl.setDisplaySeriesShapes(true);
       final XYPlot plot = chart.getXYPlot();
       plot.setBackgroundPaint(Color.lightGray);
       plot.setDomainGridlinePaint(Color.white);
       plot.setRangeGridlinePaint(Color.white);
   //    plot.setAxisOffset(new Spacer(Spacer.ABSOLUTE, 5.0, 5.0, 5.0, 5.0));
       plot.setDomainCrosshairVisible(true);
       plot.setRangeCrosshairVisible(true);
       
       final XYItemRenderer renderer = plot.getRenderer();
       if (renderer instanceof StandardXYItemRenderer) {
           final StandardXYItemRenderer rr = (StandardXYItemRenderer) renderer;
           rr.setPlotShapes(true);
           rr.setShapesFilled(true);
       }
       
       final DateAxis axis = (DateAxis) plot.getDomainAxis();
       final TickUnits standardUnits = new TickUnits();
       standardUnits.add(
           new DateTickUnit(DateTickUnit.DAY, 1, new SimpleDateFormat("MMM dd ""yy"))
       );
       standardUnits.add(
               new DateTickUnit(DateTickUnit.DAY, 7, new SimpleDateFormat("MMM dd ""yy"))
       );
       standardUnits.add(
               new DateTickUnit(DateTickUnit.MONTH, 1, new SimpleDateFormat("MMM ""yy"))
       );
       axis.setStandardTickUnits(standardUnits);
       
       return chart;
   }
   
   // ****************************************************************************
   // * JFREECHART DEVELOPER GUIDE                                               *
   // * The JFreeChart Developer Guide, written by David Gilbert, is available   *
   // * to purchase from Object Refinery Limited:                                *
   // *                                                                          *
   // * http://www.object-refinery.ru/jfreechart/guide.html                     *
   // *                                                                          *
   // * Sales are used to provide funding for the JFreeChart project - please    * 
   // * support us so that we can continue developing free software.             *
   // ****************************************************************************
   
   /**
    * Creates a dataset containing random values at weekly intervals.
    *
    * @param items  the number of items in the dataset.
    * 
    * @return the dataset.
    */
   private XYDataset createDataset(final int items) {
       final TimeSeries s1 = new TimeSeries("Random Data", Week.class);
       RegularTimePeriod t = new Week();
       double v = 100.0;
       for (int i = 0; i < items; i++) {
           s1.add(t, v);
           v = v * (1 + ((Math.random() - 0.499) / 100.0));
           t = t.next();
       }
       final TimeSeriesCollection dataset = new TimeSeriesCollection(s1);
       dataset.setDomainIsPointsInTime(true);
       return dataset;
   }
   /**
    * Starting point for the demonstration application.
    *
    * @param args  ignored.
    */
   public static void main(final String[] args) {
       final TimeSeriesDemo13 demo = new TimeSeriesDemo13("Time Series Demo 13");
       demo.pack();
       RefineryUtilities.centerFrameOnScreen(demo);
       demo.setVisible(true);
   }

}

      </source>
   
  
 
  



JFreeChart: Time Series Demo 2 with quarterly data

   <source lang="java">

/* ===========================================================

* JFreeChart : a free chart library for the Java(tm) platform
* ===========================================================
*
* (C) Copyright 2000-2004, by Object Refinery Limited and Contributors.
*
* Project Info:  http://www.jfree.org/jfreechart/index.html
*
* This library is free software; you can redistribute it and/or modify it under the terms
* of the GNU Lesser General Public License as published by the Free Software Foundation;
* either version 2.1 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
* without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
* See the GNU Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License along with this
* library; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330,
* Boston, MA 02111-1307, USA.
*
* [Java is a trademark or registered trademark of Sun Microsystems, Inc. 
* in the United States and other countries.]
*
* --------------------
* TimeSeriesDemo2.java
* --------------------
* (C) Copyright 2002-2004, by Object Refinery Limited and Contributors.
*
* Original Author:  David Gilbert (for Object Refinery Limited);
* Contributor(s):   -;
*
* $Id: TimeSeriesDemo2.java,v 1.12 2004/04/26 19:12:03 taqua Exp $
*
* Changes
* -------
* 08-Apr-2002 : Version 1 (DG);
*
*/

package org.jfree.chart.demo; import org.jfree.chart.ChartFactory; import org.jfree.chart.ChartPanel; import org.jfree.chart.JFreeChart; import org.jfree.chart.plot.ValueMarker; import org.jfree.data.time.Quarter; import org.jfree.data.time.TimeSeries; import org.jfree.data.time.TimeSeriesCollection; import org.jfree.ui.ApplicationFrame; import org.jfree.ui.RefineryUtilities; /**

* A demo showing a time series (quarterly data) with a null value.  The
* null value causes a gap in the line connecting the data points.
*
*/

public class TimeSeriesDemo2 extends ApplicationFrame {

   /**
    * A demonstration application showing a quarterly time series containing a null value.
    *
    * @param title  the frame title.
    */
   public TimeSeriesDemo2(final String title) {
       super(title);
       final TimeSeries series = new TimeSeries("Quarterly Data", Quarter.class);
       series.add(new Quarter(1, 2001), 500.2);
       series.add(new Quarter(2, 2001), 694.1);
       series.add(new Quarter(3, 2001), 734.4);
       series.add(new Quarter(4, 2001), 453.2);
       series.add(new Quarter(1, 2002), 500.2);
       series.add(new Quarter(2, 2002), null);
       series.add(new Quarter(3, 2002), 734.4);
       series.add(new Quarter(4, 2002), 453.2);
       final TimeSeriesCollection dataset = new TimeSeriesCollection(series);
       final JFreeChart chart = ChartFactory.createTimeSeriesChart(
           "Time Series Demo 2",
           "Time", 
           "Value",
           dataset,
           true,
           true,
           false
       );
       chart.getXYPlot().addRangeMarker(new ValueMarker(550.0));
       final Quarter q = new Quarter(2, 2002);
       chart.getXYPlot().addDomainMarker(new ValueMarker(q.getMiddleMillisecond()));
       final ChartPanel chartPanel = new ChartPanel(chart);
       chartPanel.setPreferredSize(new java.awt.Dimension(500, 270));
       setContentPane(chartPanel);
   }
   // ****************************************************************************
   // * JFREECHART DEVELOPER GUIDE                                               *
   // * The JFreeChart Developer Guide, written by David Gilbert, is available   *
   // * to purchase from Object Refinery Limited:                                *
   // *                                                                          *
   // * http://www.object-refinery.ru/jfreechart/guide.html                     *
   // *                                                                          *
   // * Sales are used to provide funding for the JFreeChart project - please    * 
   // * support us so that we can continue developing free software.             *
   // ****************************************************************************
   
   /**
    * Starting point for the demonstration application.
    *
    * @param args  ignored.
    */
   public static void main(final String[] args) {
       final TimeSeriesDemo2 demo = new TimeSeriesDemo2("Time Series Demo 2");
       demo.pack();
       RefineryUtilities.centerFrameOnScreen(demo);
       demo.setVisible(true);
   }

}

      </source>
   
  
 
  



JFreeChart: Time Series Demo 4 using hourly data and including a null value

   <source lang="java">

/* ===========================================================

* JFreeChart : a free chart library for the Java(tm) platform
* ===========================================================
*
* (C) Copyright 2000-2004, by Object Refinery Limited and Contributors.
*
* Project Info:  http://www.jfree.org/jfreechart/index.html
*
* This library is free software; you can redistribute it and/or modify it under the terms
* of the GNU Lesser General Public License as published by the Free Software Foundation;
* either version 2.1 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
* without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
* See the GNU Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License along with this
* library; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330,
* Boston, MA 02111-1307, USA.
*
* [Java is a trademark or registered trademark of Sun Microsystems, Inc. 
* in the United States and other countries.]
*
* --------------------
* TimeSeriesDemo4.java
* --------------------
* (C) Copyright 2002-2004, by Object Refinery Limited and Contributors.
*
* Original Author:  David Gilbert (for Object Refinery Limited);
* Contributor(s):   -;
*
* $Id: TimeSeriesDemo4.java,v 1.13 2004/04/30 07:43:20 mungady Exp $
*
* Changes
* -------
* 08-Apr-2002 : Version 1 (DG);
* 25-Jun-2002 : Removed unnecessary import (DG);
* 28-Aug-2002 : Centered frame on screen (DG);
*
*/

package org.jfree.chart.demo; import java.awt.Color; import java.awt.Insets; import org.jfree.chart.ChartFactory; import org.jfree.chart.ChartPanel; import org.jfree.chart.JFreeChart; import org.jfree.chart.plot.Marker; import org.jfree.chart.plot.ValueMarker; import org.jfree.chart.plot.XYPlot; import org.jfree.chart.renderer.xy.StandardXYItemRenderer; import org.jfree.chart.renderer.xy.XYItemRenderer; import org.jfree.data.time.Day; import org.jfree.data.time.Hour; import org.jfree.data.time.TimeSeries; import org.jfree.data.time.TimeSeriesCollection; import org.jfree.ui.ApplicationFrame; import org.jfree.ui.RefineryUtilities; /**

* An example of a time series chart using hourly data and including a null value.  The plot
* has an image set for the background, and a blue range marker is added to the plot.
*
*/

public class TimeSeriesDemo4 extends ApplicationFrame {

   /**
    * A demonstration application showing a quarterly time series containing a null value.
    *
    * @param title  the frame title.
    */
   public TimeSeriesDemo4(final String title) {
       super(title);
       final TimeSeries series = new TimeSeries("Random Data", Hour.class);
       final Day today = new Day();
       series.add(new Hour(1, today), 500.2);
       series.add(new Hour(2, today), 694.1);
       series.add(new Hour(3, today), 734.4);
       series.add(new Hour(4, today), 453.2);
       series.add(new Hour(7, today), 500.2);
       series.add(new Hour(8, today), null);
       series.add(new Hour(12, today), 734.4);
       series.add(new Hour(16, today), 453.2);
       final TimeSeriesCollection dataset = new TimeSeriesCollection(series);
       // create a title with Unicode characters (currency symbols in this case)...
       final String chartTitle = "\u20A2\u20A2\u20A3\u20A4\u20A5\u20A6\u20A7\u20A8\u20A9\u20AA";
       final JFreeChart chart = ChartFactory.createTimeSeriesChart(
           chartTitle,
           "Time", 
           "Value",
           dataset,
           true,
           true,
           false
       );
       final XYPlot plot = chart.getXYPlot();
 //      plot.setInsets(new Insets(0, 0, 0, 20));
       final Marker marker = new ValueMarker(700.0);
       marker.setPaint(Color.blue);
       marker.setAlpha(0.8f);
       plot.addRangeMarker(marker);
       plot.setBackgroundPaint(null);
       plot.setBackgroundImage(JFreeChart.INFO.getLogo());
       final XYItemRenderer renderer = plot.getRenderer();
       if (renderer instanceof StandardXYItemRenderer) {
           final StandardXYItemRenderer r = (StandardXYItemRenderer) renderer;
           r.setPlotShapes(true);
           r.setShapesFilled(true);
       }
       final ChartPanel chartPanel = new ChartPanel(chart);
       chartPanel.setPreferredSize(new java.awt.Dimension(500, 270));
       chartPanel.setMouseZoomable(true, false);
       setContentPane(chartPanel);
   }
   // ****************************************************************************
   // * JFREECHART DEVELOPER GUIDE                                               *
   // * The JFreeChart Developer Guide, written by David Gilbert, is available   *
   // * to purchase from Object Refinery Limited:                                *
   // *                                                                          *
   // * http://www.object-refinery.ru/jfreechart/guide.html                     *
   // *                                                                          *
   // * Sales are used to provide funding for the JFreeChart project - please    * 
   // * support us so that we can continue developing free software.             *
   // ****************************************************************************
   
   /**
    * Starting point for the demonstration application.
    *
    * @param args  ignored.
    */
   public static void main(final String[] args) {
       final TimeSeriesDemo4 demo = new TimeSeriesDemo4("Time Series Demo 4");
       demo.pack();
       RefineryUtilities.centerFrameOnScreen(demo);
       demo.setVisible(true);
   }

}

      </source>
   
  
 
  



JFreeChart: Time Series Demo 5 with 4000 data points

   <source lang="java">

/* ===========================================================

* JFreeChart : a free chart library for the Java(tm) platform
* ===========================================================
*
* (C) Copyright 2000-2004, by Object Refinery Limited and Contributors.
*
* Project Info:  http://www.jfree.org/jfreechart/index.html
*
* This library is free software; you can redistribute it and/or modify it under the terms
* of the GNU Lesser General Public License as published by the Free Software Foundation;
* either version 2.1 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
* without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
* See the GNU Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License along with this
* library; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330,
* Boston, MA 02111-1307, USA.
*
* [Java is a trademark or registered trademark of Sun Microsystems, Inc. 
* in the United States and other countries.]
*
* --------------------
* TimeSeriesDemo5.java
* --------------------
* (C) Copyright 2001-2004, by Object Refinery Limited and Contributors.
*
* Original Author:  David Gilbert (for Object Refinery Limited);
* Contributor(s):   -;
*
* $Id: TimeSeriesDemo5.java,v 1.12 2004/04/26 19:12:03 taqua Exp $
*
* Changes (from 24-Apr-2002)
* --------------------------
* 24-Apr-2002 : Added standard header (DG);
* 10-Oct-2002 : Renamed JFreeChartDemo2 --> TimeSeriesDemo5 (DG);
*
*/

package org.jfree.chart.demo; import org.jfree.chart.ChartFactory; import org.jfree.chart.ChartPanel; import org.jfree.chart.JFreeChart; import org.jfree.data.general.SeriesException; import org.jfree.data.time.Day; import org.jfree.data.time.TimeSeries; import org.jfree.data.time.TimeSeriesCollection; import org.jfree.data.xy.XYDataset; import org.jfree.ui.ApplicationFrame; import org.jfree.ui.RefineryUtilities; /**

* A time series chart with 4000 data points, to get an idea of how JFreeChart performs with a
* larger dataset.  You can see that it slows down significantly, so this needs to be worked on
* (4000 points is not that many!).
*
*/

public class TimeSeriesDemo5 extends ApplicationFrame {

   /**
    * Creates a new demo instance.
    *
    * @param title  the frame title.
    */
   public TimeSeriesDemo5(final String title) {
       
       super(title);
       final XYDataset dataset = createDataset();
       final JFreeChart chart = createChart(dataset);
       final ChartPanel chartPanel = new ChartPanel(chart);
       chartPanel.setPreferredSize(new java.awt.Dimension(500, 270));
       chartPanel.setMouseZoomable(true, false);
       setContentPane(chartPanel);
       
   }
      
   /**
    * Creates a sample dataset.
    * 
    * @return A sample dataset.
    */
   private XYDataset createDataset() {
       
       final TimeSeries series = new TimeSeries("Random Data");
       Day current = new Day(1, 1, 1990);
       double value = 100.0;
       for (int i = 0; i < 4000; i++) {
           try {
               value = value + Math.random() - 0.5;
               series.add(current, new Double(value));
               current = (Day) current.next();
           }
           catch (SeriesException e) {
               System.err.println("Error adding to series");
           }
       }
       return new TimeSeriesCollection(series);
   }
   
   /**
    * Creates a sample chart.
    * 
    * @param dataset  the dataset.
    * 
    * @return A sample chart.
    */
   private JFreeChart createChart(final XYDataset dataset) {
       return ChartFactory.createTimeSeriesChart(
           "Test", 
           "Day", 
           "Value", 
           dataset,
           false, 
           false, 
           false
       );
   }
   
   // ****************************************************************************
   // * JFREECHART DEVELOPER GUIDE                                               *
   // * The JFreeChart Developer Guide, written by David Gilbert, is available   *
   // * to purchase from Object Refinery Limited:                                *
   // *                                                                          *
   // * http://www.object-refinery.ru/jfreechart/guide.html                     *
   // *                                                                          *
   // * Sales are used to provide funding for the JFreeChart project - please    * 
   // * support us so that we can continue developing free software.             *
   // ****************************************************************************
   
   /**
    * Starting point for the application.
    *
    * @param args  ignored.
    */
   public static void main(final String[] args) {
       final String title = "\u20A2\u20A2\u20A2\u20A3\u20A4\u20A5\u20A6\u20A7\u20A8\u20A9\u20AA";
       final TimeSeriesDemo5 demo = new TimeSeriesDemo5(title);
       demo.pack();
       RefineryUtilities.positionFrameRandomly(demo);
       demo.setVisible(true);
   }

}


      </source>
   
  
 
  



JFreeChart: Time Series Demo 6 with all zero data

   <source lang="java">

/* ===========================================================

* JFreeChart : a free chart library for the Java(tm) platform
* ===========================================================
*
* (C) Copyright 2000-2004, by Object Refinery Limited and Contributors.
*
* Project Info:  http://www.jfree.org/jfreechart/index.html
*
* This library is free software; you can redistribute it and/or modify it under the terms
* of the GNU Lesser General Public License as published by the Free Software Foundation;
* either version 2.1 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
* without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
* See the GNU Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License along with this
* library; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330,
* Boston, MA 02111-1307, USA.
*
* [Java is a trademark or registered trademark of Sun Microsystems, Inc. 
* in the United States and other countries.]
*
* --------------------
* TimeSeriesDemo6.java
* --------------------
* (C) Copyright 2002-2004, by Object Refinery Limited and Contributors.
*
* Original Author:  David Gilbert (for Object Refinery Limited);
* Contributor(s):   -;
*
* $Id: TimeSeriesDemo6.java,v 1.11 2004/04/26 19:12:03 taqua Exp $
*
* Changes
* -------
* 08-Apr-2002 : Version 1 (DG);
* 25-Jun-2002 : Removed unnecessary import (DG);
*
*/

package org.jfree.chart.demo; import java.text.SimpleDateFormat; import org.jfree.chart.ChartFactory; import org.jfree.chart.ChartPanel; import org.jfree.chart.JFreeChart; import org.jfree.chart.axis.DateAxis; import org.jfree.chart.axis.ValueAxis; import org.jfree.chart.plot.XYPlot; import org.jfree.data.time.Month; import org.jfree.data.time.TimeSeries; import org.jfree.data.time.TimeSeriesCollection; import org.jfree.data.xy.XYDataset; import org.jfree.ui.ApplicationFrame; import org.jfree.ui.RefineryUtilities; /**

* A time series chart with all zero data.  When the data range is zero, you may want to modify
* the default behaviour of the range axis.
*
*/

public class TimeSeriesDemo6 extends ApplicationFrame {

   /**
    * Creates a new instance.
    *
    * @param title  the frame title.
    */
   public TimeSeriesDemo6(final String title) {
       super(title);
       final XYDataset dataset = createDataset();
       final JFreeChart chart = createChart(dataset);
       final ChartPanel chartPanel = new ChartPanel(chart);
       chartPanel.setPreferredSize(new java.awt.Dimension(500, 270));
       setContentPane(chartPanel);
   }
   /**
    * Creates a chart.
    * 
    * @param dataset  the dataset.
    * 
    * @return a chart.
    */
   private JFreeChart createChart(final XYDataset dataset) {
       
       final JFreeChart chart = ChartFactory.createTimeSeriesChart(
           "Time Series Demo 6", 
           "Date", 
           "Value",
           dataset, 
           true, 
           true, 
           false
       );
       final XYPlot plot = chart.getXYPlot();
       final DateAxis axis = (DateAxis) plot.getDomainAxis();
       axis.setDateFormatOverride(new SimpleDateFormat("MMM-yyyy"));
       final ValueAxis rangeAxis = plot.getRangeAxis();
       rangeAxis.setAutoRangeMinimumSize(1.0);    
       return chart;   
   
   }   
   
   // ****************************************************************************
   // * JFREECHART DEVELOPER GUIDE                                               *
   // * The JFreeChart Developer Guide, written by David Gilbert, is available   *
   // * to purchase from Object Refinery Limited:                                *
   // *                                                                          *
   // * http://www.object-refinery.ru/jfreechart/guide.html                     *
   // *                                                                          *
   // * Sales are used to provide funding for the JFreeChart project - please    * 
   // * support us so that we can continue developing free software.             *
   // ****************************************************************************
   
   /**
    * Creates a dataset, consisting of two series of monthly data.
    *
    * @return the dataset.
    */
   public XYDataset createDataset() {
       final double value = 0.0;
       final TimeSeries s1 = new TimeSeries("Series 1", Month.class);
       s1.add(new Month(2, 2001), value);
       s1.add(new Month(3, 2001), value);
       s1.add(new Month(4, 2001), value);
       s1.add(new Month(5, 2001), value);
       s1.add(new Month(6, 2001), value);
       s1.add(new Month(7, 2001), value);
       s1.add(new Month(8, 2001), value);
       s1.add(new Month(9, 2001), value);
       s1.add(new Month(10, 2001), value);
       s1.add(new Month(11, 2001), value);
       s1.add(new Month(12, 2001), value);
       s1.add(new Month(1, 2002), value);
       s1.add(new Month(2, 2002), value);
       s1.add(new Month(3, 2002), value);
       s1.add(new Month(4, 2002), value);
       s1.add(new Month(5, 2002), value);
       s1.add(new Month(6, 2002), value);
       s1.add(new Month(7, 2002), value);
       final TimeSeriesCollection dataset = new TimeSeriesCollection();
       dataset.addSeries(s1);
       return dataset;
   }
   /**
    * Starting point for the demonstration application.
    *
    * @param args  ignored.
    */
   public static void main(final String[] args) {
       final TimeSeriesDemo6 demo = new TimeSeriesDemo6("Time Series Demo 6");
       demo.pack();
       RefineryUtilities.centerFrameOnScreen(demo);
       demo.setVisible(true);
   }

}

      </source>
   
  
 
  



JFreeChart: Time Series Demo 7

   <source lang="java">

/* ===========================================================

* JFreeChart : a free chart library for the Java(tm) platform
* ===========================================================
*
* (C) Copyright 2000-2004, by Object Refinery Limited and Contributors.
*
* Project Info:  http://www.jfree.org/jfreechart/index.html
*
* This library is free software; you can redistribute it and/or modify it under the terms
* of the GNU Lesser General Public License as published by the Free Software Foundation;
* either version 2.1 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
* without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
* See the GNU Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License along with this
* library; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330,
* Boston, MA 02111-1307, USA.
*
* [Java is a trademark or registered trademark of Sun Microsystems, Inc. 
* in the United States and other countries.]
*
* --------------------
* TimeSeriesDemo7.java
* --------------------
* (C) Copyright 2003, 2004, by Object Refinery Limited and Contributors.
*
* Original Author:  David Gilbert (for Object Refinery Limited);
* Contributor(s):   -;
*
* $Id: TimeSeriesDemo7.java,v 1.11 2004/04/30 07:43:45 mungady Exp $
*
* Changes
* -------
* 05-Feb-2003 : Version 1 (DG);
*
*/

package org.jfree.chart.demo; import org.jfree.chart.ChartFactory; import org.jfree.chart.ChartPanel; import org.jfree.chart.JFreeChart; import org.jfree.data.time.TimeSeriesCollection; import org.jfree.data.xy.XYDataset; import org.jfree.ui.ApplicationFrame; import org.jfree.ui.RefineryUtilities; /**

* A time series chart.
*
*/

public class TimeSeriesDemo7 extends ApplicationFrame {

   /**
    * A demonstration application showing how to create a simple time series chart.
    *
    * @param title  the frame title.
    */
   public TimeSeriesDemo7(final String title) {
       super(title);
       // create a title...
       final String chartTitle = "Time Series Demo";
       final XYDataset dataset = new TimeSeriesCollection(
           DemoDatasetFactory.createEURTimeSeries()
       );
       final JFreeChart chart = ChartFactory.createTimeSeriesChart(
           chartTitle, 
           "Date", 
           "Value",
           dataset, 
           true, 
           true, 
           false
       );
       final ChartPanel chartPanel = new ChartPanel(chart);
       chartPanel.setPreferredSize(new java.awt.Dimension(500, 270));
       setContentPane(chartPanel);
   }
   // ****************************************************************************
   // * JFREECHART DEVELOPER GUIDE                                               *
   // * The JFreeChart Developer Guide, written by David Gilbert, is available   *
   // * to purchase from Object Refinery Limited:                                *
   // *                                                                          *
   // * http://www.object-refinery.ru/jfreechart/guide.html                     *
   // *                                                                          *
   // * Sales are used to provide funding for the JFreeChart project - please    * 
   // * support us so that we can continue developing free software.             *
   // ****************************************************************************
   
   /**
    * Starting point for the demonstration application.
    *
    * @param args  ignored.
    */
   public static void main(final String[] args) {
       final TimeSeriesDemo7 demo = new TimeSeriesDemo7("Time Series Demo 7");
       demo.pack();
       RefineryUtilities.centerFrameOnScreen(demo);
       demo.setVisible(true);
   }

}

      </source>
   
  
 
  



JFreeChart: Time Series Demo 8

   <source lang="java">

/* ===========================================================

* JFreeChart : a free chart library for the Java(tm) platform
* ===========================================================
*
* (C) Copyright 2000-2004, by Object Refinery Limited and Contributors.
*
* Project Info:  http://www.jfree.org/jfreechart/index.html
*
* This library is free software; you can redistribute it and/or modify it under the terms
* of the GNU Lesser General Public License as published by the Free Software Foundation;
* either version 2.1 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
* without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
* See the GNU Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License along with this
* library; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330,
* Boston, MA 02111-1307, USA.
*
* [Java is a trademark or registered trademark of Sun Microsystems, Inc. 
* in the United States and other countries.]
*
* --------------------
* TimeSeriesDemo8.java
* --------------------
* (C) Copyright 2003, 2004, by Object Refinery Limited and Contributors.
*
* Original Author:  David Gilbert (for Object Refinery Limited);
* Contributor(s):   -;
*
* $Id: TimeSeriesDemo8.java,v 1.16 2004/06/07 10:38:07 mungady Exp $
*
* Changes
* -------
* 05-Feb-2003 : Version 1 (DG);
*
*/

package org.jfree.chart.demo; import java.text.DecimalFormat; import java.text.SimpleDateFormat; import org.jfree.chart.ChartFactory; import org.jfree.chart.ChartPanel; import org.jfree.chart.JFreeChart; import org.jfree.chart.labels.StandardXYToolTipGenerator; import org.jfree.chart.renderer.xy.XYItemRenderer; import org.jfree.data.time.MovingAverage; import org.jfree.data.time.TimeSeries; import org.jfree.data.time.TimeSeriesCollection; import org.jfree.data.xy.XYDataset; import org.jfree.ui.ApplicationFrame; import org.jfree.ui.RefineryUtilities; /**

* A time series chart.
*/

public class TimeSeriesDemo8 extends ApplicationFrame {

   /**
    * A demonstration application showing how to create a simple time series chart.
    *
    * @param title  the frame title.
    */
   public TimeSeriesDemo8(final String title) {
       super(title);
       final XYDataset dataset = createDataset();
       final JFreeChart chart = createChart(dataset);
       final ChartPanel chartPanel = new ChartPanel(chart);
       chartPanel.setPreferredSize(new java.awt.Dimension(500, 270));
       chartPanel.setMouseZoomable(true, false);
       setContentPane(chartPanel);
   }
   /**
    * Creates a sample dataset.
    * 
    * @return a sample dataset.
    */
   private XYDataset createDataset() {
       final TimeSeries eur = DemoDatasetFactory.createEURTimeSeries();
       final TimeSeries mav = MovingAverage.createMovingAverage(
           eur, "30 day moving average", 30, 30
       );
       final TimeSeriesCollection dataset = new TimeSeriesCollection();
       dataset.addSeries(eur);
       dataset.addSeries(mav);
       return dataset;
   }
   
   /**
    * Creates a chart.
    * 
    * @param dataset  the dataset.
    * 
    * @return a chart.
    */
   private JFreeChart createChart(final XYDataset dataset) {
       final JFreeChart chart = ChartFactory.createTimeSeriesChart(
           "Time Series Demo 8", 
           "Date", 
           "Value",
           dataset, 
           true, 
           true, 
           false
       );
       final XYItemRenderer renderer = chart.getXYPlot().getRenderer();
       final StandardXYToolTipGenerator g = new StandardXYToolTipGenerator(
           StandardXYToolTipGenerator.DEFAULT_TOOL_TIP_FORMAT,
           new SimpleDateFormat("d-MMM-yyyy"), new DecimalFormat("0.00")
       );
       renderer.setToolTipGenerator(g);
       return chart;
   }
   
   // ****************************************************************************
   // * JFREECHART DEVELOPER GUIDE                                               *
   // * The JFreeChart Developer Guide, written by David Gilbert, is available   *
   // * to purchase from Object Refinery Limited:                                *
   // *                                                                          *
   // * http://www.object-refinery.ru/jfreechart/guide.html                     *
   // *                                                                          *
   // * Sales are used to provide funding for the JFreeChart project - please    * 
   // * support us so that we can continue developing free software.             *
   // ****************************************************************************
   
   /**
    * Starting point for the demonstration application.
    *
    * @param args  ignored.
    */
   public static void main(final String[] args) {
       final TimeSeriesDemo8 demo = new TimeSeriesDemo8("Time Series Demo 8");
       demo.pack();
       RefineryUtilities.centerFrameOnScreen(demo);
       demo.setVisible(true);
   }

}

      </source>
   
  
 
  



JFreeChart: Time Series Demo 9

   <source lang="java">

/* ===========================================================

* JFreeChart : a free chart library for the Java(tm) platform
* ===========================================================
*
* (C) Copyright 2000-2004, by Object Refinery Limited and Contributors.
*
* Project Info:  http://www.jfree.org/jfreechart/index.html
*
* This library is free software; you can redistribute it and/or modify it under the terms
* of the GNU Lesser General Public License as published by the Free Software Foundation;
* either version 2.1 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
* without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
* See the GNU Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License along with this
* library; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330,
* Boston, MA 02111-1307, USA.
*
* [Java is a trademark or registered trademark of Sun Microsystems, Inc. 
* in the United States and other countries.]
*
* --------------------
* TimeSeriesDemo9.java
* --------------------
* (C) Copyright 2003, 2004, by Object Refinery Limited and Contributors.
*
* Original Author:  David Gilbert (for Object Refinery Limited);
* Contributor(s):   -;
*
* $Id: TimeSeriesDemo9.java,v 1.11 2004/04/26 19:12:04 taqua Exp $
*
* Changes
* -------
* 11-Feb-2003 : Version 1 (DG);
*
*/

package org.jfree.chart.demo; import java.awt.geom.Ellipse2D; import java.awt.geom.GeneralPath; import java.awt.geom.Rectangle2D; import org.jfree.chart.ChartFactory; import org.jfree.chart.ChartPanel; import org.jfree.chart.JFreeChart; import org.jfree.chart.plot.XYPlot; import org.jfree.chart.renderer.xy.StandardXYItemRenderer; import org.jfree.chart.renderer.xy.XYItemRenderer; import org.jfree.data.time.Day; import org.jfree.data.time.TimeSeries; import org.jfree.data.time.TimeSeriesCollection; import org.jfree.data.xy.XYDataset; import org.jfree.ui.ApplicationFrame; import org.jfree.ui.RefineryUtilities; /**

* An example of a time series chart.
*
*/

public class TimeSeriesDemo9 extends ApplicationFrame {

   /**
    * A demonstration application showing how to create a simple time series chart.  This
    * example uses monthly data.
    *
    * @param title  the frame title.
    */
   public TimeSeriesDemo9(final String title) {
       super(title);
       // create a title...
       final String chartTitle = "Test";
       final XYDataset dataset = createDataset();
       final JFreeChart chart = ChartFactory.createTimeSeriesChart(
           chartTitle, 
           "Date", 
           "Price Per Unit",
           dataset,
           true,
           true,
           false
       );

// final StandardLegend sl = (StandardLegend) chart.getLegend();

 //      sl.setDisplaySeriesShapes(true);
       final XYPlot plot = chart.getXYPlot();
       final XYItemRenderer r = plot.getRenderer();
       if (r instanceof StandardXYItemRenderer) {
           final StandardXYItemRenderer renderer = (StandardXYItemRenderer) r;
           renderer.setPlotShapes(true);
           renderer.setShapesFilled(true);
           renderer.setSeriesShape(0, new Ellipse2D.Double(-3.0, -3.0, 6.0, 6.0));
           renderer.setSeriesShape(1, new Rectangle2D.Double(-3.0, -3.0, 6.0, 6.0));
           final GeneralPath s2 = new GeneralPath();
           s2.moveTo(0.0f, -3.0f);
           s2.lineTo(3.0f, 3.0f);
           s2.lineTo(-3.0f, 3.0f);
           s2.closePath();
           renderer.setSeriesShape(2, s2);
           final GeneralPath s3 = new GeneralPath();
           s3.moveTo(-1.0f, -3.0f);
           s3.lineTo(1.0f, -3.0f);
           s3.lineTo(1.0f, -1.0f);
           s3.lineTo(3.0f, -1.0f);
           s3.lineTo(3.0f, 1.0f);
           s3.lineTo(1.0f, 1.0f);
           s3.lineTo(1.0f, 3.0f);
           s3.lineTo(-1.0f, 3.0f);
           s3.lineTo(-1.0f, 1.0f);
           s3.lineTo(-3.0f, 1.0f);
           s3.lineTo(-3.0f, -1.0f);
           s3.lineTo(-1.0f, -1.0f);
           s3.closePath();
           renderer.setSeriesShape(3, s3);
       }
       plot.getDomainAxis().setVisible(false);
       plot.getRangeAxis().setVisible(false);
       final ChartPanel chartPanel = new ChartPanel(chart);
       chartPanel.setPreferredSize(new java.awt.Dimension(500, 270));
       setContentPane(chartPanel);
   }
   // ****************************************************************************
   // * JFREECHART DEVELOPER GUIDE                                               *
   // * The JFreeChart Developer Guide, written by David Gilbert, is available   *
   // * to purchase from Object Refinery Limited:                                *
   // *                                                                          *
   // * http://www.object-refinery.ru/jfreechart/guide.html                     *
   // *                                                                          *
   // * Sales are used to provide funding for the JFreeChart project - please    * 
   // * support us so that we can continue developing free software.             *
   // ****************************************************************************
   
   /**
    * Creates a sample dataset.
    *
    * @return The dataset.
    */
   public XYDataset createDataset() {
       final TimeSeriesCollection dataset = new TimeSeriesCollection();
       for (int i = 0; i < 4; i++) {
           dataset.addSeries(createTimeSeries(i, 10));
       }
       return dataset;
   }
   /**
    * Creates a time series containing random daily data.
    *
    * @param series  the series index.
    * @param count  the number of items for the series.
    *
    * @return the dataset.
    */
   public TimeSeries createTimeSeries(final int series, final int count) {
       final TimeSeries result = new TimeSeries("Series " + series , Day.class);
       Day start = new Day();
       for (int i = 0; i < count; i++) {
           result.add(start, Math.random());
           start = (Day) start.next();
       }
       return result;
   }
   /**
    * Starting point for the demonstration application.
    *
    * @param args  ignored.
    */
   public static void main(final String[] args) {
       final TimeSeriesDemo9 demo = new TimeSeriesDemo9("Time Series Demo 9");
       demo.pack();
       RefineryUtilities.centerFrameOnScreen(demo);
       demo.setVisible(true);
   }

}

      </source>