注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

千鸟

本blog所有日志均系原创 转载请注明出处

 
 
 

日志

 
 

图表利器 jfreechart 1.0.5 笔记1  

2007-03-31 15:11:47|  分类: J2EE |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

    jfreechart 是非常有名的基于java的绘图包.

    jfreechart 我用的是最新的版本 1.0.5.(20070331)  编译的时候最好把lib下所有的包都导入到编译器路径.jfreechart很狼藉的名声是版本,平台不兼容.我的感觉是版本不兼容是类的目录在不同版本有较大改变. 如果编译低版本的jfreechart出错的话,建议到:

http://sourceforge.net/project/showfiles.php?group_id=15494  下载API文档, 搜索相关类的路径,重新写导入类的目录.

在source\org\jfree\chart\demo目录里有几个现成的例子,很方便掌握.

jfreechart 的一般步骤是:

1.建立各种各样的Dataset,来包装数据

2. 这种Dataset建立相应JFreeChart.

3. 用ChartUtilities绘出图形,并写到指定的io流

来看几个例子分别是用servlet,本地文件,jsp来显示

先看servlet的.

 图表利器 jfreechart 1.0.5 笔记1 - souljava - 千鸟

 

  package   com.tryit;  
   
  import   java.io.*;  
  import   java.awt.Insets;  
  import   java.awt.Font;  
  import   java.io.PrintWriter;  
  import   java.text.SimpleDateFormat;  
  import   java.util.Iterator;  
  import   java.util.Locale;  
  import   java.text.NumberFormat;  
  import   javax.servlet.*;
  import   javax.servlet.http.HttpServlet;
import org.jfree.data.category.*;
import org.jfree.chart.*;
import org.jfree.chart.ChartRenderingInfo;
import org.jfree.chart.plot.*;
import org.jfree.chart.entity.StandardEntityCollection; 
    
  
  import   java.net.URL;  
   
public class ChartDemoServlet extends HttpServlet {
 public void service(ServletRequest req, ServletResponse res)
  throws ServletException, IOException
 {
  res.setContentType("image/jpeg");
  CategoryDataset dataset = getDataSet2();
        JFreeChart chart = ChartFactory.createBarChart3D(
                "水果产量图", // 图表标题
                "水果", // 目录轴的显示标签
                "产量", // 数值轴的显示标签
                dataset, // 数据集
                PlotOrientation.VERTICAL, // 图表方向:水平、垂直
                true,  // 是否显示图例(对于简单的柱状图必须是false)
                false,  // 是否生成工具
                false  // 是否生成URL链接
                );  
  ChartUtilities.writeChartAsJPEG(res.getOutputStream(),
   1,chart,400,300,null);
 }
 /**
  * 获取一个演示用的简单数据集对象
  * @return
  */
 private static CategoryDataset getDataSet2() {
  DefaultCategoryDataset dataset = new DefaultCategoryDataset();
  dataset.addValue(Math.random()*100 , "北京", "苹果");
  dataset.addValue(Math.random()*100, "上海", "苹果");
  dataset.addValue(Math.random()*100, "广州", "苹果");
  dataset.addValue(Math.random()*200, "北京", "梨子");
  dataset.addValue(Math.random()*200, "上海", "梨子");
  dataset.addValue(Math.random()*200, "广州", "梨子");
  dataset.addValue(Math.random()*400, "北京", "葡萄");
  dataset.addValue(Math.random()*400, "上海", "葡萄");
  dataset.addValue(Math.random()*400, "广州", "葡萄");
  dataset.addValue(Math.random()*500, "北京", "香蕉");
  dataset.addValue(Math.random()*500, "上海", "香蕉");
  dataset.addValue(Math.random()*500, "广州", "香蕉");
  dataset.addValue(Math.random()*600, "北京", "荔枝");
  dataset.addValue(Math.random()*600, "上海", "荔枝");
  dataset.addValue(Math.random()*600, "广州", "荔枝");
  return dataset;
 }
}

然后是图片保存为本地的

图表利器 jfreechart 1.0.5 笔记1 - souljava - 千鸟

package lius.chart.demo;
import java.awt.Color;
import java.text.SimpleDateFormat;

