Jfree Chart

JAVA代码

 

package com.foxconn.test;

import java.awt.Color;
import java.awt.Font;
import java.awt.RenderingHints;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.http.HttpSession;

import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartRenderingInfo;
import org.jfree.chart.ChartUtilities;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.entity.StandardEntityCollection;
import org.jfree.chart.plot.CategoryPlot;
import org.jfree.chart.plot.PiePlot;
import org.jfree.chart.plot.PlotOrientation;
import org.jfree.chart.servlet.ServletUtilities;
import org.jfree.data.category.CategoryDataset;
import org.jfree.data.category.DefaultCategoryDataset;
import org.jfree.data.general.DefaultPieDataset;
import org.jfree.data.general.PieDataset;

public class BarChartDemo {

 /**
  * 饼状图
  */
 public static String generatePieChart(HttpSession session, PrintWriter pw,
   int w, int h) {
  String filename = null;
  PieDataset dataset = getDataSet();
  JFreeChart chart = ChartFactory.createPieChart3D("水果产量图", // 图表标题
    dataset, // 数据集
    true, // 是否显示图例
    false, // 是否生成工具
    false // 是否生成URL链接
    );
  chart.setBackgroundPaint(Color.pink);
  chart.getTitle().setFont(new Font("宋体", Font.BOLD,16));
  PiePlot plot=(PiePlot)chart.getPlot();
    
     plot.setLabelFont(new Font("宋体",Font.BOLD,12));


     chart.getLegend().setItemFont(new Font("宋体", Font.PLAIN, 12));  


  try {
   /*------得到chart的保存路径----*/
   ChartRenderingInfo info = new ChartRenderingInfo(
     new StandardEntityCollection());
   filename = ServletUtilities.saveChartAsPNG(chart, w, h, info,
     session);
   /*------使用printWriter将文件写出----*/
   ChartUtilities.writeImageMap(pw, filename, info, true);
   pw.flush();
  } catch (IOException e) {
   e.printStackTrace();
  }
  return filename;
 }

 /**
  * 柱状图
  */
 public static String generateBarChart(HttpSession session, PrintWriter pw,
   int w, int h) {
  String filename = null;
  CategoryDataset dataset = getDataSet2();
  JFreeChart chart = ChartFactory.createBarChart3D("水果产量图", // 图表标题
    "水果", // 目录轴的显示标签
    "产量", // 数值轴的显示标签
    dataset, // 数据集
    PlotOrientation.VERTICAL, // 图表方向:水平、垂直
    true, // 是否显示图例(对于简单的柱状图必须是false)
    false, // 是否生成工具
    false // 是否生成URL链接
    );
  try {
   /*------得到chart的保存路径----*/
   ChartRenderingInfo info = new ChartRenderingInfo(
     new StandardEntityCollection());
   filename = ServletUtilities.saveChartAsPNG(chart, w, h, info,
     session);
   /*------使用printWriter将文件写出----*/
   ChartUtilities.writeImageMap(pw, filename, info, true);
   pw.flush();
  } catch (IOException e) {
   // TODO 自动生成 catch 块
   e.printStackTrace();
  }
  return filename;
 }

