现在的位置: 首页 > 综合 > 正文

创建数据集合与JFreeChart实例

2013年11月04日 ⁄ 综合 ⁄ 共 2811字 ⁄ 字号 评论关闭

JFreeChart类是一个制图对象,它的创建需要一个数据集合对象,在拥有数据集合后即可通过制图工厂进行创建。JFreeChart提供的数
据集合是多种多样的,在实际应用中要根据自己的需要选择合适的数据集合对象。对于不同的数据集合对象,其创建及添加数据的方法也是不同的。

例24.01  使用柱形图统计Java图书销量,通过DefaultCategoryDataset数据集合对象创建柱形图制图对象。其关键代码如下:(实例位置:光盘/TM/Instances/24.01)

  1. public   class  ChartUtil {  
  2.      /**  
  3.      * 创建数据集合  
  4.      * @return CategoryDataset对象  
  5.      */  
  6.      public   static  CategoryDataset createDataSet() {  
  7.          //实例化DefaultCategoryDataset对象  
  8.         DefaultCategoryDataset dataSet =  new  DefaultCategoryDataset();  
  9.          //向数据集合中添加数据  
  10.         dataSet.addValue( 500 "JAVA图书" "J2SE类" );  
  11.         dataSet.addValue( 100 "JAVA图书" "J2ME类" );  
  12.         dataSet.addValue( 900 "JAVA图书" "J2EE类" );  
  13.          return  dataSet;  
  14.     }  
  15.      /**  
  16.      * 创建JFreeChart对象  
  17.      * @return JFreeChart对象  
  18.      */  
  19.      public   static  JFreeChart createChart() {  
  20.         StandardChartTheme standardChartTheme =
    new  StandardChartTheme( "CN" );    //创建主题样式  
  21.         standardChartTheme.setExtraLargeFont( new
     Font( "隶书" , Font.BOLD,  20 ));     //设置标题字体  
  22.         standardChartTheme.setRegularFont( new  Font
    (
    "宋体" , Font.PLAIN,  15 ));   //设置图例的字体  
  23.         standardChartTheme.setLargeFont( new  Font
    (
    "宋体" , Font.PLAIN,  15 ));         //设置轴向的字体  
  24.         ChartFactory.setChartTheme(standardChartTheme);  //设置主题样式  
  25.          //通过ChartFactory创建JFreeChart  
  26.         JFreeChart chart = ChartFactory.createBarChart3D(  
  27.                  "JAVA图书销量统计" ,            //图表标题  
  28.                  "JAVA图书" ,                    //横轴标题  
  29.                  "销量(本)" ,                     //纵轴标题  
  30.                 createDataSet(),                     //数据集合   
  31.                 PlotOrientation.VERTICAL,        //图表方向  
  32.                  false ,                       //是否显示图例标识  
  33.                  false ,                       //是否显示tooltips  
  34.                  false );                      //是否支持超链接  
  35.          return  chart;  
  36.     }  

ChartUtil类是一个自定义的制图工具类,其中createDataSet()方法用于创建柱形图所需要的数据集合,返回
CategoryDataset对象;CreateChart()用于创建制图对象JFreeChart,在此方法中通过ChartFactory对象的
createBarChart3D()方法创建一个3D效果的柱形图对象,并将其返回。

在JSP页面中通过JFreeChart组件提供的Servlet类DisplayChart来获取图片,本实例中在index.jsp页面中输出图片。其关键代码如下:

  1. <%@ page language= "java"  contentType= "text/html"  pageEncoding= "GBK" %>  
  2. <%@ page  import ="org.jfree.chart.servlet.ServletUtilities,  
  3.                 com.lyq.util.ChartUtil"%>  
  4. <!DOCTYPE HTML PUBLIC  "-//W3C//DTD HTML 4.01 Transitional//EN" >  
  5. <html>  
  6.   <head>  
  7.     <title>Java图书销量统计</title>  
  8.   </head>  
  9.   <body>  
  10.     <%  
  11.             String fileName = ServletUtilities.
    saveChartAsJPEG(ChartUtil.createChart(),
    450 , 300 ,session);  
  12.             String graphURL = request.getContextPath()
    "/DisplayChart?filename="  + fileName;  
  13.     %>  
  14.     <img src= "<%=graphURL%>"  border= "1" >  
  15.   </body> 
  16. </html>

在输出图片之前,首先要生成JFreeChart组件所绘制的图片。此操作通过调用ServletUtilities类的saveChartAsJPEG()方法来实现,它返回一个.JPEG格式的图片名称。

在获取此图片名称后,通过代码"request.getContextPath() + "/DisplayChart?filename=" + fileName"即可获取到图片的路径,其运行结果如图24.7所示。


 
图24.7  柱形图统计Java图书销量

抱歉!评论已关闭.