zoukankan      html  css  js  c++  java
  • JFreeChart使用小结图片显示不了,让我非常极其的郁闷

    听说公司的技术总监要给我一个任务,是在Java中生成柱状图,于是我在搜寻了一番,找到了JFreeChart,个人觉得非常好,呵呵~~~刚看到它的功能我非常的懊悔,因为如果我早点发现它,我的毕业设计肯定会更好的,唉,晚了。


    1.首先,介绍一下什么是JFreeChart。
    JFreeChart目前是最好的Java图形解决方案,基本能够解决目前的图形方面的需求。它的官方网站是这么说的:
    JFreeChart is a free 100% Java chart library that makes it easy for developers to display professional quality charts in their applications. JFreeChart's extensive feature set includes:
    ? a consistent and well-documented API, supporting a wide range of chart types;
    ? a flexible design that is easy to extend, and targets both server-side and client-side applications;
    ? support for many output types, including Swing components, image files (including PNG and JPEG), and vector graphics file formats (including PDF, EPS and SVG);
    ? JFreeChart is "open source" or, more specifically, free software. It is distributed under the terms of the GNU Lesser General Public Licence (LGPL), which permits use in proprietary applications.
    可形成的效果如图1所示.


    2.下载
    http://sourceforge.net/projects/jfreechart/files/ 下载jfreechart-1.0.10这个版本比较好,因为再高的版本对中文的汉字兼容上会出问题,显示的中文标题会为方框,当然这个问题可以解决,但是我还是建议用1.0.10版本。


    3.配置
    将下载的解压以后,找到lib目录下的gnujaxp.jar 和iText-2.1.1.jar 和jcommon-1.0.13.jar和 jfreechart-1.0.10.jar这四个jar包。
    假如你是做Java的WEB开发,那么直接放到你的项目的WEB-INF\lib\目录下即可。
    当然它是Jar包,你可以将其导入到你的项目中。


    4 修改配置文件
    修改WEB-INF\web.xml文件,在其中加入如下代码:

    1
    2
    3
    4
    5
    6
    7
    8
    9
        <servlet>
      <servlet-name>DisplayChart</servlet-name>
      <servlet-class>org.jfree.chart.servlet.DisplayChart</servlet-class>
      </servlet>
      <!-- 配置DisplayChart servlet映射的URL-->
       <servlet-mapping>
       <servlet-name>DisplayChart</servlet-name>
       <url-pattern>/DisplayChart</url-pattern>
       </servlet-mapping>
    


    jfreechart的配置就完成了,下面就可以进行jfreechart的开发了。



    5 下面是我从网上找的一个例子。
    项目的截图是图2所示。
    源码为:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    <%@ page contentType="text/html;charset=GBK"%>
    <%@ page import="java.awt.Color,  
    org.jfree.chart.ChartFactory,    
    org.jfree.chart.JFreeChart,   
    org.jfree.chart.plot.PlotOrientation,      
    org.jfree.chart.servlet.ServletUtilities,     
    org.jfree.data.category.*, 
    org.jfree.chart.plot.CategoryPlot,
    org.jfree.chart.axis.CategoryAxis, 
    org.jfree.chart.axis.ValueAxis,
    org.jfree.chart.renderer.category.BarRenderer3D,   
    org.jfree.chart.labels.StandardCategoryItemLabelGenerator,   
    org.jfree.chart.axis.AxisLocation,    
    org.jfree.data.general.DatasetUtilities"%>0
       <%   double[][] data = new double[][] {{172, 200, 103, 140, 126},{135, 521, 270, 340, 230},{332, 256, 323, 240, 426}};   
      String[] rowKeys = {"苹果","梨子","葡萄"}; 
      String[] columnKeys = {"北京","上海","广州","成都","深圳"};  
     CategoryDataset dataset = DatasetUtilities.createCategoryDataset(rowKeys, columnKeys, data);    
      JFreeChart chart = ChartFactory.createBarChart3D("水果销量图统计",null,null,dataset,PlotOrientation.VERTICAL,true,false,false); 
     chart.setBackgroundPaint(Color.WHITE);  
     CategoryPlot plot = chart.getCategoryPlot();   
     CategoryAxis domainAxis = plot.getDomainAxis();     ////domainAxis.setVerticalCategoryLabels(false);   
    plot.setDomainAxis(domainAxis);     
     ValueAxis rangeAxis = plot.getRangeAxis();   
    rangeAxis.setUpperMargin(0.00);  //设置最高的一个 Item 与图片顶端的距离     
     rangeAxis.setLowerMargin(0.5);   //设置最低的一个 Item 与图片底端的距离 
     plot.setRangeAxis(rangeAxis);     
     BarRenderer3D renderer = new BarRenderer3D();  
     renderer.setBaseOutlinePaint(Color.BLACK);   //设置 Wall 的颜色 
      renderer.setWallPaint(Color.gray);   //设置每种水果代表的柱的颜色   renderer.setSeriesPaint(0, new Color(0, 0, 255));   
    renderer.setSeriesPaint(1, new Color(0, 100, 255));   
    renderer.setSeriesPaint(2, Color.GREEN);   //设置每个地区所包含的平行柱的之间距离   
    renderer.setItemMargin(0.1);   //显示每个柱的数值,并修改该数值的字体属性   
    renderer.setItemLabelGenerator(new StandardCategoryItemLabelGenerator());   
    renderer.setItemLabelsVisible(true);  
     plot.setRenderer(renderer);        
     plot.setForegroundAlpha(0.6f); //设置柱的透明度   
     plot.setDomainAxisLocation(AxisLocation.TOP_OR_RIGHT);  //设置地区、销量的显示位置 
     plot.setRangeAxisLocation(AxisLocation.BOTTOM_OR_RIGHT);  
     String filename = ServletUtilities.saveChartAsPNG(chart, 600, 400, null, session);  
     String graphURL = request.getContextPath() + "/DisplayChart?filename=" + filename;   %>
    <img src="<%= graphURL %>" width=600 height=400 border=0 usemap="#<%= filename %>">
    


    运行结果为图3所示。




    6 你在解压从官网下载到的压缩文件时,可到的目录是图4所示。
    双击jfreechart-1.0.10-demo.jar,可显示各种例子,效果为图5所示。

    1
    如果你觉得比较不容看的话,我在附件里边有doc文档格式的,呵呵。
    



  • 相关阅读:
    方法的调用机制
    类的成员之二:方法
    类的成员之一:属性
    关键字static
    构造器
    this关键字
    递归方法(recursion)
    方法重载(二)
    GTID 跳过脚本
    mydumper 找不到libmysqlclient.so.20
  • 原文地址:https://www.cnblogs.com/lan0725/p/1873862.html
Copyright © 2011-2022 走看看