JFreeChart 画图

来源:互联网 发布:fast迅捷网络手机软件 编辑:程序博客网 时间:2024/05/01 20:33

首先,需要把要用到的两个jar包下来,本例用的是jfreechart-1.0.10.jar,jcommon-1.0.13.jar。可以到该项目的官方网站上下载:http://www.jfree.org/,下面是jfreechart-1.0.10.jar包中org.jfree.chart.demo目录下的一个例子. 

以下是代码:

package com.test.jfreechart;

import java.awt.Color;
import java.awt.Dimension;
import java.awt.GradientPaint;

import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartPanel;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.axis.CategoryAxis;
import org.jfree.chart.axis.CategoryLabelPositions;
import org.jfree.chart.axis.NumberAxis;
import org.jfree.chart.demo.BarChartDemo1;
import org.jfree.chart.plot.CategoryPlot;
import org.jfree.chart.plot.PlotOrientation;
import org.jfree.chart.renderer.category.BarRenderer;
import org.jfree.data.category.CategoryDataset;
import org.jfree.data.category.DefaultCategoryDataset;
import org.jfree.ui.ApplicationFrame;
import org.jfree.ui.RefineryUtilities;

public class BarChartDemo extends ApplicationFrame {

/**
* Creates a new demo instance.
*
* @param title
*            the frame title.
*/
public BarChartDemo(String title) {
   super(title);
   CategoryDataset dataset = createDataset();
   JFreeChart chart = createChart(dataset);
   ChartPanel chartPanel = new ChartPanel(chart, false);
   chartPanel.setPreferredSize(new Dimension(500, 270));
   setContentPane(chartPanel);
}

/**
* Returns a sample dataset.
*
* @return The dataset.
*/
private static CategoryDataset createDataset() {

   // row keys...
   String series1 = "First";
   String series2 = "Second";
   String series3 = "Third";

   // column keys...
   String category1 = "Category 1";
   String category2 = "Category 2";
   String category3 = "Category 3";
   String category4 = "Category 4";
   String category5 = "Category 5";

   // create the dataset...
   DefaultCategoryDataset dataset = new DefaultCategoryDataset();

   dataset.addValue(1.0, series1, category1);
   dataset.addValue(4.0, series1, category2);
   dataset.addValue(3.0, series1, category3);
   dataset.addValue(5.0, series1, category4);
   dataset.addValue(5.0, series1, category5);

   dataset.addValue(5.0, series2, category1);
   dataset.addValue(7.0, series2, category2);
   dataset.addValue(6.0, series2, category3);
   dataset.addValue(8.0, series2, category4);
   dataset.addValue(4.0, series2, category5);

   dataset.addValue(4.0, series3, category1);
   dataset.addValue(3.0, series3, category2);
   dataset.addValue(2.0, series3, category3);
   dataset.addValue(3.0, series3, category4);
   dataset.addValue(6.0, series3, category5);

   return dataset;

}

/**
* Creates a sample chart.
*
* @param dataset
*            the dataset.
*
* @return The chart.
*/
private static JFreeChart createChart(CategoryDataset dataset) {

   // create the chart...
   JFreeChart chart = ChartFactory.createBarChart("Bar Chart Demo 1", // chart
                    // title
     "Category", // domain axis label
     "Value", // range axis label
     dataset, // data
     PlotOrientation.VERTICAL, // 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(Color.white);

   // get a reference to the plot for further customisation...
   CategoryPlot plot = (CategoryPlot) chart.getPlot();
   plot.setBackgroundPaint(Color.lightGray);
   plot.setDomainGridlinePaint(Color.white);
   plot.setDomainGridlinesVisible(true);
   plot.setRangeGridlinePaint(Color.white);

   // ******************************************************************
   // More than 150 demo applications are included with the JFreeChart
   // Developer Guide...for more information, see:
   //
   // > http://www.object-refinery.com/jfreechart/guide.html
   //
   // ******************************************************************

   // set the range axis to display integers only...
   final NumberAxis rangeAxis = (NumberAxis) plot.getRangeAxis();
   rangeAxis.setStandardTickUnits(NumberAxis.createIntegerTickUnits());

   // disable bar outlines...
   BarRenderer renderer = (BarRenderer) plot.getRenderer();
   renderer.setDrawBarOutline(false);

   // set up gradient paints for series...
   GradientPaint gp0 = new GradientPaint(0.0f, 0.0f, Color.blue, 0.0f,
     0.0f, new Color(0, 0, 64));
   GradientPaint gp1 = new GradientPaint(0.0f, 0.0f, Color.green, 0.0f,
     0.0f, new Color(0, 64, 0));
   GradientPaint gp2 = new GradientPaint(0.0f, 0.0f, Color.red, 0.0f,
     0.0f, new Color(64, 0, 0));
   renderer.setSeriesPaint(0, gp0);
   renderer.setSeriesPaint(1, gp1);
   renderer.setSeriesPaint(2, gp2);

   CategoryAxis domainAxis = plot.getDomainAxis();
   domainAxis.setCategoryLabelPositions(CategoryLabelPositions
     .createUpRotationLabelPositions(Math.PI / 6.0));
   // OPTIONAL CUSTOMISATION COMPLETED.

   return chart;

}

/**
* Starting point for the demonstration application.
*
* @param args
*            ignored.
*/
public static void main(String[] args) {
   BarChartDemo1 demo = new BarChartDemo1("Bar Chart Demo 1");
   demo.pack();
   RefineryUtilities.centerFrameOnScreen(demo);
   demo.setVisible(true);
}

}