java技术 jfreechart 饼状图

java代码
package com.trswcm.jfreechar;

import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.http.HttpSession;
import org.jfree.chart.ChartRenderingInfo;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.entity.StandardEntityCollection;
import org.jfree.chart.plot.PiePlot;
import org.jfree.chart.servlet.ServletUtilities;
import org.jfree.data.general.DefaultPieDataset;
/**
*
* <p>标题: —— 生成饼状图</p>
* <p>描述: —— 更具sql生成柱状图</p>
* <p>模块: 通用平台</p>
* <p>版权: Copyright (c) 2011 江苏集群信息产业股份有限公司
* @author 刘永
* @version 1.0
* @since 2011-3-9 上午11:41:57
* <p>修订历史:(历次修订内容、修订人、修订时间等) </p>
*/
public class PieChart {
    /**
     *
      * <p>生成饼状图</p>
      * <p>创建时间:2011-3-9上午11:43:20</p>
      * <p>作者: 刘永</p>
      * @param session
      * @param pw
      * @return String
     */
public  String getPieChart(HttpSession session, PrintWriter pw){
//报表文件名称
String fileName = null;
//报表数据
DefaultPieDataset data = new JfreeCharttools().createPieDateSet();
PiePlot plot = new PiePlot(data);
JFreeChart chart = new JFreeChart("",JFreeChart.DEFAULT_TITLE_FONT, plot, true);
//可选,设置图片背景色
chart.setBackgroundPaint(java.awt.Color.white);
//可选,设置图片标题
chart.setTitle("www.SenTom.net 网站访问统计表");
//500是图片长度,300是图片高度
ChartRenderingInfo info = new ChartRenderingInfo(new StandardEntityCollection());

try {
fileName = ServletUtilities.saveChartAsPNG(chart, 500, 300, info, session);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return  fileName;
}
}


package com.trswcm.jfreechar;

import java.awt.Color;
import java.awt.Font;


import org.jfree.chart.JFreeChart;
import org.jfree.chart.axis.CategoryAxis;
import org.jfree.chart.axis.CategoryLabelPositions;
import org.jfree.chart.axis.ValueAxis;
import org.jfree.chart.plot.CategoryPlot;
import org.jfree.chart.title.TextTitle;
import org.jfree.data.category.DefaultCategoryDataset;
import org.jfree.data.general.DefaultPieDataset;
import org.jfree.data.time.Day;
import org.jfree.data.time.TimeSeries;
import org.jfree.data.time.TimeSeriesCollection;
import org.jfree.data.xy.XYDataset;

/**
*
* <p>标题: —— jfreechart的工具类</p>
* <p>描述: —— 简要描述类的职责、实现方式、使用注意事项等</p>
* <p>模块: 查询统计</p>
* <p>版权: Copyright (c) 2011 江苏集群信息产业股份有限公司
* @author 刘永
* @version 1.0
* @since 2011-3-9 上午10:45:39
* <p>修订历史:(历次修订内容、修订人、修订时间等) </p>
*/
public class JfreeCharttools {
/**
*
  * <p>方法说明:处理JFreeChart中文乱码问题</p>
  * <p>创建时间:2011-3-9上午10:46:25</p>
  * <p>作者: 刘永</p>
  * @param chart Jfreechart对象
*/
    @SuppressWarnings("all")
    public void configFont(JFreeChart chart){ 
         // 配置字体 
         Font xfont = new Font("宋体",Font.PLAIN,12) ;// X轴 
         Font yfont = new Font("宋体",Font.PLAIN,12) ;// Y轴 
         Font kfont = new Font("宋体",Font.PLAIN,12) ;// 底部 
         Font titleFont = new Font("隶书", Font.BOLD , 25) ; // 图片标题 
         CategoryPlot plot = chart.getCategoryPlot();// 图形的绘制结构对象            
         // 图片标题 
         chart.setTitle(new TextTitle(chart.getTitle().getText(),titleFont)); 
         // 底部 
         chart.getLegend().setItemFont(kfont); 
         // X 轴 
         CategoryAxis domainAxis = plot.getDomainAxis();    
         domainAxis.setLabelFont(xfont);// 轴标题 
         domainAxis.setTickLabelFont(xfont);// 轴数值   
         // Y 轴 
         ValueAxis rangeAxis = plot.getRangeAxis();    
         rangeAxis.setLabelFont(yfont);  
         rangeAxis.setLabelPaint(Color.BLUE) ; // 字体颜色 
         rangeAxis.setTickLabelFont(yfont);   
         // 字体颜色
         domainAxis.setTickLabelPaint(Color.BLUE) ;  
         // 横轴上的label斜显示
         domainAxis.setCategoryLabelPositions(CategoryLabelPositions.UP_45);   
       
    } 
    /**
     *
      * <p>获取柱状图数据对象</p>
      * <p>创建时间:2011-3-9上午11:26:57</p>
      * <p>作者: 刘永</p>
      * @return DefaultCategoryDataset 柱状图数据对象
     */
    @SuppressWarnings("all")
public DefaultCategoryDataset  createBarDateSet()
    {
      double[] data = {85, 156, 179.5, 211, 123};
      String[] labels = {"星期一", "星期二", "星期三", "星期四", "星期五"};
   
      DefaultCategoryDataset dataset = new DefaultCategoryDataset();
      for (int i = 0; i < data.length; i++) {
        dataset.addValue(data[i], labels[i], labels[i]);
      }
        return dataset;
    }
   
