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 + -
显示快捷键?