chartfactory.java
来自「JfreeChart 常用图表例子」· Java 代码 · 共 1,514 行 · 第 1/5 页
JAVA
1,514 行
/* =========================================================== * 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.] * * ----------------- * ChartFactory.java * ----------------- * (C) Copyright 2001-2005, by Object Refinery Limited and Contributors. * * Original Author: David Gilbert (for Object Refinery Limited); * Contributor(s): Serge V. Grachov; * Joao Guilherme Del Valle; * Bill Kelemen; * Jon Iles; * Jelai Wang; * Richard Atkinson; * David Browning (for Australian Institute of Marine * Science); * Benoit Xhenseval; * * $Id: ChartFactory.java,v 1.22 2005/06/02 08:34:44 mungady Exp $ * * Changes * ------- * 19-Oct-2001 : Version 1, most methods transferred from JFreeChart.java (DG); * 22-Oct-2001 : Added methods to create stacked bar charts (DG); * Renamed DataSource.java --> Dataset.java etc. (DG); * 31-Oct-2001 : Added 3D-effect vertical bar and stacked-bar charts, * contributed by Serge V. Grachov (DG); * 07-Nov-2001 : Added a flag to control whether or not a legend is added to * the chart (DG); * 17-Nov-2001 : For pie chart, changed dataset from CategoryDataset to * PieDataset (DG); * 30-Nov-2001 : Removed try/catch handlers from chart creation, as the * exception are now RuntimeExceptions, as suggested by Joao * Guilherme Del Valle (DG); * 06-Dec-2001 : Added createCombinableXXXXXCharts methods (BK); * 12-Dec-2001 : Added createCandlestickChart() method (DG); * 13-Dec-2001 : Updated methods for charts with new renderers (DG); * 08-Jan-2002 : Added import for * com.jrefinery.chart.combination.CombinedChart (DG); * 31-Jan-2002 : Changed the createCombinableVerticalXYBarChart() method to use * renderer (DG); * 06-Feb-2002 : Added new method createWindPlot() (DG); * 23-Apr-2002 : Updates to the chart and plot constructor API (DG); * 21-May-2002 : Added new method createAreaChart() (JI); * 06-Jun-2002 : Added new method createGanttChart() (DG); * 11-Jun-2002 : Renamed createHorizontalStackedBarChart() * --> createStackedHorizontalBarChart() for consistency (DG); * 06-Aug-2002 : Updated Javadoc comments (DG); * 21-Aug-2002 : Added createPieChart(CategoryDataset) method (DG); * 02-Oct-2002 : Fixed errors reported by Checkstyle (DG); * 09-Oct-2002 : Added methods including tooltips and URL flags (DG); * 06-Nov-2002 : Moved renderers into a separate package (DG); * 18-Nov-2002 : Changed CategoryDataset to TableDataset (DG); * 21-Mar-2003 : Incorporated HorizontalCategoryAxis3D, see bug id 685501 (DG); * 13-May-2003 : Merged some horizontal and vertical methods (DG); * 24-May-2003 : Added support for timeline in createHighLowChart (BK); * 07-Jul-2003 : Added createHistogram() method contributed by Jelai Wang (DG); * 27-Jul-2003 : Added createStackedAreaXYChart() method (RA); * 05-Aug-2003 : added new method createBoxAndWhiskerChart (DB); * 08-Sep-2003 : Changed ValueAxis API (DG); * 07-Oct-2003 : Added stepped area XY chart contributed by Matthias Rose (DG); * 06-Nov-2003 : Added createWaterfallChart() method (DG); * 20-Nov-2003 : Set rendering order for 3D bar charts to fix overlapping * problems (DG); * 25-Nov-2003 : Added createWaferMapChart() method (DG); * 23-Dec-2003 : Renamed createPie3DChart() --> createPieChart3D for * consistency (DG); * 20-Jan-2004 : Added createPolarChart() method (DG); * 28-Jan-2004 : Fixed bug (882890) with axis range in * createStackedXYAreaChart() method (DG); * 25-Feb-2004 : Renamed XYToolTipGenerator --> XYItemLabelGenerator (DG); * 11-Mar-2004 : Updated for pie chart changes (DG); * 27-Apr-2004 : Added new createPieChart() method contributed by Benoit * Xhenseval (see RFE 942195) (DG); * 11-May-2004 : Split StandardCategoryItemLabelGenerator * --> StandardCategoryToolTipGenerator and * StandardCategoryLabelGenerator (DG); * 06-Jan-2005 : Removed deprecated methods (DG); * 27-Jan-2005 : Added new constructor to LineAndShapeRenderer (DG); * 28-Feb-2005 : Added docs to createBubbleChart() method (DG); * 17-Mar-2005 : Added createRingPlot() method (DG); * 21-Apr-2005 : Replaced Insets with RectangleInsets (DG); * */package org.jfree.chart;import java.awt.Color;import java.awt.Font;import java.text.DateFormat;import java.text.NumberFormat;import java.util.Iterator;import java.util.List;import org.jfree.chart.axis.CategoryAxis;import org.jfree.chart.axis.CategoryAxis3D;import org.jfree.chart.axis.DateAxis;import org.jfree.chart.axis.NumberAxis;import org.jfree.chart.axis.NumberAxis3D;import org.jfree.chart.axis.Timeline;import org.jfree.chart.axis.ValueAxis;import org.jfree.chart.labels.HighLowItemLabelGenerator;import org.jfree.chart.labels.IntervalCategoryToolTipGenerator;import org.jfree.chart.labels.ItemLabelAnchor;import org.jfree.chart.labels.ItemLabelPosition;import org.jfree.chart.labels.PieToolTipGenerator;import org.jfree.chart.labels.StandardCategoryToolTipGenerator;import org.jfree.chart.labels.StandardPieItemLabelGenerator;import org.jfree.chart.labels.StandardXYToolTipGenerator;import org.jfree.chart.labels.StandardXYZToolTipGenerator;import org.jfree.chart.labels.XYToolTipGenerator;import org.jfree.chart.plot.CategoryPlot;import org.jfree.chart.plot.Marker;import org.jfree.chart.plot.MultiplePiePlot;import org.jfree.chart.plot.PiePlot;import org.jfree.chart.plot.PiePlot3D;import org.jfree.chart.plot.PlotOrientation;import org.jfree.chart.plot.PolarPlot;import org.jfree.chart.plot.RingPlot;import org.jfree.chart.plot.ValueMarker;import org.jfree.chart.plot.WaferMapPlot;import org.jfree.chart.plot.XYPlot;import org.jfree.chart.renderer.DefaultPolarItemRenderer;import org.jfree.chart.renderer.WaferMapRenderer;import org.jfree.chart.renderer.category.AreaRenderer;import org.jfree.chart.renderer.category.BarRenderer;import org.jfree.chart.renderer.category.BarRenderer3D;import org.jfree.chart.renderer.category.CategoryItemRenderer;import org.jfree.chart.renderer.category.GanttRenderer;import org.jfree.chart.renderer.category.LineAndShapeRenderer;import org.jfree.chart.renderer.category.LineRenderer3D;import org.jfree.chart.renderer.category.StackedAreaRenderer;import org.jfree.chart.renderer.category.StackedBarRenderer;import org.jfree.chart.renderer.category.StackedBarRenderer3D;import org.jfree.chart.renderer.category.WaterfallBarRenderer;import org.jfree.chart.renderer.xy.CandlestickRenderer;import org.jfree.chart.renderer.xy.HighLowRenderer;import org.jfree.chart.renderer.xy.SignalRenderer;import org.jfree.chart.renderer.xy.StackedXYAreaRenderer;import org.jfree.chart.renderer.xy.StandardXYItemRenderer;import org.jfree.chart.renderer.xy.WindItemRenderer;import org.jfree.chart.renderer.xy.XYAreaRenderer;import org.jfree.chart.renderer.xy.XYBarRenderer;import org.jfree.chart.renderer.xy.XYBoxAndWhiskerRenderer;import org.jfree.chart.renderer.xy.XYBubbleRenderer;import org.jfree.chart.renderer.xy.XYItemRenderer;import org.jfree.chart.renderer.xy.XYLineAndShapeRenderer;import org.jfree.chart.renderer.xy.XYStepAreaRenderer;import org.jfree.chart.renderer.xy.XYStepRenderer;import org.jfree.chart.title.TextTitle;import org.jfree.chart.urls.PieURLGenerator;import org.jfree.chart.urls.StandardCategoryURLGenerator;import org.jfree.chart.urls.StandardPieURLGenerator;import org.jfree.chart.urls.StandardXYURLGenerator;import org.jfree.chart.urls.StandardXYZURLGenerator;import org.jfree.chart.urls.XYURLGenerator;import org.jfree.data.category.CategoryDataset;import org.jfree.data.category.IntervalCategoryDataset;import org.jfree.data.general.DefaultPieDataset;import org.jfree.data.general.PieDataset;import org.jfree.data.general.WaferMapDataset;import org.jfree.data.statistics.BoxAndWhiskerXYDataset;import org.jfree.data.xy.IntervalXYDataset;import org.jfree.data.xy.OHLCDataset;import org.jfree.data.xy.SignalsDataset;import org.jfree.data.xy.TableXYDataset;import org.jfree.data.xy.WindDataset;import org.jfree.data.xy.XYDataset;import org.jfree.data.xy.XYZDataset;import org.jfree.ui.Layer;import org.jfree.ui.RectangleEdge;import org.jfree.ui.RectangleInsets;import org.jfree.ui.TextAnchor;import org.jfree.util.SortOrder;import org.jfree.util.TableOrder;/** * A collection of utility methods for creating some standard charts with * JFreeChart. */public abstract class ChartFactory { /** * Creates a pie chart with default settings. * <P> * The chart object returned by this method uses a {@link PiePlot} instance * as the plot. * * @param title the chart title (<code>null</code> permitted). * @param dataset the dataset for the chart (<code>null</code> permitted). * @param legend a flag specifying whether or not a legend is required. * @param tooltips configure chart to generate tool tips? * @param urls configure chart to generate URLs? * * @return A pie chart. */ public static JFreeChart createPieChart(String title, PieDataset dataset, boolean legend, boolean tooltips, boolean urls) { PiePlot plot = new PiePlot(dataset); plot.setLabelGenerator(new StandardPieItemLabelGenerator()); plot.setInsets(new RectangleInsets(0.0, 5.0, 5.0, 5.0)); if (tooltips) { plot.setToolTipGenerator( new StandardPieItemLabelGenerator( StandardPieItemLabelGenerator.DEFAULT_SECTION_LABEL_FORMAT ) ); } if (urls) { plot.setURLGenerator(new StandardPieURLGenerator()); } return new JFreeChart( title, JFreeChart.DEFAULT_TITLE_FONT, plot, legend ); } /** * Creates a pie chart with default settings that compares 2 datasets. * The colour of each section will be determined by the move from the value * for the same key in <code>previousDataset</code>. ie if value1 > value2 * then the section will be in green (unless <code>greenForIncrease</code> * is <code>false</code>, in which case it would be <code>red</code>). * Each section can have a shade of red or green as the difference can be * tailored between 0% (black) and percentDiffForMaxScale% (bright * red/green). * <p> * For instance if <code>percentDiffForMaxScale</code> is 10 (10%), a * difference of 5% will have a half shade of red/green, a difference of * 10% or more will have a maximum shade/brightness of red/green. * <P> * The chart object returned by this method uses a {@link PiePlot} instance * as the plot. * <p> * Written by <a href="mailto:opensource@objectlab.co.uk">Benoit * Xhenseval</a>. * * @param title the chart title (<code>null</code> permitted). * @param dataset the dataset for the chart (<code>null</code> permitted). * @param previousDataset the dataset for the last run, this will be used * to compare each key in the dataset * @param percentDiffForMaxScale scale goes from bright red/green to black, * percentDiffForMaxScale indicate the change * required to reach top scale. * @param greenForIncrease an increase since previousDataset will be * displayed in green (decrease red) if true. * @param legend a flag specifying whether or not a legend is required. * @param tooltips configure chart to generate tool tips? * @param urls configure chart to generate URLs? * @param subTitle displays a subtitle with colour scheme if true * @param showDifference create a new dataset that will show the % * difference between the two datasets. * * @return A pie chart. */ public static JFreeChart createPieChart(String title, PieDataset dataset, PieDataset previousDataset, int percentDiffForMaxScale, boolean greenForIncrease, boolean legend, boolean tooltips, boolean urls, boolean subTitle, boolean showDifference) { PiePlot plot = new PiePlot(dataset); plot.setLabelGenerator(new StandardPieItemLabelGenerator()); plot.setInsets(new RectangleInsets(0.0, 5.0, 5.0, 5.0)); if (tooltips) { plot.setToolTipGenerator( new StandardPieItemLabelGenerator( StandardPieItemLabelGenerator.DEFAULT_SECTION_LABEL_FORMAT ) );
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?