45fan.com - 路饭网

搜索: 您的位置主页 > 网络频道 > 阅读资讯:入门使用JFreeChart知识

入门使用JFreeChart知识

2016-09-05 10:55:41 来源:www.45fan.com 【

入门使用JFreeChart知识

JFreeChart 入门与使用

<script type="text/javascript"><!-- google_ad_client = "pub-3804432954034391"; google_ad_width = 728; google_ad_height = 90; google_ad_format = "728x90_as"; google_ad_type = "text_image"; google_ad_channel = ""; //--></script><script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"> </script>

一、下载

到http://www.jfree.org/网站可以获得最新的版本

下面以JFREECHART: Version 1.0.2为例子来讲述

二、解压

我们需要从解压文件中找到必需的开发包即可。

让我们来阅读一下它的Readme文件:

(a) JDK 1.3.1 or higher

(b) JCommon - version 1.0.0 or later.

- jcommon-1.0.5.jar

这个在解压目录lib里面已经有1.0.5版,不过你也可以在jfree网站指引下下载最新的版本。

(c) GNU JAXP

- gnujaxp.jar

在org.jfree.data.xml包中的类需要用到这个库, 或者其他兼容 JAXP v1.1 的分析器.

但是有一点要说明:只有在你使用JDK1.3的情况下才需要这个库。

(d) servlet.jar

如果你需要用到org.jfree.chart.servlet包中的类的时候,就需要这个库。

如果你用于web开发,这个库一般都会随web开发工具或者服务器发布。不需要额外添加。

(e) JUnit

当你需要用于用到JUnit测试时才要求这个库。

三、建立项目

使用Eclipse建立一个Java Project,命名为"charttest"

* JRE 1.5

* 源路径 src/jfreechart

* 目标路径 WebContent/WEB-INF/class

把$JFREECHART/lib下面的jcommon-1.0.5.jar,jfreechart-1.0.2.jar,junit.jar

复制到WebContent/WEB-INF/lib目录下,然后在构建路径(Build Path)中添加上述path

如果您的JRE并不包含servlet.jar,那么你还需要把servlet.jar添加到构建路径(Build Path)中。

四、测试

还是采取“C2C”的手法,什么是C2C? 这是外国朋友赐予我们中国人高超的编程技巧的美誉“Copy To China”.

搜索到ibm网站有一篇文章,刘冬的“使用 JFreeChart来创建基于web的图表”,摘取片断并修改用于测试。

4.1 柱状图

把下面代码粘贴到你新建的类BarChartDemo中,选择菜单Run as -> Java Application 即可看到输出文件D:/fruit.jpg.

import java.io.FileOutputStream;

import java.io.IOException;

import org.jfree.chart.ChartFactory;

import org.jfree.chart.ChartUtilities;

import org.jfree.chart.JFreeChart;

import org.jfree.chart.plot.PlotOrientation;

import org.jfree.data.category.CategoryDataset;

import org.jfree.data.category.DefaultCategoryDataset;

/**

* 该类用于演示最简单的柱状图生成

* @author Winter Lau

* @modifier Samland Leung

*/

public class BarChartDemo {

public static void main(String[] args) throws IOException{

CategoryDataset dataset = getDataSet2();

JFreeChart chart = ChartFactory.createBarChart3D(

"水果产量图", // 图表标题

"水果", // 目录轴的显示标签

"产量", // 数值轴的显示标签

dataset, // 数据集

PlotOrientation.VERTICAL, // 图表方向:水平、垂直

true, // 是否显示图例(对于简单的柱状图必须是false)

false, // 是否生成工具

false // 是否生成URL链接

);

FileOutputStream fos_jpg = null;

try {

fos_jpg = new FileOutputStream("D://fruit.jpg");

ChartUtilities.writeChartAsJPEG(fos_jpg,0.8f,chart,400,300,null);

} finally {

try {

fos_jpg.close();

} catch (Exception e) {

System.out.println(e.getMessage());

}

}

}

/**

* 获取一个演示用的组合数据集对象

* @return

*/

private static CategoryDataset getDataSet2() {

DefaultCategoryDataset dataset = new DefaultCategoryDataset();

dataset.addValue(100, "北京", "苹果");

dataset.addValue(100, "上海", "苹果");

dataset.addValue(100, "广州", "苹果");

dataset.addValue(200, "北京", "梨子");

dataset.addValue(200, "上海", "梨子");

dataset.addValue(200, "广州", "梨子");

dataset.addValue(300, "北京", "葡萄");

dataset.addValue(300, "上海", "葡萄");

dataset.addValue(300, "广州", "葡萄");

dataset.addValue(400, "北京", "香蕉");

dataset.addValue(400, "上海", "香蕉");

dataset.addValue(400, "广州", "香蕉");

dataset.addValue(500, "北京", "荔枝");

dataset.addValue(500, "上海", "荔枝");

dataset.addValue(500, "广州", "荔枝");

return dataset;

}

}

