`
mywebcode
  • 浏览: 1004629 次
文章分类
社区版块
存档分类
最新评论

JFreeChart 图表使用

 
阅读更多
首先从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= 为固定不变的.后面为生成图片的名称
-->

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics