`
jiangyang1986
  • 浏览: 76476 次
  • 性别: Icon_minigender_1
  • 来自: 长沙
社区版块
存档分类
最新评论

jfreeChart 例子

阅读更多
package demo;

import java.awt.Color;
import java.awt.Font;
import java.io.IOException;
import java.io.PrintWriter;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Random;

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.axis.DateAxis;
import org.jfree.chart.axis.DateTickUnit;
import org.jfree.chart.axis.NumberAxis;
import org.jfree.chart.axis.NumberTickUnit;
import org.jfree.chart.entity.StandardEntityCollection;
import org.jfree.chart.plot.CategoryPlot;
import org.jfree.chart.plot.PlotOrientation;
import org.jfree.chart.plot.XYPlot;
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;
import org.jfree.data.time.Day;
import org.jfree.data.time.TimeSeries;
import org.jfree.data.time.TimeSeriesCollection;
import org.jfree.data.xy.XYDataset;

public class PieDemo {

/**
* @param args
* 做一个饼状图
*/

private static PieDataset getDataSet() {
DefaultPieDataset dataset = new DefaultPieDataset();
dataset.setValue("收油量", 100111);
dataset.setValue("特殊用油量", 320220);
dataset.setValue("生产用油量", 30220);
return dataset;
}



//柱状图的数据集合
//堆栈图的数据集合
//线性图的数据集合
private static CategoryDataset  getDataSet1() {
DefaultCategoryDataset dataset1 = new DefaultCategoryDataset();
dataset1.addValue(50000, "生产用油量", "2010-08-20");
dataset1.addValue(1000, "特殊用油量", "2010-08-20");
dataset1.addValue(1000, "收油量", "2010-08-20");

dataset1.addValue(4000, "生产用油量", "2010-08-24");
dataset1.addValue(6000, "特殊用油量", "2010-08-24");
dataset1.addValue(7000, "收油量", "2010-08-24");

dataset1.addValue(4000, "生产用油量", "2010-08-28");
dataset1.addValue(6000, "特殊用油量", "2010-08-28");
dataset1.addValue(7000, "收油量", "2010-08-28");
return dataset1;
}
//线性图 
  public static String generateLineChart(HttpSession session ,PrintWriter pw, int w,int h){
  String filename = null;
  JFreeChart chart = ChartFactory.createLineChart(       
  "井队月统计报表",         //图表标题               
  "",                     //横轴标题            
  "",                   //纵轴标题                
  getDataSet1(),                    //绘图数据集         
  PlotOrientation.VERTICAL,  //定义区域图的方向为纵向           
  true,                           //是否显示图例标识           
  true,                           //是否显示tooltips       
  false);                     //是否支持超链接          //设置标题字体     
  chart.getTitle().setFont(new Font("隶书",Font.BOLD, 25));       
  //设置图例类别字体       
  chart.getLegend().setItemFont(new Font("宋体", Font.BOLD, 15));    
  //设置背景色     
  chart.setBackgroundPaint(new Color(160,214,248));     
  //获取绘图区对象    
  CategoryPlot plot = chart.getCategoryPlot(); 
  try {
//------得到chart的保存路径----
ChartRenderingInfo info = new ChartRenderingInfo
(new StandardEntityCollection());
filename = ServletUtilities.saveChartAsJPEG(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 generateStockChart(HttpSession session ,PrintWriter pw, int w,int h){
  String filename = null;
  JFreeChart chart = ChartFactory.createStackedBarChart3D(        
  "井队月统计报表",         //图表标题               
  "",                     //横轴标题            
  "",                   //纵轴标题                
  getDataSet1(),                    //绘图数据集         
  PlotOrientation.VERTICAL,  //定义区域图的方向为纵向           
  true,                           //是否显示图例标识           
  true,                           //是否显示tooltips       
  false);                     //是否支持超链接          //设置标题字体     
  chart.getTitle().setFont(new Font("隶书", Font.BOLD, 25));       
  //设置图例类别字体       
  chart.getLegend().setItemFont(new Font("宋体", Font.BOLD, 15));    
  //设置背景色     
  chart.setBackgroundPaint(new Color(160,214,248));     
  //获取绘图区对象    
  CategoryPlot plot = chart.getCategoryPlot(); 
  try {
//------得到chart的保存路径----
ChartRenderingInfo info = new ChartRenderingInfo
(new StandardEntityCollection());
filename = ServletUtilities.saveChartAsJPEG(chart, w, h, info,session);
//------使用printWriter将文件写出----
ChartUtilities.writeImageMap(pw, filename, info, true);
pw.flush();
} catch (IOException e) {
// TODO 自动生成 catch 块
e.printStackTrace();
}
  return filename;
  }


//时序图的数据集合
  private static XYDataset getDataSet2(){
    //实例化TimeSeries对象       
  TimeSeries timeseries = new TimeSeries("Data");        
  Day day = new Day(1, 1, 2008);  //实例化Day         
  double d = 3000D;        
  //添加一年365天的数据         
  for (int i = 0; i < 365; i++) {             
  d = d + (Math.random() - 0.5) * 10;
  //创建随机数据             
  timeseries.add(day, d);
  //向数据集合中添加数据             
  day = (Day) day.next();         
  }         
  //创建TimeSeriesCollection集合对象        
  TimeSeriesCollection timeSeriesCollection =new TimeSeriesCollection(timeseries);        
  //返回数据集合对象        
  return timeSeriesCollection;
 
  }
 
 
 
//区域图的数据集合
  public static CategoryDataset createDataset() { 
  //实例化DefaultCategoryDataset对象       
  DefaultCategoryDataset defaultcategorydataset= new DefaultCategoryDataset();    
  Random random = new Random();       //创建Random对象     
  //向数据集合加入6个月的数据     
  for (int i = 1; i < 7; i++) {     
  defaultcategorydataset.addValue(random.nextInt(5000) + 5000, "收油量", i + "月份"); 
  defaultcategorydataset.addValue(random.nextInt(5000) + 5000, "剩余油量", i + "月份");    
  defaultcategorydataset.addValue(random.nextInt(5000) + 5000, "特殊用油量", i + "月份");    
  }      
  return defaultcategorydataset;    
  }
 
  //堆栈图的数据集合

//饼图
/* public static String generatePieChart(HttpSession session, PrintWriter pw,
int w, int h){
String filename = null;
PieDataset dataset = getDataSet();

//2D图
JFreeChart chart = ChartFactory.createPieChart(
"生产用油量", // 图表标题
dataset, // 数据集
true, // 是否显示图例
true, // 是否生成工具
false // 是否生成URL链接
);

//3D图

JFreeChart chart = ChartFactory.createPieChart3D(
"生产用油量", // 图表标题
dataset, // 数据集
true, // 是否显示图例
true, // 是否生成工具
false // 是否生成URL链接
);
chart.setBackgroundPaint(Color.pink);
try {
------得到chart的保存路径----
ChartRenderingInfo info = new ChartRenderingInfo(new StandardEntityCollection());
filename = ServletUtilities.saveChartAsJPEG(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 = getDataSet1();
JFreeChart chart = ChartFactory.createBarChart3D(
"井队日报表", // 图表标题
"2010-08-17", // 目录轴的显示标签
"50", // 数值轴的显示标签
dataset, // 数据集
PlotOrientation.VERTICAL, // 图表方向:水平、垂直
true, // 是否显示图例(对于简单的柱状图必须是false)
false, // 是否生成工具
false // 是否生成URL链接
);
try {
//------得到chart的保存路径----
ChartRenderingInfo info = new ChartRenderingInfo
(new StandardEntityCollection());
CategoryPlot plot = chart.getCategoryPlot();
NumberAxis vn = (NumberAxis) plot.getRangeAxis();//数据轴精度
vn.setAutoRangeIncludesZero(true);//设置刻度必须从0开始
NumberTickUnit ntu= new NumberTickUnit(100);
vn.setTickUnit(ntu);
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 generateXYChart(HttpSession session ,PrintWriter pw, int w,int h){
  String filename = null;
   //创建时序图对象       
  JFreeChart chart = ChartFactory.createTimeSeriesChart(                
  "编程词典全国销量统计",       //标题               
  "销售月份",                 //时间轴标签               
  "销量(份)",                //数据轴标签                 
  getDataSet2(),                //数据集合              
  false,                  //是否显示图例标识              
  false,                      //是否显示tooltips               
  false);                 //是否支持超链接          //设置标题字体        
  chart.getTitle().setFont(new Font("隶书", Font.BOLD, 26));          //设置背景色       
  chart.setBackgroundPaint(new Color(252,175,134));        
  XYPlot plot = chart.getXYPlot();        //获取图表的绘制属性         
  plot.setDomainGridlinesVisible(false);  //设置网格不显示        
  //获取时间轴对象     
  DateAxis dateAxis = (DateAxis) plot.getDomainAxis();        
  //dateAxis.setLabelFont(PLOT_FONT);   //设置时间轴字体         
  //设置时间轴标尺值字体        
  dateAxis.setTickLabelFont(new Font("宋体",Font.PLAIN,12));      
  dateAxis.setLowerMargin(0.0);       //设置时间轴上显示的最小值         
  //获取数据轴对象          ValueAxis valueAxis = plot.getRangeAxis();       
  //valueAxis.setLabelFont(PLOT_FONT);  //设置数据字体     
  DateFormat format = new SimpleDateFormat("MM月份");   //创建日期格式对象    
  //创建DateTickUnit对象     
  DateTickUnit dtu = new DateTickUnit(DateTickUnit.DAY,29,format);       
  dateAxis.setTickUnit(dtu);          //设置日期轴的日期标签      
  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 generateAddressChart(HttpSession session ,PrintWriter pw, int w,int h){
  String filename = null;
  JFreeChart chart = ChartFactory.createAreaChart(        
  "井队月统计报表",         //图表标题               
  "",                     //横轴标题            
  "",                   //纵轴标题                
  createDataset(),                    //绘图数据集         
  PlotOrientation.VERTICAL,  //定义区域图的方向为纵向           
  true,                           //是否显示图例标识           
  true,                           //是否显示tooltips       
  false);                     //是否支持超链接          //设置标题字体     
  chart.getTitle().setFont(new Font("隶书", Font.BOLD, 25));       
  //设置图例类别字体       
  chart.getLegend().setItemFont(new Font("宋体", Font.BOLD, 15));    
  //设置背景色     
  chart.setBackgroundPaint(new Color(160,214,248));     
  //获取绘图区对象    
  CategoryPlot plot = chart.getCategoryPlot(); 
  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;
  }




}
分享到:
评论

相关推荐

    jFreechart例子及jar

    标题中的 "jFreechart例子及jar" 指的是包含 `jFreeChart` 示例代码和可能的库文件,这对于开发者来说是一个宝贵的学习资源。在这个压缩包中,你可能会找到一个名为 `jfreechart-1.0.13-demo.src` 的文件,这通常...

    一个JFreeChart例子

    **JFreeChart库详解** JFreeChart是一款强大的Java图表库,它允许开发者在应用程序、Swing...通过深入学习和实践这个JFreeChart例子,开发者可以掌握如何在自己的项目中有效地利用这个库,以生成专业且美观的图表。

    word+excel+jfreechart例子

    这个名为"word+excel+jfreechart例子"的压缩包提供了三个示例,分别展示了如何使用Java来实现这些功能。下面我们将详细探讨每个方面的知识点。 首先,我们来看Java操作Word的部分。在Java中,可以使用Apache POI库...

    jfreechart例子

    通过学习和实践"jfreechart例子"中的示例,你可以更好地掌握JFreeChart的使用,提升数据可视化的专业技能。无论是简单的数据展示还是复杂的交互式图表,JFreeChart都能满足你的需求,让你的项目更加生动直观。

    jfreeChart例子

    这个“jfreeChart例子”压缩包包含了一些示例代码,帮助开发者更好地理解和使用 JFreeChart。 1. **JFreeChart 的基本结构** JFreeChart 的核心组件包括 ChartFactory、Chart、Plot 和 Dataset。ChartFactory 用于...

    JFreeChart例子

    **JFreeChart例子详解** JFreeChart是一款强大的Java图表库,它允许开发者在应用程序中创建各种复杂的图表,如柱状图、饼图、线图、散点图等。本例子将深入探讨如何在Servlet环境中使用JFreeChart,并将其结果显示...

    Jfreechart 例子

    Jfreechart 例子 3d 2d 完善的

    JFreeChart例子Demo

    **JFreeChart例子Demo** JFreeChart是一款强大的Java图表库,它允许开发者在应用程序、Swing组件、Web应用以及各种报告中创建丰富的图形。在这个"JFreeChart例子Demo"中,我们将深入探讨如何利用JFreeChart来绘制...

    jfreechart经典例子

    标题“jfreechart经典例子”暗示了我们将深入探讨如何使用JFreeChart库创建各种图表,并通过具体的示例来理解其工作原理。 首先,JFreeChart库是开源的,这意味着它允许开发者自由地使用、修改和分发。它的API设计...

    jfreechart 例子全集

    这个"jfreechart 例子全集"是一个集合,包含了JFreeChart库的各种示例代码,旨在帮助开发者更好地理解和应用这个库。 1. **基本概念** JFreeChart 的核心在于它的`ChartFactory`类,通过这个类,我们可以快速创建...

    jfreechart例子和教程大全

    JFreeChart是一款强大的Java图表库,它为开发者提供了丰富的图表绘制功能,包括柱状图、饼图、线形图、散点图、甘特图等多种图表类型,适用于各种数据分析和可视化场景。本教程将深入探讨JFreeChart的核心概念、使用...

    JFreeChart 例子 源码 demo

    JFreeChart是JAVA平台上的一个开放的图表绘制类库。它完全使用JAVA语言编写,是为applications, applets, servlets 以及JSP等使用所设计。JFreeChart可生成饼图(pie charts)、柱状图(bar charts)、散点图...

    jfreechart例子源码

    这个压缩包文件"jfreechart例子源码"提供了JFreeChart库的一些原始示例代码,对于学习和理解如何在Java应用程序中使用JFreeChart进行图表开发非常有帮助。 JFreeChart库的核心概念是图表(Chart),它是所有可视化...

    JFreeChart例子工程,web页面展示图片

    **JFreeChart简介** JFreeChart是一款开源的Java图表库,它提供了丰富的图表类型,包括柱状图、饼图、曲线图等,用于在Java应用程序和网页中展示数据。这个库的强大之处在于其灵活性和可定制性,允许开发者根据需求...

Global site tag (gtag.js) - Google Analytics