import javax.swing.JPanel;
import java.io.*;
import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartPanel;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.axis.DateAxis;
import org.jfree.chart.plot.XYPlot;
import org.jfree.chart.renderer.xy.XYItemRenderer;
import org.jfree.chart.renderer.xy.XYLineAndShapeRenderer;
import org.jfree.data.time.Month;
import org.jfree.data.time.TimeSeries;
import org.jfree.data.time.TimeSeriesCollection;
import org.jfree.data.xy.XYDataset;
import org.jfree.ui.ApplicationFrame;
import org.jfree.ui.RectangleInsets;
import org.jfree.ui.RefineryUtilities;
import org.jfree.chart.ChartUtilities;
/**
 * 该类用于演示最简单的柱状图生成
 * @author Winter Lau
 */
public class Tryxyshow {
 public static void main(String[] args) throws IOException{
  JFreeChart chart=createChart(createDataset());
  FileOutputStream fos_jpg = null;
     try {
   fos_jpg = new FileOutputStream("D:\\fruit1.jpg");
   ChartUtilities.writeChartAsJPEG(fos_jpg,1,chart,400,300,null);
  } finally {
   try {
    fos_jpg.close();
   } catch (Exception e) {}
  }
 }

 /**
  * 获取一个演示用的组合数据集对象
  * @return
  */
    private static XYDataset createDataset() {

        TimeSeries s1 = new TimeSeries("L&G European Index Trust", Month.class);
        s1.add(new Month(2, 2001), Math.random()*100);
        s1.add(new Month(3, 2001), Math.random()*100);
        s1.add(new Month(4, 2001), Math.random()*100);
        s1.add(new Month(5, 2001), Math.random()*100);
        s1.add(new Month(6, 2001), Math.random()*100);
        s1.add(new Month(7, 2001), Math.random()*100);
        s1.add(new Month(8, 2001), Math.random()*100);
        s1.add(new Month(9, 2001), Math.random()*100);
        s1.add(new Month(10, 2001),Math.random()*100);
        s1.add(new Month(11, 2001), Math.random()*100);
        s1.add(new Month(12, 2001), Math.random()*100);
        s1.add(new Month(1, 2002), Math.random()*100);


        TimeSeries s2 = new TimeSeries("L&G UK Index Trust", Month.class);
        s2.add(new Month(2, 2001), Math.random()*100);
        s2.add(new Month(3, 2001), Math.random()*100);
        s2.add(new Month(4, 2001), Math.random()*100);
        s2.add(new Month(5, 2001), Math.random()*100);
        s2.add(new Month(6, 2001), Math.random()*100);
        s2.add(new Month(7, 2001), Math.random()*100);
        s2.add(new Month(8, 2001), Math.random()*100);
        s2.add(new Month(9, 2001), Math.random()*100);
        s2.add(new Month(10, 2001),Math.random()*100);
        s2.add(new Month(11, 2001), Math.random()*100);
        s2.add(new Month(12, 2001), Math.random()*100);


       
        TimeSeriesCollection dataset = new TimeSeriesCollection();
        dataset.addSeries(s1);
        dataset.addSeries(s2);
       
        return dataset;

    }
   
   
 private static JFreeChart createChart(XYDataset dataset) {

        JFreeChart chart = ChartFactory.createTimeSeriesChart(
            "Legal & General Unit Trust Prices",  // title
            "Date",             // x-axis label
            "Price Per Unit",   // y-axis label
            dataset,            // data
            true,               // create legend?
            true,               // generate tooltips?
            false               // generate URLs?
        );

        chart.setBackgroundPaint(Color.white);

        XYPlot plot = (XYPlot) chart.getPlot();
        plot.setBackgroundPaint(Color.lightGray);
        plot.setDomainGridlinePaint(Color.white);
        plot.setRangeGridlinePaint(Color.white);
        plot.setAxisOffset(new RectangleInsets(5.0, 5.0, 5.0, 5.0));
        plot.setDomainCrosshairVisible(true);
        plot.setRangeCrosshairVisible(true);
       
        XYItemRenderer r = plot.getRenderer();
        if (r instanceof XYLineAndShapeRenderer) {
            XYLineAndShapeRenderer renderer = (XYLineAndShapeRenderer) r;
            renderer.setBaseShapesVisible(true);
            renderer.setBaseShapesFilled(true);
        }
       
        DateAxis axis = (DateAxis) plot.getDomainAxis();
        axis.setDateFormatOverride(new SimpleDateFormat("MMM-yyyy"));
       
        return chart;

    }
}

最后是jsp的

看看http://dev.yesky.com/307/2036307.shtml. 感觉写的还好

  评论这张
 
阅读(867)| 评论(0)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017