需要两个包:jcommon和jfreechart
去百度一下:jfreechart可以下载jfree的源代码。里面有需要用到的包。
下面是一些简单的例子,包括:柱状图、饼图和曲线图:
其中:柱状图和饼图,不知道什么原因,不支持Double类型的数据,而源代码中有这样的功能(偶尔执行dataset.addValue()的时候,到方法体里面,数值变成了0)。
索性,柱状图和饼图就用Integer类型的数据了。
/**
* 画柱状图
*/
public ActionForward writerZhu(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response) {
DefaultCategoryDataset dataset = new DefaultCategoryDataset();
Integer one = 3001;
Integer two = 235;
Integer three = 5211;
Integer four = 268;
Integer five = 1053;
Integer six = 799;
Integer seven = 6000;
Integer eight = 3048;
Integer nine = 592;
Integer ten = 1099;
Integer eleven = 4080;
Integer twelve = 1399;
dataset.addValue(one, "07年", "一月");
dataset.addValue(two, "08年", "一月");
dataset.addValue(three, "09年", "一月");
dataset.addValue(four, "07年", "二月");
dataset.addValue(five, "08年", "二月");
dataset.addValue(six, "09年", "二月");
dataset.addValue(seven, "07年", "三月");
dataset.addValue(eight, "08年", "三月");
dataset.addValue(nine, "09年", "三月");
dataset.addValue(ten, "07年", "四月");
dataset.addValue(eleven, "08年", "四月");
dataset.addValue(twelve, "09年", "四月");
JFreeChart chart = ChartFactory.createBarChart3D("2008年公务员1上传工时费信息按月统计",
"公务员1工作量按月统计", "工作数据量", dataset, PlotOrientation.VERTICAL,
true, false, false);
chart.setTitle(new TextTitle("2008年公务员上传工时费信息按月统计", new Font("隶书", Font.BOLD, 30)));
chart.setBackgroundPaint(new GradientPaint(0, 0, Color.white, 1000, 0,new Color(60,190,50))); // 设置背景样式
// chart.setBackgroundPaint(new GradientPaint(0, 0, Color.white, 1000, 0,Color.red)); // 设置背景样式
CategoryPlot plot = (CategoryPlot) chart.getPlot();
plot.setForegroundAlpha(0.75f); // 柱子透明度
plot.setNoDataMessage("无对应的数据.");
plot.setNoDataMessagePaint(Color.red);
// 设置是否有横线
plot.setRangeGridlinesVisible(true); // 虚线色彩
plot.setRangeGridlinePaint(Color.GREEN);
NumberAxis3D verticalAxis = (NumberAxis3D) plot.getRangeAxis();
verticalAxis.setStandardTickUnits(NumberAxis3D.createIntegerTickUnits());
// CategoryAxis domainAxis = plot.getDomainAxis();
// domainAxis.setCategoryLabelPositions(CategoryLabelPositions
// .createUpRotationLabelPositions(Math.PI / 3.0)); //Lable(Math.PI/3.0)度倾斜
// domainAxis.setMaximumCategoryLabelWidthRatio(1f);// 横轴上的 Lable 是否完整显示
// 设置距离图片左端距离
// domainAxis.setLowerMargin(0.1);
// // 设置距离图片右端距离
// domainAxis.setUpperMargin(0.1);
// 设置 columnKey 是否间隔显示
// domainAxis.setSkipCategoryLabelsToFit(true);
BarRenderer3D renderer = new BarRenderer3D();
renderer.setItemMargin(0); // 设置每个地区所包含的平行柱的之间距离
renderer.setBaseItemLabelGenerator(new StandardCategoryItemLabelGenerator());
renderer.setBaseItemLabelsVisible(true);
// 设置柱形图上的文字偏离值
renderer.setBasePositiveItemLabelPosition(new ItemLabelPosition(
ItemLabelAnchor.OUTSIDE12, TextAnchor.BASELINE_CENTER));
renderer.setItemLabelAnchorOffset(10D);
plot.setRenderer(renderer);
try {
ChartUtilities.writeChartAsJPEG(response.getOutputStream(), 1,
chart, 980, 550, null);
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
/**
* 画柱饼
*/
public ActionForward writerBing(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response) {
String title = "2008年公务员工作统计";
DefaultPieDataset piedata = new DefaultPieDataset();
Integer i1 = 100;
Integer i2 = 200;
Integer i3 = 500;
Integer i4 = 150;
// 第一个参数为名称,第二个参数是double数
piedata.setValue("公务员1", i1);
piedata.setValue("公务员2", i2);
piedata.setValue("公务员3", i3);
piedata.setValue("公务员4", i4);
JFreeChart chart = ChartFactory.createPieChart(title, piedata, true,
true, true);
chart.setTextAntiAlias(false);
// 图片背景色
chart.setBackgroundPaint(Color.white);
// 设置图标题的字体重新设置title
Font font = new Font("隶书", Font.BOLD, 25);
TextTitle title1 = new TextTitle(title);
title1.setFont(font);
chart.setTitle(title1);
// PiePlot3D plot = (PiePlot3D) chart.getPlot();
PiePlot plot = (PiePlot) chart.getPlot();
plot.setBaseSectionOutlinePaint(Color.BLACK);
plot.setBaseSectionPaint(Color.BLACK);
plot.setNoDataMessage("无对应的数据,请重新查询。");
plot.setNoDataMessagePaint(Color.red);
// 图片中显示百分比:自定义方式,{0} 表示选项, {1} 表示数值, {2} 表示所占比例 ,小数点后两位
plot.setLabelGenerator(new StandardPieSectionLabelGenerator(
"{0}={1}({2})", NumberFormat.getNumberInstance(),
new DecimalFormat("0.00%")));
// 图例显示百分比:自定义方式, {0} 表示选项, {1} 表示数值, {2} 表示所占比例
plot.setLegendLabelGenerator(new StandardPieSectionLabelGenerator(
"{0}={1}({2})"));
plot.setLabelFont(new Font("SansSerif", Font.TRUETYPE_FONT, 12));
// 指定图片的透明度(0.0-1.0)
plot.setForegroundAlpha(0.65f);
// 指定显示的饼图上圆形(false)还椭圆形(true)
plot.setCircular(false, true);
// 设置第一个 饼块section 的开始位置,默认是12点钟方向
plot.setStartAngle(90);
try {
ChartUtilities.writeChartAsJPEG(response.getOutputStream(), 1,
chart, 800, 550, null);
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
/**
* 画曲线
*/
public ActionForward writerQuXian(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response) {
// 曲线图标题
String title = "工作量趋势分析";
// 曲线图X轴提示
String domain = "月份走势";
// 曲线图Y轴提示
String range = "数据量";
// 曲线图自标题
String subtitleStr = "公务员1工作量";
// 创建时间数据源
// 每一个TimeSeries在图上是一条曲线
TimeSeries ca = new TimeSeries("开城阳光");
for (int i = 2008; i <= 2010; i++) {
for (int mon = 0; mon < 12; mon++) {
ca.add( new TimeSeriesDataItem( new Day(1, mon + 1, i),new Double(1000 + Math.random() * 100)));
}
}
// 时间曲线数据集合
TimeSeriesCollection dataset = new TimeSeriesCollection();
dataset.addSeries(ca); //还可以继续加
// 时间曲线元素
JFreeChart chart = ChartFactory.createTimeSeriesChart(
title,
domain,
range,
dataset,
true,
true,
false);
TextTitle subtitle = new TextTitle(subtitleStr, new Font("黑体", Font.BOLD, 18));
chart.addSubtitle(subtitle);
chart.setTitle(new TextTitle(title, new Font("隶书", Font.BOLD, 35)));
chart.setBackgroundPaint(new GradientPaint(0, 0, Color.white, 0, 1000, Color.blue));
try {
ChartUtilities.writeChartAsJPEG(response.getOutputStream(), 1,
chart, 800, 550, null);
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
去百度一下:jfreechart可以下载jfree的源代码。里面有需要用到的包。
下面是一些简单的例子,包括:柱状图、饼图和曲线图:
其中:柱状图和饼图,不知道什么原因,不支持Double类型的数据,而源代码中有这样的功能(偶尔执行dataset.addValue()的时候,到方法体里面,数值变成了0)。
索性,柱状图和饼图就用Integer类型的数据了。
/**
* 画柱状图
*/
public ActionForward writerZhu(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response) {
DefaultCategoryDataset dataset = new DefaultCategoryDataset();
Integer one = 3001;
Integer two = 235;
Integer three = 5211;
Integer four = 268;
Integer five = 1053;
Integer six = 799;
Integer seven = 6000;
Integer eight = 3048;
Integer nine = 592;
Integer ten = 1099;
Integer eleven = 4080;
Integer twelve = 1399;
dataset.addValue(one, "07年", "一月");
dataset.addValue(two, "08年", "一月");
dataset.addValue(three, "09年", "一月");
dataset.addValue(four, "07年", "二月");
dataset.addValue(five, "08年", "二月");
dataset.addValue(six, "09年", "二月");
dataset.addValue(seven, "07年", "三月");
dataset.addValue(eight, "08年", "三月");
dataset.addValue(nine, "09年", "三月");
dataset.addValue(ten, "07年", "四月");
dataset.addValue(eleven, "08年", "四月");
dataset.addValue(twelve, "09年", "四月");
JFreeChart chart = ChartFactory.createBarChart3D("2008年公务员1上传工时费信息按月统计",
"公务员1工作量按月统计", "工作数据量", dataset, PlotOrientation.VERTICAL,
true, false, false);
chart.setTitle(new TextTitle("2008年公务员上传工时费信息按月统计", new Font("隶书", Font.BOLD, 30)));
chart.setBackgroundPaint(new GradientPaint(0, 0, Color.white, 1000, 0,new Color(60,190,50))); // 设置背景样式
// chart.setBackgroundPaint(new GradientPaint(0, 0, Color.white, 1000, 0,Color.red)); // 设置背景样式
CategoryPlot plot = (CategoryPlot) chart.getPlot();
plot.setForegroundAlpha(0.75f); // 柱子透明度
plot.setNoDataMessage("无对应的数据.");
plot.setNoDataMessagePaint(Color.red);
// 设置是否有横线
plot.setRangeGridlinesVisible(true); // 虚线色彩
plot.setRangeGridlinePaint(Color.GREEN);
NumberAxis3D verticalAxis = (NumberAxis3D) plot.getRangeAxis();
verticalAxis.setStandardTickUnits(NumberAxis3D.createIntegerTickUnits());
// CategoryAxis domainAxis = plot.getDomainAxis();
// domainAxis.setCategoryLabelPositions(CategoryLabelPositions
// .createUpRotationLabelPositions(Math.PI / 3.0)); //Lable(Math.PI/3.0)度倾斜
// domainAxis.setMaximumCategoryLabelWidthRatio(1f);// 横轴上的 Lable 是否完整显示
// 设置距离图片左端距离
// domainAxis.setLowerMargin(0.1);
// // 设置距离图片右端距离
// domainAxis.setUpperMargin(0.1);
// 设置 columnKey 是否间隔显示
// domainAxis.setSkipCategoryLabelsToFit(true);
BarRenderer3D renderer = new BarRenderer3D();
renderer.setItemMargin(0); // 设置每个地区所包含的平行柱的之间距离
renderer.setBaseItemLabelGenerator(new StandardCategoryItemLabelGenerator());
renderer.setBaseItemLabelsVisible(true);
// 设置柱形图上的文字偏离值
renderer.setBasePositiveItemLabelPosition(new ItemLabelPosition(
ItemLabelAnchor.OUTSIDE12, TextAnchor.BASELINE_CENTER));
renderer.setItemLabelAnchorOffset(10D);
plot.setRenderer(renderer);
try {
ChartUtilities.writeChartAsJPEG(response.getOutputStream(), 1,
chart, 980, 550, null);
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
/**
* 画柱饼
*/
public ActionForward writerBing(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response) {
String title = "2008年公务员工作统计";
DefaultPieDataset piedata = new DefaultPieDataset();
Integer i1 = 100;
Integer i2 = 200;
Integer i3 = 500;
Integer i4 = 150;
// 第一个参数为名称,第二个参数是double数
piedata.setValue("公务员1", i1);
piedata.setValue("公务员2", i2);
piedata.setValue("公务员3", i3);
piedata.setValue("公务员4", i4);
JFreeChart chart = ChartFactory.createPieChart(title, piedata, true,
true, true);
chart.setTextAntiAlias(false);
// 图片背景色
chart.setBackgroundPaint(Color.white);
// 设置图标题的字体重新设置title
Font font = new Font("隶书", Font.BOLD, 25);
TextTitle title1 = new TextTitle(title);
title1.setFont(font);
chart.setTitle(title1);
// PiePlot3D plot = (PiePlot3D) chart.getPlot();
PiePlot plot = (PiePlot) chart.getPlot();
plot.setBaseSectionOutlinePaint(Color.BLACK);
plot.setBaseSectionPaint(Color.BLACK);
plot.setNoDataMessage("无对应的数据,请重新查询。");
plot.setNoDataMessagePaint(Color.red);
// 图片中显示百分比:自定义方式,{0} 表示选项, {1} 表示数值, {2} 表示所占比例 ,小数点后两位
plot.setLabelGenerator(new StandardPieSectionLabelGenerator(
"{0}={1}({2})", NumberFormat.getNumberInstance(),
new DecimalFormat("0.00%")));
// 图例显示百分比:自定义方式, {0} 表示选项, {1} 表示数值, {2} 表示所占比例
plot.setLegendLabelGenerator(new StandardPieSectionLabelGenerator(
"{0}={1}({2})"));
plot.setLabelFont(new Font("SansSerif", Font.TRUETYPE_FONT, 12));
// 指定图片的透明度(0.0-1.0)
plot.setForegroundAlpha(0.65f);
// 指定显示的饼图上圆形(false)还椭圆形(true)
plot.setCircular(false, true);
// 设置第一个 饼块section 的开始位置,默认是12点钟方向
plot.setStartAngle(90);
try {
ChartUtilities.writeChartAsJPEG(response.getOutputStream(), 1,
chart, 800, 550, null);
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
/**
* 画曲线
*/
public ActionForward writerQuXian(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response) {
// 曲线图标题
String title = "工作量趋势分析";
// 曲线图X轴提示
String domain = "月份走势";
// 曲线图Y轴提示
String range = "数据量";
// 曲线图自标题
String subtitleStr = "公务员1工作量";
// 创建时间数据源
// 每一个TimeSeries在图上是一条曲线
TimeSeries ca = new TimeSeries("开城阳光");
for (int i = 2008; i <= 2010; i++) {
for (int mon = 0; mon < 12; mon++) {
ca.add( new TimeSeriesDataItem( new Day(1, mon + 1, i),new Double(1000 + Math.random() * 100)));
}
}
// 时间曲线数据集合
TimeSeriesCollection dataset = new TimeSeriesCollection();
dataset.addSeries(ca); //还可以继续加
// 时间曲线元素
JFreeChart chart = ChartFactory.createTimeSeriesChart(
title,
domain,
range,
dataset,
true,
true,
false);
TextTitle subtitle = new TextTitle(subtitleStr, new Font("黑体", Font.BOLD, 18));
chart.addSubtitle(subtitle);
chart.setTitle(new TextTitle(title, new Font("隶书", Font.BOLD, 35)));
chart.setBackgroundPaint(new GradientPaint(0, 0, Color.white, 0, 1000, Color.blue));
try {
ChartUtilities.writeChartAsJPEG(response.getOutputStream(), 1,
chart, 800, 550, null);
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
发表评论
-
临时 myeclipse 配置标识所选变量、源码
2010-05-31 10:11 700标识所选变量见图片。 源码: 1 window Prefer ... -
临时存放 ibatis
2010-04-20 16:36 679a.ksyysj >=#ksyysj:DATE# ... -
was 记录日志问题
2010-02-08 14:48 774需要在/opt/IBM/WebSphere/AppServer ... -
解决 backspace 返回登录页面 问题
2009-07-31 09:00 1514loging.jsp登录到index.jsp 方式:windo ... -
webservice记录
2009-07-23 14:48 730Client client=new Client(new ja ... -
普通加密
2009-02-17 22:22 811public class MyBase64 { /** * 执 ...
相关推荐
JFreeChart 是一个流行的 Java 库,用于创建各种类型的图表,包括饼图、折线图、柱状图等。在使用 JFreeChart 进行数据可视化时,可能会遇到乱码的问题,这通常与字体设置不当有关。本文将详细分析 Jfreechart 乱码...
JFreeChart是一款强大的Java图表库,它允许开发者创建多种类型的2D图表,包括折线图、柱状图、饼图、散点图等。在Java应用程序中,JFreeChart经常被用于数据分析和可视化,尤其在报表系统、数据分析工具或者任何需要...
JFreeChart 是一个开源的 Java 图表库,它允许开发者创建各种复杂的图表,如柱状图、饼图、散点图、线形图等。在本文中,我们将深入探讨 JFreeChart 的核心类和它们在创建图表过程中的作用。 1. **JFreeChart 类**...
JFreeChart是一款强大的Java库,用于创建各种类型的图表,包括柱状图、饼图、线图、散点图等。在“JFreeChart混合图表演示”中,我们重点探讨如何利用JFreeChart来创建一个包含多种图表类型的混合图表,以提供更丰富...
jfreechart绘制的风速风向玫瑰图 jfreechart是Java中一个流行的图表库,它提供了许多种类的图表,包括柱状图、折线图、饼图、雷达图等。本文主要介绍如何使用jfreechart绘制风速风向玫瑰图。 首先,了解jfreechart...
**JFreeChart 使用详解** JFreeChart 是一个用于 Java 的开源图表库,它提供了一种简单的方法来创建各种复杂的图表,如折线图、柱状图、饼图、散点图以及更专业的图表类型,如甘特图和雷达图。在Java应用中,如果你...
JFreeChart是一款功能强大的Java图表库,它能够生成多种图表,如柱状图、折线图、饼图、时间序列图等,常用于Java应用程序中。而Eclipse是一个开源的集成开发环境,广泛用于Java语言的开发。在Eclipse中配置...
### jfreeChart 实际开发运用手册知识点概览 #### 一、引言 **1.1 JFreeChart 是什么?** ##### 1.1.1 概述 JFreeChart 是一个免费的图表库,专为 Java 平台设计。它能够应用于各种 Java 应用程序、Applet、...
**JFreeChart 概述** JFreeChart 是一个开源的 Java 图形库,它为 Java 应用程序提供了丰富的图表功能。这个库被广泛用于创建数据可视化,包括但不限于报表、仪表盘、幻灯片和 Web 应用。JFreeChart 支持多种图表...
《JFreeChart:Java 图形绘制的利器》 在Java编程世界中,高效且美观的图形展示是数据可视化的重要组成部分。JFreeChart作为一款强大的开源图表库,为开发者提供了丰富的图表类型和高度自定义的能力,使得Java应用...
**JFreeChart库详解** JFreeChart是一款强大的Java图表库,它允许开发者在Java应用程序或网页中创建多种类型的图表,包括雷达图(也称为蜘蛛网图)。本篇将深入探讨如何利用JFreeChart生成雷达图以及相关的数据导出...
"JFreeChart 官方例子 JFreeChart Dome" 提供了一系列官方示例,帮助开发者更好地理解和运用JFreeChart库的各种功能。 "ChangeLog" 文件通常记录了软件的更新历史,其中包括了每次版本升级中添加的新特性、修复的...
在Java编程环境中,JFreeChart是一个非常流行的库,用于创建各种复杂的图表,包括线图、柱状图、饼图以及我们的焦点——雷达图。本文将深入探讨如何利用JFreeChart库来实现一个雷达图实例,这有助于数据可视化,特别...
JFreeChart 是一个强大的 Java 图形库,它为开发者提供了丰富的图表类型,包括柱状图、折线图、饼状图等,用于在 Java 应用程序中进行数据可视化。在 Java 后台开发中,数据的图形化表示能够帮助用户更直观地理解...
**JFreeChart与Cewolf:构建可视化报表的关键组件** 在Java开发中,生成美观且具有交互性的图表对于数据可视化和报表制作至关重要。JFreeChart和Cewolf是两个强大的开源库,它们共同为开发者提供了丰富的图形生成和...
### JFreeChart用户开发指南1.0.6(中文)知识点总结 #### 一、引言 **JFreeChart**是一款强大的Java图表绘制库,它为开发者提供了丰富的API来创建各种类型的图表,如饼图、柱状图、折线图等。本指南详细介绍了...
JFreeChart是一款强大的Java图表库,它为开发者提供了创建各种静态和动态图表的功能。这个压缩包包含JFreeChart所需的所有核心组件,以及相关的依赖库,如jcommon.jar,确保你可以全面地利用JFreeChart的强大功能。 ...