 /**
  * 折线图
  */
 public static String generateLineChart(HttpSession session, PrintWriter pw,
   int w, int h) {
  String filename = null;
  CategoryDataset dataset = getDataSet3();
  JFreeChart chart = ChartFactory.createLineChart("水果产量图", // 图表标题
    "水果", // 目录轴的显示标签
    "产量", // 数值轴的显示标签
    dataset, // 数据集
    PlotOrientation.VERTICAL, // 图表方向:水平、垂直
    true, // 是否显示图例(对于简单的柱状图必须是false)
    false, // 是否生成工具
    false // 是否生成URL链接
    );

  /*----------设置消除字体的锯齿渲染(解决中文问题)--------------*/
  chart.getRenderingHints().put(RenderingHints.KEY_TEXT_ANTIALIASING,
    RenderingHints.VALUE_TEXT_ANTIALIAS_OFF);

  /*------------配置图表属性--------------*/
  // 1,设置整个图表背景颜色
  chart.setBackgroundPaint(Color.pink);

  /*------------设定Plot参数-------------*/
  CategoryPlot plot = chart.getCategoryPlot();
  // 2,设置详细图表的显示细节部分的背景颜色
  // plot.setBackgroundPaint(Color.PINK);
  // 3,设置垂直网格线颜色
  plot.setDomainGridlinePaint(Color.black);
  // 4,设置是否显示垂直网格线
  plot.setDomainGridlinesVisible(true);
  // 5,设置水平网格线颜色
  plot.setRangeGridlinePaint(Color.blue);
  // 6,设置是否显示水平网格线
  plot.setRangeGridlinesVisible(true);

  try {
   /*------得到chart的保存路径----*/
   ChartRenderingInfo info = new ChartRenderingInfo(
     new StandardEntityCollection());
   filename = ServletUtilities.saveChartAsPNG(chart, w, h, info,
     session);
   /*------使用printWriter将文件写出----*/
   ChartUtilities.writeImageMap(pw, filename, info, true);
   pw.flush();
  } catch (IOException e) {
   // TODO 自动生成 catch 块
   e.printStackTrace();
  }
  return filename;
 }

 /**
  * 在本地生成图片文件
  */
 public static void ganarateFruitChart() {

  CategoryDataset dataset = getDataSet2();
  JFreeChart chart = ChartFactory.createBarChart3D("水果产量图", // 图表标题
    "月份", // 目录轴的显示标签
    "产量(公斤)", // 数值轴的显示标签
    dataset, // 数据集
    PlotOrientation.VERTICAL, // 图表方向:水平、垂直
    true, // 是否显示图例(对于简单的柱状图必须是false)
    false, // 是否生成工具
    false // 是否生成URL链接
    );

  FileOutputStream fos_jpg = null;
  try {
   fos_jpg = new FileOutputStream("D://fruit.jpg");
   ChartUtilities.writeChartAsJPEG(fos_jpg, 1.0f, chart, 400, 300,
     null);
  } catch (FileNotFoundException e) {
   e.printStackTrace();
  } catch (IOException e) {
   e.printStackTrace();
  } finally {
   try {
    fos_jpg.close();
   } catch (Exception e) {
   }
  }
 }

 /**
  * 获取一个饼状图的简单数据集对象
  *
  * @return
  */
 private static PieDataset getDataSet() {
  DefaultPieDataset dataset = new DefaultPieDataset();
  dataset.setValue("苹果", 100);
  dataset.setValue("梨子", 200);
  dataset.setValue("葡萄", 300);
  dataset.setValue("香蕉", 400);
  dataset.setValue("荔枝", 500);
  return dataset;
 }

 /**
  * 获取一个柱状图数据集对象
  *
  * @return
  */
 private static CategoryDataset getDataSet2() {
  DefaultCategoryDataset dataset = new DefaultCategoryDataset();
  dataset.addValue(100, "北京", "苹果");
  dataset.addValue(500, "北京", "荔枝");
  dataset.addValue(400, "北京", "香蕉");
  dataset.addValue(200, "北京", "梨子");
  dataset.addValue(300, "北京", "葡萄");
  dataset.addValue(500, "上海", "葡萄");
  dataset.addValue(600, "上海", "梨子");
  dataset.addValue(400, "上海", "香蕉");
  dataset.addValue(700, "上海", "苹果");
  dataset.addValue(300, "上海", "荔枝");
  dataset.addValue(300, "广州", "苹果");
  dataset.addValue(200, "广州", "梨子");
  dataset.addValue(500, "广州", "香蕉");
  dataset.addValue(400, "广州", "葡萄");
  dataset.addValue(700, "广州", "荔枝");
  return dataset;
 }

