JFreeChart 图表使用

来源:互联网 发布:水果编曲软件中文版 编辑:程序博客网 时间:2024/04/26 05:42
首先从http://jfreechart.org 官方中获取最新版本插件(本例采用版本jfreechart-1.0.13)

第一步:将所需要的jar包放入到lib目录底下(jfreechart-1.0.13.jar,jfreechart-1.0.13-experimental.jar,jcommon-1.0.16.jar )

 

 

第二部:创建树状图

新建JFreeCharatTest类

package org.cxg.jfreechart;

import java.awt.Font;

import javax.swing.JPanel;

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.plot.CategoryPlot;
import org.jfree.chart.plot.PlotOrientation;
import org.jfree.chart.title.TextTitle;
import org.jfree.data.category.CategoryDataset;
import org.jfree.data.category.DefaultCategoryDataset;
import org.jfree.ui.ApplicationFrame;

public class JFreeCharatTest extends ApplicationFrame {

 
 public JFreeCharatTest(String title){
  super(title);  
  this.setContentPane(createPanel());
  
 }
 
 //创建数据集
 public static CategoryDataset createDataset(){
  
  //创建树状图数据集实例
  DefaultCategoryDataset dataset = new DefaultCategoryDataset();
  dataset.setValue(10, "", "管理人员");
  dataset.setValue(20, "", "市场人员");
  dataset.setValue(40, "", "开发人员");
  dataset.setValue(15, "", "其他人员");
  return dataset;
 }
 
 
 
 //创建图标对象
 public static JFreeChart jFreeCharat(CategoryDataset dataset){
  JFreeChart jFreeCharat = ChartFactory.createBarChart("某公司组织结构图", "人员分别", "人员数量", dataset, PlotOrientation.HORIZONTAL, false, true, true);
  
  
  //从新设置标题自己...此操作也可以不做
  jFreeCharat.setTitle(new TextTitle("某公司组织结构图", new Font("微软雅黑",Font.BOLD,12)));
  
  
  //下面代码可以不写.它的作用是设置横坐标的字体
/*  //创建图表对象  
  CategoryPlot plot = (CategoryPlot)jFreeCharat.getPlot();
  //得到数据范围,获得横坐标
  CategoryAxis axis = plot.getDomainAxis();
  //设置横坐标的字体
  axis.setLabelFont(new Font("微软雅黑", Font.BOLD, 12));*/
  
  return jFreeCharat;
 }
 
 
 //将整个图标放到JPanel中
 public static JPanel createPanel(){
  JFreeChart chart = jFreeCharat(createDataset());
  
  return new ChartPanel(chart);
 }
 
 
 public static void main(String[] args) {
  JFreeCharatTest test = new JFreeCharatTest("某公司组织结构图");
  //调整窗口大小
  test.pack();
  test.setVisible(true);
 }
}

 

 

 

 

 

 

 

 

 


/**
 *    基本思路
 *    1.首先通过createDataset()方法创建数据集.并将对象返回
 *      创建数据集需要DefaultCategoryDataset实例进行创建
 *    2.通过jFreeCharat()方法创建整个图表对象(即JFreeChart实例)
 *      通过ChartFactory工厂类创建  ChartFactory.createBarChart("....");
 *      里面有8个参数
 *      第一个表示      标题 
 *      第二个表示     横坐标的名称
 *      第三个表示     纵坐标的名称
 *      第四个表示     数据集对象
 *      第五个表示     树状头的位置  (垂直:PlotOrientation.VERTICAL  和  水平:PlotOrientation.HORIZONTAL)
 *      第六个表示     是否产生图例说明
 *      第七个表示    是否产生提示
 *      第八个表示    是否产生URL
 *    3.通过createPanel()方法讲图表对象放入JPanel中,(注意:JFreeChart为我们提供了一个ChartPanel类,我们只需实例化讲图表对象传入)
 *    4.继承ApplicationFrame类.调用父类构造方法把左上角的标题传入,并讲JPanel对象this.setContentPane(JPanel对象)方法中.
 *    5.main方法进行测试
 *   
 *    
 */

 

 

在JAVASE创建饼图并生成图片

package org.cxg.jfreechart;
import java.awt.Font;
import java.io.FileOutputStream;
import java.io.OutputStream;
import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartUtilities;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.title.LegendTitle;
import org.jfree.chart.title.TextTitle;
import org.jfree.data.general.DefaultPieDataset;
public class JFreeCharatTest2 {
 public static void main(String[] args) throws Exception {
  
  //创建饼图对象
  JFreeChart charat = ChartFactory.createPieChart("某公司组织结构图",defaultPieDataset(),true,false,false);
  
  charat.setTitle(new TextTitle("某公司组织结构图", new Font("微软雅黑",Font.BOLD,12)));
  
//  LegendTitle title = charat.getLegend(0);
  
  
  OutputStream output  = new FileOutputStream("abc.jpeg");
  
  //输出图标.变为一张图片
  ChartUtilities.writeChartAsJPEG(output, charat, 1000, 800);
  
  output.close();
 }
 
 //创建饼图数据集
 private static DefaultPieDataset defaultPieDataset(){
  DefaultPieDataset dataset = new DefaultPieDataset();
  dataset.setValue("管理人员", 25);
  dataset.setValue("市场人员", 25);
  dataset.setValue("开发人员", 45);
  dataset.setValue("其他人员", 10);
  return dataset;
 }
 
 /**
  *   1. 首先通过DefaultPieDataset()方法创建饼图数据集(注意: 创建饼图数据集的类为DefaultPieDataset)
  *   2. 在main方法中创建饼图对象,并通过输出流(OutputStream)创建一张jpg的图片
  *   3. 通过JFreeChart提供的ChartUtilities.writeChartAsJPEG(output, charat, 1000, 800);方法将类容写入到图片中
  *      第一个参数表示    输出流对象
  *      第二个参数表示    饼图对象
  *      第三个和第四参数表示    图片宽度和高度
  *   执行main方法后,会在项目的根目录下生成一张图片,刷新项目就可以看到
  */
}

在javaWEB中生成饼图并生成图片

 <%
  DefaultPieDataset dataset = new DefaultPieDataset();
  dataset.setValue("管理人员", 25);
  dataset.setValue("市场人员", 25);
  dataset.setValue("开发人员", 45);
  dataset.setValue("其他人员", 10);
  
  JFreeChart charat = ChartFactory.createPieChart3D("某公司组织结构图",dataset,true,false,false);
  String fileName = ServletUtilities.saveChartAsPNG(charat,1000,800,session);
  
  String url = request.getContextPath() + "/DisplayChart?filename=" + fileName;
  
 %>
 
 <img src="<%=url %>" width="1000" height="800">

<!-- 
 这里只需要注意生成URL的/DisplayChart?filename= 为固定不变的.后面为生成图片的名称
 -->

 
 

原创粉丝点击