手机站
网通分站
电信主站
密 码:
用户名:
当前位置 : 主页>程序设计>Java技术>列表

学习JFreeChart(一)

来源:互联网 作者:west263.com 时间:2008-02-23
西部数码-全国虚拟主机10强!40余项虚拟主机管理功能,全国领先!双线多线虚拟主机南北访问畅通无阻!免费赠送企业邮局,.CN域名,自助建站480元起,免费试用7天,满意再付款! P4主机租用799元/月.月付免压金!

最近由于项目需要,开始学习JFreeChart和iText,在网上找了一下相关的资料不是很多,特别是JFreeChart在官方文档上没有像iText那样详尽的说明及例子,而且官方的demo只有一个jar文件,里面也比较乱,不知道从什么地方下手,在网上找了几个例子,开始循序渐进的学吧!

第一个例子是个台湾人写的,很多的名词都是用的台湾说法,读过侯捷先生翻译的书的朋友应该有很深的体会!学习任何一个开源的项目第一个任务就是配环境,

JFreeChart 首頁:
http://www.jfree.org/jfreechart/

JFreeChart API:
http://www.jfree.org/jfreechart/javadoc/

目前的版本:jfreechart-1.0.0
具体的安装和classpath的配置就不多说了

上面就是该例子要生成的柱状图!代码如下:

package HelloJChart;
import Java.awt.Dimension;

import javax.Swing.JFrame;

import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartPanel;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.plot.PlotOrientation;
import org.jfree.data.category.CategoryDataset;
import org.jfree.data.category.DefaultCategoryDataset;

public class HelloBarChart extends JFrame{
public HelloBarChart(){
CategoryDataset dataset = createDataset();
JFreeChart chart = createChart(dataset);
chart = customizeChart(chart);
ChartPanel chartPanel = new ChartPanel(chart);
chartPanel.setPreferredSize(new Dimension(500, 270));
getContentPane().add(chartPanel);

pack();
setVisible(true);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}

public static void main(String[] args){
new HelloBarChart();
}

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;
}
}

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

  1. 建立一個擁有資料的DataSet
  2. 用DataSet創造JFreeChart
  3. JFreeChart作一些自訂的設計
  4. 顯示JFreeChart

第一步:建立DataSet

BarChart使用的DataSet接口org.jfree.data.CategoryDataset的DataSet。
有兩種方式來建立CategoryDataSet

  • 使用CategoryDataSet的子类org.jfree.data.DefaultCategoryDataset,再用addValue()把資料加入DataSet中
  • 建立包含數值的二維陣列,再使用org.jfree.data.DatasetUtilitiescreateCategoryDataset()

使用DefaultCategoryDataSet

DefaultCategoryDataSet class:

public void addValue(double value

文章整理:西部数码--专业提供域名注册虚拟主机服务
http://www.west263.com
以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!