JfreeChart 入门

 

一、JFreeChart获取。
        JFreeChart
JFreeChart公司在开源网站SourceForge.net上的一个项目,该公司的主要产品有如下:
        1
JFreeReport:报表解决工具
        2
JFreeChartJava图形解决方案(Application/Applet/Servlet/Jsp
        3
JCommonJFreeReportJFreeChart的公共类库
        4
JFreeDesignerJFreeReport的报表设计工具

   我们可以从jfree官方网站上获取最新版本(最新的版本是1.0.5)和相关资料(但是jfreeDeveloper Guides需要花美金才能获取),
    
获取地址:http://www.jfree.org/jfreechart/index.html(同时可以获得简明介绍)
    
我们以当前版本:jfreechart-1.0.0-rc3.tar.gz为例子进行说明

二、JFreeChart配置安装
    1
、解压jfreechart_0.9.21.zip到指定位置,其中sourcejfreechart的源码,jfreechart-0.9.21-demo.jar
       
是例子程序(该部分留给大家自己去研究)

    2
、为了配置成功,我们需要关注的文件有如下三个:jfreechart-0.9.21.jarlib/jcommon-0.9.6.jar
       lib/gnujaxp.jar
    3
、如果是Application开发,把上述三个文件拷贝到%JAVA_HOME%/LIB中,同时在环境变量CLASSPATH中加入
       
如果是WEB开发,以TOMCAT中的一个WEB项目TEST为例子说明:
       
把上述三个文件拷贝到TEST/WEB-INF/LIB中,然后修改TEST/WEB-INF/web.xml文件,在其中加入如下代码:
                <servlet>
                    <servlet-name>DisplayChart</servlet-name>
                    <servlet-class>org.jfree.chart.servlet.DisplayChart</servlet-class>
                </servlet>
                <servlet-mapping>
                    <servlet-name>DisplayChart</servlet-name>
                    <url-pattern>/servlet/DisplayChart</url-pattern>
                </servlet-mapping>
               
至此jfreechart的配置就完成了,下面就可以进行jfreechart的开发了。这里值得提出的是jfreechart的类
       
结构设计前后兼容性不是很好,不同版本的jfreechart中类库结构可能不一样,有时候可能需要查源码。如果
       
是中文显示的时候可能依据观感需要改变源码的字体,不过我个人觉得这个版本比以前版本要好一些。

三、JFreeChart功能介绍
    JFreeChart
目前是最好的java图形解决方案,基本能够解决目前的图形方面的需求,主要包括如下几个方面:
    pie charts (2D and 3D)
:饼图(平面和立体)
    bar charts (regular and stacked, with an optional 3D effect)
:柱状图
    line and area charts
:曲线图
    scatter plots and bubble charts
    time series, high/low/open/close charts and candle stick charts
:时序图
    combination charts
:复合图
    Pareto charts
    Gantt charts
:甘特图
    wind plots, meter charts and symbol charts
    wafer map charts
    (
态图表,饼图(二维和三维) , 柱状图 (水平,垂直),线图,点图,时间变化图,甘特图股票行情图,混和图温度计图刻度图等常用商用图表)
    
图形可以导出成PNGJPEG格式,同时还可以与PDFEXCEL关联

    JFreeChart
核心类库介绍:
            
研究jfreechart源码发现源码的主要由两个大的包组成:org.jfree.chart,org.jfree.data。其中前者主要与图形 本身有关,后者与图形显示的数据有关。具体研究如果大家有兴趣的话可以自己研究,以后有时间我会告诉大家怎么去研究源码。
         
核心类主要有:
           org.jfree.chart.JFreeChart
:图表对象,任何类型的图表的最终表现形式都是在该对象进行一些属性的定制。JFreeChart引擎本身提供了一个工厂类用于创建不同类型的图表对象
           org.jfree.data.category.XXXDataSet:
数据集对象,用于提供显示图表所用的数据。根据不同类型的图表对应着很多类型的数据集对象类
           org.jfree.chart.plot.XXXPlot
:图表区域对象,基本上这个对象决定着什么样式的图表,创建该对象的时候需要AxisRenderer以及数据集对象的支持
           org.jfree.chart.axis.XXXAxis
:用于处理图表的两个轴:纵轴和横轴
           org.jfree.chart.render.XXXRender
:负责如何显示一个图表对象
           org.jfree.chart.urls.XXXURLGenerator:
用于生成Web图表中每个项目的鼠标点击链接
           XXXXXToolTipGenerator:
用于生成图象的帮助提示,不同类型图表对应不同类型的工具提示类
    
四、JFreeChart开发(Application/Applet

one: pie charts

    • /**
    •  * Description:This application is the first jfreechart
    •  * authort:Jetter
    •  * Datetime:2008-09-17
    •  */
  1. package com.ghg.java;
  2. import org.jfree.data.general.DefaultPieDataset;
  3. import org.jfree.chart.*;
  4. public class JfreeChartTest {
  5.     public static void main(String[] args) {
  6.        //创建饼图数据对象
  7.        DefaultPieDataset dfp=new DefaultPieDataset();
  8.        dfp.setValue("管理人员"25);
  9.        dfp.setValue("市场人员"35);
  10.        dfp.setValue("开发人员"20);
  11.        dfp.setValue("后勤人员"5);
  12.        dfp.setValue("财务人员"15);
  13.         //Create JFreeChart object
  14.        JFreeChart a =ChartFactory.createPieChart("CityInfoPort公司组织架构图",dfp, truetruetrue);
  15.        ChartFrame  frame=new ChartFrame ("CityInfoPort公司组织架构图 ",a,true);
  16.        frame.pack();
  17.        frame.setVisible(true);
  18. }
  19. }

进一步修改,测试通过。。。。。

  1. package com.fanzhang.testChart;
  2. /**
  3.  * Description:This application is the first jfreechart
  4.  * authort:Jetter
  5.  * Datetime:2008-09-17
  6.  */
  7. import org.jfree.chart.JFreeChart;
  8. import org.jfree.chart.ChartPanel;
  9. import org.jfree.chart.ChartFactory;
  10. import org.jfree.chart.ChartFrame;
  11. import org.jfree.data.general.DefaultPieDataset;
  12. import org.jfree.chart.plot.PiePlot;
  13. import org.jfree.data.general.PieDataset;
  14. import org.jfree.ui.ApplicationFrame;
  15. import org.jfree.ui.RefineryUtilities;
  16. import java.awt.Font;
  17. import javax.swing.*;
  18. public class JfreeChart_03 extends ApplicationFrame {
  19.  //构造函数
  20.  public JfreeChart_03(String s) {
  21.   super(s);
  22.   setContentPane(createDemoPanel());
  23.  }
  24.  public static void main(String[] args) {
  25.   JfreeChart_03 fjc = new JfreeChart_03("CityInfoPort公司组织架构图");
  26.   fjc.pack();
  27.   RefineryUtilities.centerFrameOnScreen(fjc);
  28.   fjc.setVisible(true);
  29.  }
  30.  //生成饼图数据集对象
  31.  public static PieDataset createDataset() {
  32.   DefaultPieDataset defaultpiedataset = new DefaultPieDataset();
  33.   defaultpiedataset.setValue("管理人员"10.02D);
  34.   defaultpiedataset.setValue("市场人员"20.23D);
  35.   defaultpiedataset.setValue("开发人员"60.02D);
  36.   defaultpiedataset.setValue("OEM人员"10.02D);
  37.   defaultpiedataset.setValue("其他人员"5.11D);
  38.   return defaultpiedataset;
  39.  }
  40.  //生成图表主对象JFreeChart
  41.  public static JFreeChart createChart(PieDataset piedataset) {
  42.   //定义图表对象
  43.   JFreeChart jfreechart = ChartFactory.createPieChart(
  44.     "CityInfoPort公司组织架构图", piedataset, truetruefalse);
  45.   //获得图表显示对象
  46.   PiePlot pieplot = (PiePlot) jfreechart.getPlot();
  47.   //设置图表标签字体
  48.   pieplot.setLabelFont(new Font("SansSerif", Font.BOLD, 12));
  49.   pieplot.setNoDataMessage("No data available");
  50.   pieplot.setCircular(true);
  51.   pieplot.setLabelGap(0.01D);//间距
  52.   return jfreechart;
  53.  }
  54.  //生成显示图表的面板
  55.  public static JPanel createDemoPanel() {
  56.   JFreeChart jfreechart = createChart(createDataset());
  57.   return new ChartPanel(jfreechart);
  58.  }
  59. }

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值