    /**
     *
      * <p>获取趋势图数据对象</p>
      * <p>创建时间:2011-3-9上午11:27:50</p>
      * <p>作者: 刘永</p>
      * @return XYDataset  趋势图数据对象
     */
    @SuppressWarnings("all")
public XYDataset createXYDateSet()
    {
        TimeSeriesCollection dataset = new TimeSeriesCollection();//时间曲线数据集合
        TimeSeries s1 = new TimeSeries("难难难", Day.class);;
//创建时间数据源,每一个//TimeSeries在图上是一条曲线


        s1.add(new Day(1, 2, 2006), 123.51);
        s1.add(new Day(2, 2, 2006), 122.1);
        s1.add(new Day(3, 2, 2006), 120.86);
        s1.add(new Day(4, 2, 2006), 122.50);
        s1.add(new Day(5, 2, 2006), 123.12);
        s1.add(new Day(6, 2, 2006), 123.9);
        s1.add(new Day(7, 2, 2006), 124.47);
        s1.add(new Day(8, 2, 2006), 124.08);
        s1.add(new Day(9, 2, 2006), 123.55);
        s1.add(new Day(10, 2, 2006), 122.53);

        dataset.addSeries(s1);
        dataset.setDomainIsPointsInTime(true);
        return dataset;
    }
    /**
     *
      * <p>获取饼状图数据对象</p>
      * <p>创建时间:2011-3-9上午11:29:12</p>
      * <p>作者: 刘永</p>
      * @return DefaultPieDataset  饼状图数据对象
     */
    @SuppressWarnings("all")
   public DefaultPieDataset createPieDateSet()
    {
    DefaultPieDataset data = new DefaultPieDataset();
data.setValue("六月",500);
data.setValue("七月",580);
data.setValue("八月",828);

        return data;
    }

}


jsp代码
<%@ page contentType="text/html;charset=UTF-8" pageEncoding="UTF-8"%>
<%@ page import="com.trswcm.jfreechar.PieChart"%>
<%@ page import = "java.io.PrintWriter" %>
<%
PieChart barChart=new PieChart();
String fileName=barChart.getPieChart(session,new PrintWriter(out));
  String graphURL = request.getContextPath() + "/servlet/DisplayChart?filename=" + fileName;
%>
<html>
</head>
<title> JFreeChart使用例子</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
</head>
<body>
<img src="<%= graphURL %>" width=500 height=300 border=0 usemap="#<%= fileName %>">
</body>
</html>

你可能感兴趣的:(java,数据结构,sql,servlet,jfreechart)