Java/Chart/Time Series Chart
Содержание
- 1 A time series chart, representing data from an XYDataset, ,the vertical axis has a logarithmic scale
- 2 A time series chart, representing data from an XYDataset, use of multiple chart titles
- 3 A time series chart with a moving average
- 4 JFreeChart: Event Frequency Demo
- 5 JFreeChart: Marker Demo 1
- 6 JFreeChart: Time Series Chart Demo 1: the renderer is modified to show filled shapes
- 7 JFreeChart: Time Series Demo
- 8 JFreeChart: Time Series Demo 10 with per minute data
- 9 JFreeChart: Time Series Demo 12
- 10 JFreeChart: Time Series Demo 13: two charts that use weekly data
- 11 JFreeChart: Time Series Demo 2 with quarterly data
- 12 JFreeChart: Time Series Demo 4 using hourly data and including a null value
- 13 JFreeChart: Time Series Demo 5 with 4000 data points
- 14 JFreeChart: Time Series Demo 6 with all zero data
- 15 JFreeChart: Time Series Demo 7
- 16 JFreeChart: Time Series Demo 8
- 17 JFreeChart: Time Series Demo 9
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
/* ===========================================================
* 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);
}
}
JFreeChart: Marker Demo 1
/* ===========================================================
* 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);
}
}
JFreeChart: Time Series Chart Demo 1: the renderer is modified to show filled shapes
/* ===========================================================
* 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);
}
}
JFreeChart: Time Series Demo
/* ===========================================================
* 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);
}
}
JFreeChart: Time Series Demo 10 with per minute data
/* ===========================================================
* 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);
}
}
JFreeChart: Time Series Demo 12
/* ===========================================================
* 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);
}
}
JFreeChart: Time Series Demo 13: two charts that use weekly data
/* ===========================================================
* 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);
}
}
JFreeChart: Time Series Demo 2 with quarterly data
/* ===========================================================
* 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 <code>null</code> value. The
* <code>null</code> 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);
}
}
JFreeChart: Time Series Demo 4 using hourly data and including a null value
/* ===========================================================
* 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);
}
}
JFreeChart: Time Series Demo 5 with 4000 data points
/* ===========================================================
* 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);
}
}
JFreeChart: Time Series Demo 6 with all zero data
/* ===========================================================
* 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);
}
}
JFreeChart: Time Series Demo 7
/* ===========================================================
* 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);
}
}
JFreeChart: Time Series Demo 8
/* ===========================================================
* 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);
}
}
JFreeChart: Time Series Demo 9
/* ===========================================================
* 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);
}
}