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` 示例代码和可能的库文件,这对于开发者来说是一个宝贵的学习资源。在这个压缩包中,你可能会找到一个名为 `jfreechart-1.0.13-demo.src` 的文件,这通常...
**JFreeChart库详解** JFreeChart是一款强大的Java图表库,它允许开发者在应用程序、Swing...通过深入学习和实践这个JFreeChart例子,开发者可以掌握如何在自己的项目中有效地利用这个库,以生成专业且美观的图表。
这个名为"word+excel+jfreechart例子"的压缩包提供了三个示例,分别展示了如何使用Java来实现这些功能。下面我们将详细探讨每个方面的知识点。 首先,我们来看Java操作Word的部分。在Java中,可以使用Apache POI库...
通过学习和实践"jfreechart例子"中的示例,你可以更好地掌握JFreeChart的使用,提升数据可视化的专业技能。无论是简单的数据展示还是复杂的交互式图表,JFreeChart都能满足你的需求,让你的项目更加生动直观。
这个“jfreeChart例子”压缩包包含了一些示例代码,帮助开发者更好地理解和使用 JFreeChart。 1. **JFreeChart 的基本结构** JFreeChart 的核心组件包括 ChartFactory、Chart、Plot 和 Dataset。ChartFactory 用于...
**JFreeChart例子详解** JFreeChart是一款强大的Java图表库,它允许开发者在应用程序中创建各种复杂的图表,如柱状图、饼图、线图、散点图等。本例子将深入探讨如何在Servlet环境中使用JFreeChart,并将其结果显示...
Jfreechart 例子 3d 2d 完善的
**JFreeChart例子Demo** JFreeChart是一款强大的Java图表库,它允许开发者在应用程序、Swing组件、Web应用以及各种报告中创建丰富的图形。在这个"JFreeChart例子Demo"中,我们将深入探讨如何利用JFreeChart来绘制...
标题“jfreechart经典例子”暗示了我们将深入探讨如何使用JFreeChart库创建各种图表,并通过具体的示例来理解其工作原理。 首先,JFreeChart库是开源的,这意味着它允许开发者自由地使用、修改和分发。它的API设计...
这个"jfreechart 例子全集"是一个集合,包含了JFreeChart库的各种示例代码,旨在帮助开发者更好地理解和应用这个库。 1. **基本概念** JFreeChart 的核心在于它的`ChartFactory`类,通过这个类,我们可以快速创建...
JFreeChart是一款强大的Java图表库,它为开发者提供了丰富的图表绘制功能,包括柱状图、饼图、线形图、散点图、甘特图等多种图表类型,适用于各种数据分析和可视化场景。本教程将深入探讨JFreeChart的核心概念、使用...
JFreeChart是JAVA平台上的一个开放的图表绘制类库。它完全使用JAVA语言编写,是为applications, applets, servlets 以及JSP等使用所设计。JFreeChart可生成饼图(pie charts)、柱状图(bar charts)、散点图...
这个压缩包文件"jfreechart例子源码"提供了JFreeChart库的一些原始示例代码,对于学习和理解如何在Java应用程序中使用JFreeChart进行图表开发非常有帮助。 JFreeChart库的核心概念是图表(Chart),它是所有可视化...
**JFreeChart简介** JFreeChart是一款开源的Java图表库,它提供了丰富的图表类型,包括柱状图、饼图、曲线图等,用于在Java应用程序和网页中展示数据。这个库的强大之处在于其灵活性和可定制性,允许开发者根据需求...