`
endual
  • 浏览: 3567075 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

javase jfreechar 图像图形 饼图等等的包

    博客分类:
  • java
 
阅读更多

 

当前的JFreeChart的最新版本为jfreechart-1.0.11.zip。可以到http://www.jfree.org/jfreechart/index.html找到 
二、JFreeChart的基本使用 
不论创建的是什么图,JFreeChart都遵循以下的这个使用步骤: 
1、建立Dataset。所有的数据都存放在Dataset中的。(创建一个数据源(dataset)来包含将要在图形中显示的数据) 
2、建立JFreeChart。将dataset中的数据导入到JFreeChart中。(创建一个 JFreeChart 对象来代表要显示的图形 ) 
3、设置JFreeChart的显示属性。这一步可以省略,使用默认的JFreeChart显示属性。 
3、渲染图表。即生成图片。 
4、页面图片显示。 
重要的类和接口: 
org.jfree.data.general.Dataset 所有数据源类都要实现的接口 
org.jfree.chart.ChartFactory 由它来产生 JFreeChart 对象 
org.jfree.chart.JFreeChart 所有对图形的调整都是通过它噢!! 
org.jfree.chart.plot.Plot 通过JFreeChart 对象获得它,然后再通过它对图形外部部分(例:坐标轴)调整 
注意:它有很多子类,一般都下涉及到它的子类! 
org.jfree.chart.renderer.AbstractRenderer 通过JFreeChart 对象获得它,然后再通过它对图形内部部分(例:折线的类型)调整。同样,针对不同类型的报表图,它有着不同的子类实现!在下面我们简称它为 Renderer 

三、JFreeChart使用的具体例子 
在web应用中的例子 
package com.lzk.bean; 
import java.awt.Color; 
import java.awt.Font; 
import java.io.IOException; 
import java.io.PrintWriter; 
import java.text.NumberFormat; 
import java.text.SimpleDateFormat; 
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.NumberAxis; 
import org.jfree.chart.entity.StandardEntityCollection; 
import org.jfree.chart.labels.StandardXYToolTipGenerator; 
import org.jfree.chart.plot.XYPlot; 
import org.jfree.chart.renderer.xy.XYItemRenderer; 
import org.jfree.chart.renderer.xy.XYLineAndShapeRenderer; 
import org.jfree.chart.servlet.ServletUtilities; 
import org.jfree.chart.title.TextTitle; 
import org.jfree.data.time.Day; 
import org.jfree.data.time.TimeSeries; 
import org.jfree.data.time.TimeSeriesCollection; 
import org.jfree.data.xy.XYDataset; 
import org.jfree.ui.RectangleInsets; 
/** 
* 曲线图的绘制 
*/ 
public class LineXYChart 
{ 
/** 
* 返回生成图片的文件名 
* @param session 
* @param pw 
* @return 生成图片的文件名 
*/ 
public String getLineXYChart(HttpSession session, PrintWriter pw) 
{ 
XYDataset dataset = this.createDateSet();//建立数据集 
String fileName = null; 
//建立JFreeChart 
JFreeChart chart = ChartFactory.createTimeSeriesChart( 
"JFreeChart时间曲线序列图", // title 
"Date", // x-axis label 
"Price", // y-axis label 
dataset, // data 
true, // create legend? 
true, // generate tooltips? 
false // generate URLs? 
); 
//设置JFreeChart的显示属性,对图形外部部分进行调整 
chart.setBackgroundPaint(Color.red);//设置曲线图背景色 
//设置字体大小,形状 
Font font = new Font("宋体", Font.BOLD, 16); 
TextTitle title = new TextTitle("JFreeChart时间曲线序列图", font); 
chart.setTitle(title); 
//副标题 
TextTitle subtitle = 
new TextTitle("副标题", new Font("黑体", Font.BOLD, 12)); 
chart.addSubtitle(subtitle); 
chart.setTitle(title); //标题 

//设置图示标题字符 
//TimeSeries s1 = new TimeSeries("历史曲线", Day.class);该中文字符 
LegendTitle legengTitle = chart.getLegend(); 
legengTitle.setItemFont(font); 

XYPlot plot = (XYPlot) chart.getPlot();//获取图形的画布 
plot.setBackgroundPaint(Color.lightGray);//设置网格背景色 
plot.setDomainGridlinePaint(Color.green);//设置网格竖线(Domain轴)颜色 
plot.setRangeGridlinePaint(Color.white);//设置网格横线颜色 
plot.setAxisOffset(new RectangleInsets(5.0, 5.0, 5.0, 5.0));//设置曲线图与xy轴的距离 
plot.setDomainCrosshairVisible(true); 
plot.setRangeCrosshairVisible(true); 
XYItemRenderer r = plot.getRenderer(); 
if (r instanceof XYLineAndShapeRenderer) 
{ 
XYLineAndShapeRenderer renderer = (XYLineAndShapeRenderer) r; 
renderer.setBaseShapesVisible(true); 
renderer.setBaseShapesFilled(true); 
renderer.setShapesVisible(true);//设置曲线是否显示数据点 
} 
//设置Y轴 
NumberAxis numAxis = (NumberAxis) plot.getRangeAxis(); 
NumberFormat numFormater = NumberFormat.getNumberInstance(); 
numFormater.setMinimumFractionDigits(2); 
numAxis.setNumberFormatOverride(numFormater); 
//设置提示信息 
StandardXYToolTipGenerator tipGenerator = new StandardXYToolTipGenerator( 
"历史信息{1} 16:00,{2})", new SimpleDateFormat("MM-dd"),numFormater); 
r.setToolTipGenerator(tipGenerator); 
//设置X轴(日期轴) 
DateAxis axis = (DateAxis) plot.getDomainAxis(); 
axis.setDateFormatOverride(new SimpleDateFormat("MM-dd")); 
ChartRenderingInfo info = new ChartRenderingInfo( 
new StandardEntityCollection()); 
try 
{ 
fileName = ServletUtilities.saveChartAsPNG(chart, 500, 300, info, 
session);//生成图片 
// Write the image map to the PrintWriter 
ChartUtilities.writeImageMap(pw, fileName, info, false); 
} 
catch (IOException e) 
{ 
e.printStackTrace(); 
} 
pw.flush(); 
return fileName;//返回生成图片的文件名 
} 
/** 
* 建立生成图形所需的数据集 
* @return 返回数据集 
*/ 
private XYDataset createDateSet() 
{ 
TimeSeriesCollection dataset = new TimeSeriesCollection();//时间曲线数据集合 
TimeSeries s1 = new TimeSeries("历史曲线", Day.class);//创建时间数据源,每一个//TimeSeries在图上是一条曲线 
//s1.add(new Day(day,month,year),value),添加数据点信息 
s1.add(new Day(1, 2, 2006), 123.51); 
s1.add(new Day(2, 2, 2006), 122.1); 
s1.add(new Day(3, 2, 2006), 120.86); 
s1.add(new Day(4, 2, 2006), 122.50); 
s1.add(new Day(5, 2, 2006), 123.12); 
s1.add(new Day(6, 2, 2006), 123.9); 
s1.add(new Day(7, 2, 2006), 124.47); 
s1.add(new Day(8, 2, 2006), 124.08); 
s1.add(new Day(9, 2, 2006), 123.55); 
s1.add(new Day(10, 2, 2006), 122.53); 
dataset.addSeries(s1); 
dataset.setDomainIsPointsInTime(true); 
return dataset; 
} 
} 


在jsp文件中显示图片 
首先在Web应用程序部署文件web.xml中添加以下代码: 

<!-- 图片显示,使用专用的servlet来进行显示,它会完成路径的搜索及映射 --> 
<servlet> 
<servlet-name>DisplayChart</servlet-name> 
<servlet-class>org.jfree.chart.servlet.DisplayChart</servlet-class> 
</servlet> 
<servlet-mapping> 
<servlet-name>DisplayChart</servlet-name> 
<url-pattern>/servlet/DisplayChart</url-pattern> 
</servlet-mapping> 
然后在jsp中显示图片 
完整的jsp文件: 
<!--文件名称:timeLine.jsp--> 
<%@ page contentType="text/html;charset=gb2312" pageEncoding="GB2312"%> 
<%@ page import="com.hong.bean.LineXYChart"%> 
<%@ page import = "java.io.PrintWriter" %> 
<% 
LineXYChart xyChart=new LineXYChart(); 
String fileName=xyChart.getLineXYChart(session,new PrintWriter(out)); 
String graphURL = request.getContextPath() + "/servlet/DisplayChart?filename=" + fileName; 
%> 
<html> 
</head> 
<title> JFreeChart使用例子</title> 
<meta http-equiv="Content-Type" content="text/html; charset=gb2312"> 
</head> 
<body> 
<img src="<%= graphURL %>" width=500 height=300 border=0 usemap="<%= fileName %>"> 
</body> 
</html>
 

 

分享到:
评论

相关推荐

    javase-2.2-API文档-中文版.zip

    赠送jar包:javase-2.2.jar; 赠送原API文档:javase-2.2-javadoc.jar; 赠送源代码:javase-2.2-sources.jar; 赠送Maven依赖信息文件:javase-2.2.pom; 包含翻译后的API文档:javase-2.2-javadoc-API文档-中文...

    JavaSe图形界面程序实现分页

    在JavaSe中,图形用户界面(GUI)程序的开发经常涉及到数据展示,特别是当数据量较大时,分页技术就显得尤为重要。分页能够有效地管理大量数据,避免一次性加载过多内容导致性能下降或用户界面卡顿。本教程将详细...

    javase基于图形界面的学习项目.txt

    该视频为Javase的学习项目,有详细的源码资料,能够快速掌握Java中基础知识,快速了解如何去开发一个小游戏,希望对你有用

    JavaSE图像管理器

    JavaSE图像管理器是一款基于Java标准版(Java Standard Edition,简称JavaSE)开发的课程设计项目,旨在模拟ACDee等流行的图像查看器软件。这个应用程序的核心功能是管理和浏览图片,为用户提供便捷的图片查看、组织...

    zxing-3.1.0.jar包及javase-3.1.0包

    在你提到的"zxing-3.1.0.jar"和"zxing-javase-3.1.0.jar"这两个文件中,我们主要关注的是Java版本的ZXing库。 `zxing-3.1.0.jar` 是核心库,包含了ZXing的主要功能,如解码和编码各种条码格式。这个库可以独立使用...

    javase-3.3.3-API文档-中文版.zip

    赠送jar包:javase-3.3.3.jar; 赠送原API文档:javase-3.3.3-javadoc.jar; 赠送源代码:javase-3.3.3-sources.jar; 赠送Maven依赖信息文件:javase-3.3.3.pom; 包含翻译后的API文档:javase-3.3.3-javadoc-API...

    javase-3.3.0.zip

    JavaSE 3.3.0 是一个用于生成二维码的软件开发工具包,主要适用于Java平台。这个工具包可能包含了各种类库和接口,方便开发者在应用程序中集成二维码生成功能。在描述中提到的 "MatrixToImageWriter.writeToPath()...

    javase基础和知识点总结包含xmind文件

    除了Xmind文件,资源包中还可能包含图片、SVG(可缩放向量图形)和HTML格式的文件。图片可能是各种概念的可视化,SVG文件可能用于更高质量的图表或图示,而HTML文件可能是一个交互式的版本,帮助学习者通过网页形式...

    zxing-2.2.jar包及javase-2.2包.rar

    zxing2.2版本jar包,分别是core-2.2.jar和javase-2.2.jar,java生成二维码的两个jar,core为二维码生成包,javase为java文件什么的工具类包。支持jdk 1.6 亲身测试

    使用javase的图形化界面编写的聊天室

    在Java SE平台上,开发一个图形化界面的聊天室是一个典型的项目,它涵盖了多个核心知识点,包括网络编程、多线程以及图形用户界面的设计。以下是对这些关键知识点的详细阐述: 1. **Java SE(标准版)**: Java SE是...

    javase-3.3.3-API文档-中英对照版.zip

    赠送jar包:javase-3.3.3.jar; 赠送原API文档:javase-3.3.3-javadoc.jar; 赠送源代码:javase-3.3.3-sources.jar; 赠送Maven依赖信息文件:javase-3.3.3.pom; 包含翻译后的API文档:javase-3.3.3-javadoc-API...

    zxing 3.2.0 core与javase 两jar包

    4. **GUI组件**:对于开发者来说,ZXing Java SE提供了一些图形用户界面组件,便于将条码扫描功能集成到Java Swing或JavaFX应用中。 使用ZXing 3.2.0的这两个JAR包,开发者可以轻松地在Java应用中添加条码读取和...

    javaSE画图工具

    JavaSE画图工具是一款基于Java Swing库开发的图形用户界面应用程序,主要用于绘制各种图形。Swing是Java平台标准版(JavaSE)的一部分,提供了一套丰富的组件和接口,用于构建桌面应用。在这个画图工具中,Swing被...

    javase美化包与substance使用说明

    JavaSE美化包可能包括各种JAR文件,这些文件包含了定制的布局管理器、颜色方案、字体和图形资源,开发者可以通过引入这些JAR文件来应用不同的界面样式。 2. **Substance库**:Substance是Java社区开发的一个开源库...

    JavaSE_JavaSE学习资料_

    这个编程资料包涵盖了JavaSE的学习资源,旨在帮助开发者掌握Java的基础知识、集合框架、IO流等关键概念。 首先,Java基础知识是学习JavaSE的起点。这包括了Java语法、数据类型、控制结构(如if语句、for循环、while...

    JavaSE项目最终总结

    JavaSE还包含了Swing和JavaFX两个图形用户界面(GUI)库,用于创建桌面应用程序。Swing基于轻量级组件模型,而JavaFX提供更现代的UI设计和动画支持。 在最新的JavaSE版本中,JDK(Java Development Kit)引入了许多...

    两个zxing的jar包,一个是core-3.3.3第二个是javase-3.3.3,亲测可用

    `javase`包还包含了图像处理的工具,帮助优化从真实世界图像中提取条码的过程。 在实际应用中,如果你只需要在后台生成或解析二维码,那么只需要`core.jar`就足够了。而如果你的项目需要与用户交互,比如通过摄像头...

    javaSEjavaSE

    JavaSE(Java Standard Edition)是Java开发平台的一个核心组件,主要针对桌面应用和服务器端应用程序的开发。它提供了丰富的类库和API,使得开发者能够构建跨平台的应用程序。JavaSE包含了JVM(Java虚拟机)、Java...

    JavaSE jar包

    个人封装的Javase阶段相关的jar包,包含集合,反射,线程,IO,网络编程,jdbc等工具类 对于学习se新人,应该还是很有用处的,对于高手的话,请出门左转绕过。

Global site tag (gtag.js) - Google Analytics