jf的教程己是满天飞,我就不多废话了---如果你想用又不想看那些看不懂的文档,就霸王硬上弓吧,我觉这样还快些:
1.下面这段代码,是用以生成bar、pie、温度计、仪表盘等以及我称不上名字的一些图表;
2.附件中有一个war包,直接布到webapps下,自己看效果;
3.附件中的源码包是整个ec中的项目,你自己玩弄--如果不知道jf在哪里下,里面也有了。
java代码,一个输出图片的Servlet的生成模拟数据的工具类:
package cn.netjava.jFreeChart;
import java.awt.BasicStroke;
import java.awt.Color;
import java.io.IOException;
import javax.servlet.*;
import javax.servlet.http.*;
import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartUtilities;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.plot.MeterPlot;
import org.jfree.chart.plot.PlotOrientation;
import org.jfree.chart.plot.ThermometerPlot;
import org.jfree.data.Range;
import org.jfree.data.category.DefaultCategoryDataset;
import org.jfree.data.general.DefaultPieDataset;
import org.jfree.data.general.DefaultValueDataset;
/**
* 生成jFreeChart图片的Servlet
* @author javaFound
*/
public class ChartServlet extends HttpServlet {
/**
* 根据客户端请求的图表类型chartType的值,返回对应的图表,
*/
public void service(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
// 输出图片格式为png格式
response.setHeader("Cache-Control", "no-cache");
response.setContentType("image/png");
//请求的图表类型
String chartType = request.getParameter("chartType");
System.out.println("请求的图表类型是 : " + chartType);
// for export Chart:
JFreeChart chart = null;
if (chartType.equalsIgnoreCase("PieChart3D")) {
// 创建pie图的数据集方法
DefaultPieDataset data = ChartTools.getPieDataSet();
chart = ChartFactory.createPieChart3D("这是PieChart3D图:", data, true,
false, false);
} else if (chartType.equalsIgnoreCase("PieChart")) {
// 创建pie图的数据集方法
DefaultPieDataset data = ChartTools.getPieDataSet();
chart = ChartFactory.createPieChart("这是PieChart图:", data, true,
false, false);
} else if (chartType.equalsIgnoreCase("RingChart")) {
// 创建pie图的数据集方法
DefaultPieDataset data = ChartTools.getPieDataSet();
chart = ChartFactory.createRingChart("这是RingChart图:", data, true,
false, false);
} else if (chartType.equalsIgnoreCase("BarChart3D")) {
// 创建bar图的数据集方法
DefaultCategoryDataset data = ChartTools.getCategoryDataset();
// PlotOrientation.HORIZONTAL这个参数说明是水平还是垂直方向VERTICAL
chart = ChartFactory.createBarChart3D("这是BarChart3D", "数量", "地点",
data, PlotOrientation.VERTICAL, true, false, false);
} else if (chartType.equalsIgnoreCase("LineChart")) {
// 创建线图
DefaultCategoryDataset data = ChartTools.getCategoryDataset();
chart = ChartFactory.createLineChart("这是LineChart", "数量", "地点",
data, PlotOrientation.VERTICAL, true, false, false);
} else if (chartType.equalsIgnoreCase("AreaChart")) {
// 创建区域形图
DefaultCategoryDataset data = ChartTools.getCategoryDataset();
chart = ChartFactory.createAreaChart("这是AreaChart", "数量", "地点",
data, PlotOrientation.VERTICAL, true, false, false);
} else if (chartType.equalsIgnoreCase("WaterfallChart")) {
// 搞不明白这是什么图:(
DefaultCategoryDataset data = ChartTools.getCategoryDataset();
chart = ChartFactory.createWaterfallChart("这是WaterfallChart", "数量",
"地点", data, PlotOrientation.VERTICAL, true, false, false);
} else if (chartType.equalsIgnoreCase("Thermometer")) {
// 整个温度计。。。。。。。。。。
// 数据集,初始值为0
DefaultValueDataset valuedataset = new DefaultValueDataset(0);
// 创建漫度计的Plot对象
ThermometerPlot thermometerplot = new ThermometerPlot(valuedataset);
chart = new JFreeChart("设备温度", JFreeChart.DEFAULT_TITLE_FONT,
thermometerplot, false);
thermometerplot.setThermometerStroke(new BasicStroke(2.0F));
// 图表的轮廓颜色
thermometerplot.setThermometerPaint(Color.BLUE);
thermometerplot.setOutlinePaint(null);
// 图表计数单位
thermometerplot.setUnits(10);
// 数值范围
thermometerplot.setRange(-40, 40);
thermometerplot.setForegroundAlpha(1f);
// 图表的当前值
valuedataset.setValue(20);
} else if (chartType.equalsIgnoreCase("MeterChart")) {
// 整个仪表盘
// 数据集,初始值为30
DefaultValueDataset valuedataset = new DefaultValueDataset(30);
// 创建Plot对象
MeterPlot meterplot = new MeterPlot(valuedataset);
chart = new JFreeChart("当前流量速度", JFreeChart.DEFAULT_TITLE_FONT,
meterplot, false);
// 表盘上显示的数据单位说明
meterplot.setUnits("条/秒)");
// 表盘分害的单位,即30为一格
meterplot.setTickSize(30);
// 显示数据范围,0~600
meterplot.setRange(new Range(0, 600));
// 图表的当前值
valuedataset.setValue(100);
}
if (null != chart) {
// 将图片对象输出到客户端
java.io.OutputStream ous = response.getOutputStream();
ChartUtilities.writeChartAsPNG(ous, chart, 500, 300);
// 使用这样的代码输出可能会出错!
// ChartUtilities.writeChartAsJPEG(ous,100,chart,500,300,null);
ous.flush();
ous.close();
System.out.println("******ho ho..*****图片输出完毕....... " + chartType);
}
}
}
/**
* 生成图片数据集的工具类:
* @author javaFound
*/
class ChartTools {
/**
* 生成bar图的数据集:
* @return:可用于Bar图的数据集
*/
public static DefaultCategoryDataset getCategoryDataset() {
DefaultCategoryDataset dataset = new DefaultCategoryDataset();
for (int series = 0; series < seriesTimes.length; series++) {
for (int i = 0; i < seriesNames.length; i++) {
nameValueOfTime[series][i] = new java.util.Random()
.nextInt(300) + 100;
dataset.addValue(nameValueOfTime[series][i], seriesNames[i],
seriesTimes[series]);
}
}
return dataset;
}
/**
* 创建用于填充pie图的数据集
* @return DefaultPieDataset对象
*/
public static DefaultPieDataset getPieDataSet() {
// 用来填充pie图的数据集
DefaultPieDataset dataset = new DefaultPieDataset();
// 饼图分块名字
String[] seriesNames = { "芙蓉路", "八一路", "五一路", "大学路", };
for (int i = 0; i < seriesNames.length; i++) {
int value = new java.util.Random().nextInt(1000) + 500;
// 设置pie数据集中的数据对
dataset.setValue(seriesNames[i], value);
}
return dataset;
}
private ChartTools(){};
/** X轴时间维数据序型(当然也可以为标签维度)* */
private static String[] seriesTimes = { "一月", "二月", "三月", "四月", "五月", "六月","七月" };
/** 柱状标签序列(比如做为地点序列) */
private static String[] seriesNames = { "芙蓉路立交桥", "五一立交桥", "长岭路口" };
/** 每个时间点上每个地区/类型序列的值 */
private static int[][] nameValueOfTime = new int[seriesTimes.length][seriesNames.length];
}
当然,少不了在页面上显示的一个jsp文件,名字叫做viewChart.jsp:
<%@page contentType="text/html" pageEncoding="GBK"%>
<title>jFreeChart图表测试 @NetJava.cn</title>
<br>请选择要生成的图表类型:
<hr>
<select id="scType" onchange="loadChartBySelectType(this)">
<option value="1">请选择一种图表</option>
<option value="PieChart3D">PieChart3D</option>
<option value="PieChart">PieChart</option>
<option value="BarChart3D">BarChart3D</option>
<option value="LineChart">LineChart</option>
<option value="RingChart">RingChart</option>
<option value="AreaChart">AreaChart</option>
<option value="WaterfallChart">WaterfallChart</option>
<option value="Thermometer">Thermometer</option>
<option value="MeterChart">MeterChart</option>
</select>
<hr>
图表:
<div id="displayChart" />
<script type="text/javascript">
/**选择jf图表类型时,载入图片*/
function loadChartBySelectType(sua) {
var cType=sua.value;
if(cType=="1"){
return ;
}
alert("选中的是: "+cType)
var disabledImageZone=document.getElementById("displayChart");
//这样多简单,清理div中己有的东东:)
disabledImageZone.innerHTML="";
var imageZone = document.createElement('img');
imageZone.setAttribute('id','imageZone');
//提取服务器上的图片显示下来:
imageZone.setAttribute('src',"servlet/ChartServlet?chartType="+cType);
disabledImageZone.appendChild(imageZone);
}
</script>
就贴其中一张图了,是个温度计,哈哈:
- 描述: jFreeChart绘制的温度计示意图片
- 大小: 1 MB
- jFreeChartTest.war.png (2.7 MB)
- 描述: 测试jFreeChart可直接布署到tomcat/webapps下面看效果的war文件; 我晕,war上传不了啊,没办法了,war后面加上了个.png,下载布署时注意去掉哦!
- 下载次数: 1903
分享到:
相关推荐
在Web应用程序中,jFreeChart可以帮助开发者轻松地创建动态、交互式的图表,以直观地展示数据。本教程将带你快速掌握如何在Web项目中使用jFreeChart。 ### 1. 安装与引入jFreeChart 首先,你需要将jFreeChart库...
JFreeChart 是一个功能丰富的开源Java类库,专为在Java应用程序和Web应用中创建各种类型的图表而设计。这个库提供了广泛的数据可视化功能,包括折线图、柱状图、饼图、散点图、甘特图以及更多其他类型,使得开发者...
JFreeChart是一款强大的Java图表库,它允许开发者创建多种类型的2D图表,如柱状图、饼图、线形图、散点图等,适用于报表、数据分析和可视化应用。1.0.19版本是其稳定的一个版本,包含了丰富的功能和优化。 1. **...
此外,由于JFreeChart是纯Java实现,因此它也适用于跨平台的Web应用,通过Servlet或JSP技术,可以在服务器端生成图表并返回给客户端。 总结起来,JFreeChart-1.0.9是一个强大且灵活的Java图表库,它提供了丰富的...
8. **API使用**:源码中的`JFreeChartFactory`类封装了许多创建常见图表的便捷方法,通过研究其源码,可以快速上手JFreeChart的API使用。 总的来说,JFreeChart 1.0.17 Demo 源码是一个宝贵的教育资源,不仅提供了...
- **Web应用**:与Servlet结合,可实现在Web页面上动态展示图表。 - **桌面应用**:在Java Swing或JavaFX应用中,JFreeChart能够增强用户界面的视觉效果。 8. **版本更新** - **1.0.12**:这个版本可能修复了...
在Java应用程序、Web应用和报告系统中,JFreeChart经常被用来可视化数据,提供直观的数据展示。 **1. JFreeChart的核心功能** - **多种图表类型**:JFreeChart支持多种常见的图表类型,如条形图、饼图、折线图、...
JFreeChart是一款强大的Java图表库,它允许开发者创建多种类型的2D图表,如折线图、柱状图、饼图、散点图等。在"jfreechart-1.0.9-demos.zip"这个压缩包中,包含了JFreeChart 1.0.9版本的演示示例代码。这些示例对于...
5. **Web应用支持**:在Servlet环境下,JFreeChart可以通过生成动态图像(例如GIF或PNG)来在Web页面上展示图表,这对于基于Web的数据分析和报告系统来说非常有用。 6. **兼容性好**:JFreeChart与Java Swing、...
总结,JFreeChart 是一个强大且灵活的 Java 图表库,通过提供的 "jfreechart-1.0.14.zip" 压缩包,开发者不仅可以获取最新版本的库,还能通过演示程序快速上手,进一步提升开发效率和图表质量。无论是数据分析、报告...
1. **多样的图表类型**:JFreeChart 提供了多种图表类型,满足不同数据展示需求。例如: - 折线图(Line Chart):适合展示趋势和变化。 - 柱状图(Bar Chart):用于比较类别之间的数量差异。 - 饼图(Pie Chart...
**JFreeChart:Java世界的图表大师** 在Java开发领域,数据可视化是不可或缺的一部分,而JFreeChart正是这样一个强大的开源图表库,它为开发者提供了丰富的图表类型和高度自定义的选项,使得创建美观、专业的数据...
通过 JFreeChart 提供的 demo 和源码,开发者可以快速上手并深入了解每个功能的工作原理。这些资源提供了丰富的实例,帮助开发者解决实际问题,并激发创新。 总结起来,JFreeChart 是一个强大且灵活的图表库,为...
JFreeChart是一款强大的Java图表库,它为开发者提供了创建各种静态和动态图表的功能。这个压缩包包含JFreeChart所需的所有核心组件,以及相关的依赖库,如jcommon.jar,确保你可以全面地利用JFreeChart的强大功能。 ...
**JFreeChart 1.0.3:Java图表库的详解** JFreeChart是一个流行的开源Java库,用于创建高质量的2D图表。标题中的"jfreechart-1.0.3.jar"指的是JFreeChart库的1.0.3版本的Java归档(JAR)文件,这个文件包含了所有...
其次,作为一款插件,JFreeChart 可轻松集成到各种Java应用程序中,无论是桌面应用、Web应用还是服务器端应用。其API设计简洁明了,便于开发人员快速上手。通过调用相应的API方法,可以方便地创建、更新和渲染图表。...
- **Web应用框架**:Spring MVC、Struts等框架中可以集成JFreeChart,方便地在Web应用中展示图表。 5. **学习资源**: - **官方文档**:虽然标题提到是英文版,但官方文档详尽且具有指导性,对于掌握JFreeChart...
同时,JFreeChart还支持生成静态和动态的图表,可直接嵌入到Swing、JavaFX等桌面应用,或者通过Servlets和JSP用于Web应用。 4. **数据驱动**:JFreeChart能够处理各种数据源,如数组、集合、数据库查询结果等,这...
同时,通过阅读JFreeChart的API文档和示例代码,可以快速上手并实现自己的图表应用。 总之,JFreeChart作为一款强大的Java图表库,对于需要数据可视化的Java项目来说,是一个不可或缺的工具。其克隆版本"JFreeChart...