001: /* ===========================================================
002: * JFreeChart : a free chart library for the Java(tm) platform
003: * ===========================================================
004: *
005: * (C) Copyright 2000-2007, by Object Refinery Limited and Contributors.
006: *
007: * Project Info: http://www.jfree.org/jfreechart/index.html
008: *
009: * This library is free software; you can redistribute it and/or modify it
010: * under the terms of the GNU Lesser General Public License as published by
011: * the Free Software Foundation; either version 2.1 of the License, or
012: * (at your option) any later version.
013: *
014: * This library is distributed in the hope that it will be useful, but
015: * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
016: * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
017: * License for more details.
018: *
019: * You should have received a copy of the GNU Lesser General Public
020: * License along with this library; if not, write to the Free Software
021: * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
022: * USA.
023: *
024: * [Java is a trademark or registered trademark of Sun Microsystems, Inc.
025: * in the United States and other countries.]
026: *
027: * ------------------
028: * BarChartDemo1.java
029: * ------------------
030: * (C) Copyright 2003-2007, by Object Refinery Limited and Contributors.
031: *
032: * Original Author: David Gilbert (for Object Refinery Limited);
033: * Contributor(s): ;
034: *
035: * $Id: BarChartDemo1.java,v 1.1.2.4 2007/03/02 10:45:23 mungady Exp $
036: *
037: * Changes
038: * -------
039: * 09-Mar-2005 : Version 1 (DG);
040: *
041: */
042:
043: package org.jfree.chart.demo;
044:
045: import java.awt.Color;
046: import java.awt.Dimension;
047: import java.awt.GradientPaint;
048:
049: import org.jfree.chart.ChartFactory;
050: import org.jfree.chart.ChartPanel;
051: import org.jfree.chart.JFreeChart;
052: import org.jfree.chart.axis.CategoryAxis;
053: import org.jfree.chart.axis.CategoryLabelPositions;
054: import org.jfree.chart.axis.NumberAxis;
055: import org.jfree.chart.plot.CategoryPlot;
056: import org.jfree.chart.plot.PlotOrientation;
057: import org.jfree.chart.renderer.category.BarRenderer;
058: import org.jfree.data.category.CategoryDataset;
059: import org.jfree.data.category.DefaultCategoryDataset;
060: import org.jfree.ui.ApplicationFrame;
061: import org.jfree.ui.RefineryUtilities;
062:
063: /**
064: * A simple demonstration application showing how to create a bar chart.
065: */
066: public class BarChartDemo1 extends ApplicationFrame {
067:
068: /**
069: * Creates a new demo instance.
070: *
071: * @param title the frame title.
072: */
073: public BarChartDemo1(String title) {
074: super (title);
075: CategoryDataset dataset = createDataset();
076: JFreeChart chart = createChart(dataset);
077: ChartPanel chartPanel = new ChartPanel(chart, false);
078: chartPanel.setPreferredSize(new Dimension(500, 270));
079: setContentPane(chartPanel);
080: }
081:
082: /**
083: * Returns a sample dataset.
084: *
085: * @return The dataset.
086: */
087: private static CategoryDataset createDataset() {
088:
089: // row keys...
090: String series1 = "First";
091: String series2 = "Second";
092: String series3 = "Third";
093:
094: // column keys...
095: String category1 = "Category 1";
096: String category2 = "Category 2";
097: String category3 = "Category 3";
098: String category4 = "Category 4";
099: String category5 = "Category 5";
100:
101: // create the dataset...
102: DefaultCategoryDataset dataset = new DefaultCategoryDataset();
103:
104: dataset.addValue(1.0, series1, category1);
105: dataset.addValue(4.0, series1, category2);
106: dataset.addValue(3.0, series1, category3);
107: dataset.addValue(5.0, series1, category4);
108: dataset.addValue(5.0, series1, category5);
109:
110: dataset.addValue(5.0, series2, category1);
111: dataset.addValue(7.0, series2, category2);
112: dataset.addValue(6.0, series2, category3);
113: dataset.addValue(8.0, series2, category4);
114: dataset.addValue(4.0, series2, category5);
115:
116: dataset.addValue(4.0, series3, category1);
117: dataset.addValue(3.0, series3, category2);
118: dataset.addValue(2.0, series3, category3);
119: dataset.addValue(3.0, series3, category4);
120: dataset.addValue(6.0, series3, category5);
121:
122: return dataset;
123:
124: }
125:
126: /**
127: * Creates a sample chart.
128: *
129: * @param dataset the dataset.
130: *
131: * @return The chart.
132: */
133: private static JFreeChart createChart(CategoryDataset dataset) {
134:
135: // create the chart...
136: JFreeChart chart = ChartFactory.createBarChart(
137: "Bar Chart Demo 1", // chart title
138: "Category", // domain axis label
139: "Value", // range axis label
140: dataset, // data
141: PlotOrientation.VERTICAL, // orientation
142: true, // include legend
143: true, // tooltips?
144: false // URLs?
145: );
146:
147: // NOW DO SOME OPTIONAL CUSTOMISATION OF THE CHART...
148:
149: // set the background color for the chart...
150: chart.setBackgroundPaint(Color.white);
151:
152: // get a reference to the plot for further customisation...
153: CategoryPlot plot = (CategoryPlot) chart.getPlot();
154: plot.setBackgroundPaint(Color.lightGray);
155: plot.setDomainGridlinePaint(Color.white);
156: plot.setDomainGridlinesVisible(true);
157: plot.setRangeGridlinePaint(Color.white);
158:
159: // ******************************************************************
160: // More than 150 demo applications are included with the JFreeChart
161: // Developer Guide...for more information, see:
162: //
163: // > http://www.object-refinery.com/jfreechart/guide.html
164: //
165: // ******************************************************************
166:
167: // set the range axis to display integers only...
168: final NumberAxis rangeAxis = (NumberAxis) plot.getRangeAxis();
169: rangeAxis.setStandardTickUnits(NumberAxis
170: .createIntegerTickUnits());
171:
172: // disable bar outlines...
173: BarRenderer renderer = (BarRenderer) plot.getRenderer();
174: renderer.setDrawBarOutline(false);
175:
176: // set up gradient paints for series...
177: GradientPaint gp0 = new GradientPaint(0.0f, 0.0f, Color.blue,
178: 0.0f, 0.0f, new Color(0, 0, 64));
179: GradientPaint gp1 = new GradientPaint(0.0f, 0.0f, Color.green,
180: 0.0f, 0.0f, new Color(0, 64, 0));
181: GradientPaint gp2 = new GradientPaint(0.0f, 0.0f, Color.red,
182: 0.0f, 0.0f, new Color(64, 0, 0));
183: renderer.setSeriesPaint(0, gp0);
184: renderer.setSeriesPaint(1, gp1);
185: renderer.setSeriesPaint(2, gp2);
186:
187: CategoryAxis domainAxis = plot.getDomainAxis();
188: domainAxis.setCategoryLabelPositions(CategoryLabelPositions
189: .createUpRotationLabelPositions(Math.PI / 6.0));
190: // OPTIONAL CUSTOMISATION COMPLETED.
191:
192: return chart;
193:
194: }
195:
196: /**
197: * Starting point for the demonstration application.
198: *
199: * @param args ignored.
200: */
201: public static void main(String[] args) {
202: BarChartDemo1 demo = new BarChartDemo1("Bar Chart Demo 1");
203: demo.pack();
204: RefineryUtilities.centerFrameOnScreen(demo);
205: demo.setVisible(true);
206: }
207:
208: }
|