 /**
  * 获取一个折线图数据集对象
  *
  * @return
  */
 private static CategoryDataset getDataSet3() {
  DefaultCategoryDataset dataset = new DefaultCategoryDataset();
  dataset.addValue(100, "北京", "一月");
  dataset.addValue(200, "北京", "二月");
  dataset.addValue(100, "北京", "三月");
  dataset.addValue(400, "北京", "四月");
  dataset.addValue(300, "北京", "五月");
  dataset.addValue(500, "北京", "六月");
  dataset.addValue(90, "北京", "七月");
  dataset.addValue(700, "北京", "八月");
  dataset.addValue(800, "北京", "九月");
  dataset.addValue(1000, "北京", "十月");
  dataset.addValue(300, "北京", "十一月");
  dataset.addValue(700, "北京", "十二月");
  dataset.addValue(1200, "上海", "一月");
  dataset.addValue(1100, "上海", "二月");
  dataset.addValue(1000, "上海", "三月");
  dataset.addValue(900, "上海", "四月");
  dataset.addValue(800, "上海", "五月");
  dataset.addValue(700, "上海", "六月");
  dataset.addValue(600, "上海", "七月");
  dataset.addValue(500, "上海", "八月");
  dataset.addValue(400, "上海", "九月");
  dataset.addValue(300, "上海", "十月");
  dataset.addValue(200, "上海", "十一月");
  dataset.addValue(100, "上海", "十二月");
  dataset.addValue(600, "武汉", "一月");
  dataset.addValue(500, "武汉", "二月");
  dataset.addValue(400, "武汉", "三月");
  dataset.addValue(300, "武汉", "四月");
  dataset.addValue(200, "武汉", "五月");
  dataset.addValue(100, "武汉", "六月");
  dataset.addValue(200, "武汉", "七月");
  dataset.addValue(300, "武汉", "八月");
  dataset.addValue(400, "武汉", "九月");
  dataset.addValue(500, "武汉", "十月");
  dataset.addValue(600, "武汉", "十一月");
  dataset.addValue(700, "武汉", "十二月");
  return dataset;
 }

 /**
  * @param args
  */
 public static void main(String[] args) {
  ganarateFruitChart();
 }
}

 

 

 

 

 

 

 

JSP页面

 

 


<%@ page contentType="text/html;charset=GBK"%>
<%@ page import="java.io.PrintWriter"%>
<jsp:directive.page import="com.foxconn.test.BarChartDemo"/>
<html>
 <head>
  <title></title>
  <%
   //饼状图
   String fileNamePie = BarChartDemo.generatePieChart(session,
     new PrintWriter(out), 580, 250);
   String graphURLPie = request.getContextPath()
     + "/servlet/DisplayChart?filename=" + fileNamePie;
   //饼状图
   String fileNameBar = BarChartDemo.generateBarChart(session,
     new PrintWriter(out), 580, 250);
   String graphURLBar = request.getContextPath()
     + "/servlet/DisplayChart?filename=" + fileNameBar;
   //折线图
   String fileNameLine = BarChartDemo.generateLineChart(session,
     new PrintWriter(out), 580, 250);
   String graphURLLine = request.getContextPath()
     + "/servlet/DisplayChart?filename=" + fileNameLine;
  %>
 </head>
 <body bgcolor="#ffffff">
  <table align="center" width="580" border="0" cellspacing="0"
   cellpadding="0">
   <tr>
    <td>
     <img src="<%=graphURLPie%>" width=580 height=250 border=0>
    </td>
   </tr>
   <tr>
    <td>
     <img src="<%=graphURLBar%>" width=580 height=250 border=0>
    </td>
   </tr>
   <tr>
    <td>
     <img src="<%=graphURLLine%>" width=580 height=250 border=0>
    </td>
   </tr>
  </table>
 </body>
</html>

 

 

 

 

 

WEB配置

 

 

 

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee"
 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
 http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
 <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>

 <welcome-file-list>
  <welcome-file>index.jsp</welcome-file>
 </welcome-file-list>
</web-app>

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值