4.2 饼图

/**

* 用于演示饼图的生成

* @author Winter Lau

* @modifier Samland Leung

*/

public class PieChartDemo {

public static void main(String[] args) throws IOException{

DefaultPieDataset data = getDataSet();

JFreeChart chart = ChartFactory.createPieChart3D("水果产量图", // 图表标题

data,

true, // 是否显示图例

false,

false

);

//写图表对象到文件,参照柱状图生成源码

FileOutputStream fos_jpg = null;

try {

fos_jpg = new FileOutputStream("D://fruit.png");

ChartUtilities.writeChartAsPNG(fos_jpg,chart,400,300,null);

} finally {

try {

fos_jpg.close();

} catch (Exception e) {

System.out.println(e.getMessage());

}

}

}

/**

* 获取一个演示用的简单数据集对象

* @return

*/

private static DefaultPieDataset getDataSet() {

DefaultPieDataset dataset = new DefaultPieDataset();

dataset.setValue("苹果",100);

dataset.setValue("梨子",200);

dataset.setValue("葡萄",300);

dataset.setValue("香蕉",400);

dataset.setValue("荔枝",500);

return dataset;

}

}

五、解说

要建立一個JFreeChart的圖形主要有三個步驟

1.建立一個擁有資料的DataSet

2.用DataSet創造JFreeChart

*.對JFreeChart作一些自訂的設計

3.顯示JFreeChart

下面也是“C2C”回来的一段代码:

public HelloBarChart(){

CategoryDataset dataset = createDataset(); //1.建立一個擁有資料的DataSet

JFreeChart chart = createChart(dataset); //2.用DataSet創造JFreeChart

chart = customizeChart(chart); //*.對JFreeChart作一些自訂的設計

ChartPanel chartPanel = new ChartPanel(chart); //3.顯示JFreeChart

chartPanel.setPreferredSize(new Dimension(500, 270));

getContentPane().add(chartPanel);

pack();

setVisible(true);

setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

}

private 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.5, series1, category1);

dataset.addValue(4.2, series1, category2);

dataset.addValue(3.0, series1, category3);

dataset.addValue(5.0, series1, category4);

dataset.addValue(5.0, series1, category5);

dataset.addValue(5.5, series2, category1);

dataset.addValue(7.8, 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;

}

private JFreeChart createChart(final CategoryDataset dataset){

JFreeChart chart = ChartFactory.createBarChart(

"Hello Bar Chart", // chart title

"Category", // domain axis label

"Value", // range axis label

dataset, // data

PlotOrientation.VERTICAL, // orientation

true, // include legend

true, // tooltips?

false // URLs?

);

return chart;

}

private JFreeChart customizeChart(final JFreeChart chart){

return chart;

}

}

参考资料:

http://www-128.ibm.com/developerworks/cn/java/l-jfreechart/

http://www.ice.ntnu.edu.tw/~swanky/jfreechart/BarChart.htm

http://www.cnweblog.com/sundy/archive/2005/08/12/24480.aspx

 

本文地址:http://www.45fan.com/a/question/72590.html
Tags: 入门 HTTP JFreeChart
编辑:路饭网
关于我们 | 联系我们 | 友情链接 | 网站地图 | Sitemap | App | 返回顶部