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
分享到:
相关推荐
jFreeChart展示web图表---五分钟上手
传统的一些以软件包形式发布应用程序例如报表系统等都在逐渐搬到因特网上。但是这两者之间有着天壤之别,虽然对于数据获取、业务处理等方面...因此我们下面将介绍一个JAVA的图表引擎JFreeChart用来产生基于WEB的图表。
使用JfreeChart创建柱状图,折线图,饼图,堆积柱状图,时间序列图,二维Y轴坐标图.自己把自己整理的所有笔记和代码全都分享出来,希望大家在做图表的时候,不至于因为JfreeChart丑就不采用。
freechart1.0.3-demo-src
struts2-jfreechart-plugin-2.1.8.1.jar
JFreeChart中文api (JFreeChart-1.0.5-Ch.chm) JFreeChart中文api (JFreeChart-1.0.5-Ch.chm)
jfreechart-1.0.19压缩包中有一个jfreechart-1.0.19-demo.jar,里面演示了各种图表的制作案例,包括BarChart、LineChart、PieChart、TimeSeriesChart、XYSeries等等,共309个例子,现开放源码,请各位下载,欢迎交流...
jfreechart图表教程-- jfreechart图表教程-- jfreechart图表教程
jfreechart-0.9.21的jar包和jfreechart-0.9.21-demo
现在的《精通Java Web动态图表编程》大部分是网上订购,有一份电子word文档是不错的选择,本资源含有完整的资源,可不用麻烦的到处找。
struts2-jfreechart-plugin-2.0.11.jarstruts2-jfreechart-plugin-2.0.11.jarstruts2-jfreechart-plugin-2.0.11.jar
jfreechart-1.0.19-Demo-Source 源代码,亲自整理测试,绝对可用
Java 最优秀的画图工具,包括Jar文件和各种例子文件!共享!多支持!
java web 图表jfreechart 是较好的开源图表框架,可以生成 曲线图、柱状图、饼状图、甘特图、雷达图、蜘蛛图等。
jfreechart-1.0.19-demo.src 示例中源码
项目中要用到JFreeChart做图,但是DEMO源码要收费的,而且在CSDN上下载都是反编译DEMO出来的,到处都是异常就拿出来骗分,我自己花了1个小时间把所有异常都改掉了,并且测试无错。 这个包是我直接把我Eclipse项目...
JFreeChart是JAVA平台上的一个开放的图表绘制类库。 找了半天终于把大部份文件找到了,包括最新的API!欢迎下载!!!
jfreechart-1.0.6-demo源码
本文档主要讲述的是使用 JFreeChart来创建基于web的图表;JFreeChart是开放源代码站点SourceForge.net上的一个JAVA项目,它主要用来各种各样的图表,这些图表包括:饼图、柱状图(普通柱状图以及堆栈柱状图)、线图、...
JFreeChart是一个用Java编写的类库,用于生成图表。利用Java2D api,它目前支持条形图、饼图、折线图、xy图和时间序列图 包含 jfreechart-1.0.19-demo.jar(java 环境下点击就可以查看) 包含jar包 jfreechart-...