`
263229365
  • 浏览: 473533 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

jfreechart 实现时间曲线图

 
阅读更多

jfreechart 实现时间曲线图


一、JFreeChart获取。


JFreeChart是JFreeChart公司在开源网站SourceForge.net上的一个项目,该公司的主要产品有如下:


1、JFreeReport:报表解决工具 
2、JFreeChart:Java图形解决方案(Application/Applet/Servlet/Jsp) 
3、JCommon:JFreeReport和JFreeChart的公共类库 
4、JFreeDesigner:JFreeReport的报表设计工具 

我们可以从jfree官方网站上获取最新版本和相关资料(但是jfree的document需要40美金才能获取),下载地址:http://www.jfree.org/jfreechart/index.html(同时可以获得简明介绍) 
我们以当前最新版本:jfreechart_0.9.21.zip为例子进行说明。 

二、JFreeChart配置安装


1、解压jfreechart_0.9.21.zip到指定位置,其中source是jfreechart的源码,jfreechart-0.9.21-demo.jar 是例子程序(该部分留给大家自己去研究)

2、为了配置成功,我们需要关注的文件有如下三个:jfreechart-0.9.21.jar、lib\jcommon-0.9.6.jar、lib\gnujaxp.jar。


3、如果是Application开发,把上述三个文件拷贝到%JAVA_HOME%\LIB中,同时在环境变量CLASSPATH中加入,如果是WEB开发,以TOMCAT中的一个WEB项目TEST为例子说明。


把上述三个文件拷贝到TEST\WEB-INF\LIB中,然后修改TEST\WEB-INF\web.xml文件,在其中加入如下代码:

<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>

 
至此jfreechart的配置就完成了,下面就可以进行jfreechart的开发了。这里值得提出的是jfreechart的类结构设计前后兼容性不是很好,不同版本的jfreechart中类库结构可能不一样,有时候可能需要查源码。

如果是中文显示的时候可能依据观感需要改变源码的字体,不过我个人觉得这个版本比以前版本要好一些。 

三、Demo


 

<%@ page contentType="text/html;charset=GBK"%> 
<%@ page import =" java.awt.*, java.text.SimpleDateFormat,javax.swing.JPanel, 
org.jfree.chart.ChartFactory,org.jfree.chart.ChartPanel, 
org.jfree.chart.JFreeChart, 
org.jfree.chart.axis.DateAxis, 
org.jfree.chart.plot.XYPlot, 
org.jfree.chart.renderer.xy.XYItemRenderer, 
org.jfree.chart.renderer.xy.XYLineAndShapeRenderer, 
org.jfree.data.time.*, 
org.jfree.data.time.TimeSeries, 
org.jfree.data.time.TimeSeriesCollection, 
org.jfree.data.xy.XYDataset"%> 
<%@ page import="org.jfree.chart.servlet.ServletUtilities"%> 
<%@ page import="java.util.*"%> 
<%@ page import = "org.jfree.ui.RectangleInsets"%> 
<%@ page import = "java.sql.*"%> 
<% 
//连接数据库 
Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver").newInstance(); 
String url="jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=jfree"; 
String usr="sa"; 
String pwd=""; 
Connection conn=DriverManager.getConnection(url,usr,pwd); 
Statement stmt=conn.createStatement(); 
String sql="select * from jfree order by id"; 
ResultSet rs=stmt.executeQuery(sql); 

//设置曲线,共三条曲线 
TimeSeries timeseries = new TimeSeries("平均",Minute.class);//时间的最小单位为分,线值名是“平均”
TimeSeries timeseries1 = new TimeSeries("usl",Minute.class); 
TimeSeries timeseries2 = new TimeSeries("lsl",Minute.class); 

//从数据库中取值,数据和时间 
while(rs.next()) 

float y0=rs.getFloat("lengthavg"); 
float y1=rs.getFloat("lengthusl"); 
float y2=rs.getFloat("lengthlsl"); 
String s=rs.getString("addtime"); 
//从yyyyMMddHHmm时间格式的char中取出年月日小时分设为int值 
int x=Integer.parseInt(s.substring(0,4)); 
int y=Integer.parseInt(s.substring(4,6)); 
int z=Integer.parseInt(s.substring(6,8)); 
int a=Integer.parseInt(s.substring(8,10)); 
int b=Integer.parseInt(s.substring(10,12)); 

timeseries.add(new Minute(b,new Hour(a,new Day(z,y,x))),y0); 
timeseries1.add(new Minute(b,new Hour(a,new Day(z,y,x))),y1); 
timeseries2.add(new Minute(b,new Hour(a,new Day(z,y,x))),y2); 



//连接曲线 
TimeSeriesCollection dataset = new TimeSeriesCollection(); 
dataset.addSeries(timeseries); 
dataset.addSeries(timeseries1); 
dataset.addSeries(timeseries2); 
dataset.setDomainIsPointsInTime(true); 

//设置曲线图 
XYDataset xydataset = (XYDataset) dataset; 
JFreeChart chart = ChartFactory.createTimeSeriesChart( 
"走势图", 
"时间", 
"值", 
xydataset, 
true, 
true, 
true 
); 
chart.setBackgroundPaint(Color.white);//设置曲线图背景色 

XYPlot plot = (XYPlot) chart.getPlot(); 
XYLineAndShapeRenderer xylineandshaperenderer = (XYLineAndShapeRenderer)plot.getRenderer();
plot.setBackgroundPaint(Color.white));//设置网格背景颜色 
plot.setDomainGridlinePaint(Color.pink);//设置网格竖线颜色 
plot.setRangeGridlinePaint(Color.pink);//设置网格横线颜色 
plot.setAxisOffset(new RectangleInsets(0D, 0D, 0D, 10D));//设置曲线图与xy轴的距离,即曲线与xy轴贴近的距离 
xylineandshaperenderer.setBaseShapesVisible(true);//设置曲线是否显示数据点 

String filename = ServletUtilities.saveChartAsPNG(chart, 500, 300, null, session); 
String graphURL = request.getContextPath() + "/servlet/DisplayChart?filename=" + filename; 
%> 
<img src="../../<%= graphURL %>" border=0 usemap="#<%= filename %>"> 



另外说一下,以前看到有很多人都说不能显示图,出来一个叉,一般那都是设置的servlet的错,我看到有的人就是用设置为servlets的 
所以就要在

String graphURL = request.getContextPath() + "/servlet/DisplayChart?filename=" + filename;

中改为

String graphURL = request.getContextPath() + "/servlets /DisplayChart?filename=" + filename;

这个都要具体对待,出来叉的话有一点是肯定的,程序代码中没有程序错误,只是路径错误而已 

注意:有些类没有的话,可能是版本更换的问题,可以去源码或者API中找找看,有可能是换了位置,也可能是换了名字。

<!--EndFragment-->
2
3
分享到:
评论

相关推荐

    java中关于JFreeChart实现实时曲线图

    本文将基于提供的代码片段,深入探讨如何使用JFreeChart实现实时更新的曲线图。 ### 实现原理 在Java中使用JFreeChart创建实时曲线图,主要涉及以下几个关键步骤: 1. **创建时间序列(Time Series)**:时间序列...

    JFreeChart实现实时曲线图

    JFreeChart实现实时曲线图 JFreeChart是Java平台上一种流行的图表库,提供了丰富的图表类型和自定义功能。实现实时曲线图是JFreeChart的一个重要应用场景,本文将详细介绍JFreeChart实现实时曲线图的方法。 实时...

    jfreechart 柱状图、曲线图、饼图经

    曲线图适合显示数据随时间的变化趋势,JFreeChart中的`XYPlot`类用于创建这种图表。同样,我们需要一个数据集,如`XYSeriesCollection`,然后将数据集绑定到`XYPlot`,并配置线条样式、标记和坐标轴属性。 饼图则...

    使用 jfreechart 生成 曲线、柱状图、饼状图、分布图 展示到JSP

    JFreeChart是一个强大的Java库,它允许开发者创建各种类型的图表,包括曲线图、柱状图、饼状图和分布图等。在当前JS图表库盛行的时代,JFreeChart依然因其稳定性和丰富的定制性而在Java领域占有一席之地。本文将详细...

    JFreeChart相关资料

    **二、JFreeChart 实现时间曲线图** 时间曲线图是 JFreeChart 中一种重要的图表类型,通常用于展示随时间变化的趋势。通过结合 SQL 数据库,可以动态获取并展示时间序列数据。文件“jfreechart+sql实现时间曲线图...

    柱状图 圆饼图 曲线图 struts2.0 jfreechart

    曲线图则是用折线连接各个数据点,显示数据随时间或其他因素的变化趋势。 在使用Struts2.0和JFreeChart进行图表开发时,首先需要在项目中引入JFreeChart的依赖库。然后,我们可以创建一个Action类,该类负责处理...

    flex +jfreechart生成 饼状图+曲线图+柱状图(完整版)

    曲线图则常用于展示数据随时间的变化趋势,例如股票价格、销售数据等。 在“flex jfreechart生成 饼状图”的场景下,我们首先需要在Java端使用JFreeChart库创建饼状图,然后将其转换为图像格式(如JPEG或PNG)。...

    jfreechart根据24小时数据画折线图

    ### jfreechart根据24小时数据画折线图 #### 一、jfreechart简介 jfreechart是一款基于Java的开源图表绘制库,它能够帮助开发者轻松地在应用程序中生成各种图表,包括折线图、饼图、柱状图等。它的主要优势在于...

    JfreeChart单条曲线实例

    在提供的代码片段中,演示了如何使用JfreeChart库创建一个动态更新的时间序列曲线图。该实例涉及的关键概念和代码分析如下: #### 创建图表 - **导入必要类**:首先,代码导入了JFreeChart相关的类,如`...

    jfreechart图形

    曲线图常用于展示连续的数据变化趋势,例如时间序列数据。JFreeChart提供了一种灵活的方式来创建这些图表,包括线性、指数、对数和其他类型的曲线。通过调整X轴和Y轴的范围,可以清晰地展示数据的动态变化。 2. **...

    java jfreechart 生成图形报表 饼图,条形图,曲线图

    总结一下,Java JFreeChart 提供了丰富的功能,能够帮助开发者生成各种类型的图表,包括饼图、条形图和曲线图,以实现数据的可视化。通过使用不同的数据集和渲染器,你可以根据需求自定义图表的外观和行为。在给定的...

    JFreeChart画图

    **JFreeChart** 是一个Java库,用于生成高质量的图表,包括曲线图、柱状图、折线图、饼图以及甘特图等。它在Java应用和Web应用中广泛使用,尤其是对于数据可视化和报告生成。JFreeChart库不仅支持静态图表,还能够...

    jsp数据库数据用jfreechart绘制曲线

    `JSP`(JavaServer Pages)是一种动态网页技术,可以与后端数据库进行交互,而`JFreeChart`是一个强大的Java图表库,能够帮助开发者生成各种高质量的图表,包括曲线图。本篇文章将深入探讨如何在`JSP`中调用数据库...

    MyJFreeChart_jfreechart_java_曲线_源码

    1. **多样的图表类型**:除了曲线图,JFreeChart还可以创建饼图、柱状图、散点图、甘特图、时间序列图等多种图表,满足不同数据可视化需求。 2. **高度可定制化**:你可以调整图表的每一个细节,包括颜色、字体、...

    JFreeChart绘图

    甘特图是项目管理中常用的时间进度表示法,JFreeChart的`GanttRenderer`允许创建带有任务条和进度的图表。 8. **仪表盘(Dashboard)** JFreeChart也支持创建类似汽车仪表盘的图形组件,如速度表、刻度盘等,用于...

    JFreeChart例子工程,web页面展示图片

    曲线图,也称为折线图,适用于展示数据随时间的变化趋势。JFreeChart的`XYPlot`类支持创建折线图,每个数据点由X轴的值和Y轴的值确定。可以绘制多条折线,以便对比多个数据序列。曲线图可以配置为平滑曲线,通过插值...

    Java曲线图.doc

    在本文中,我们将深入探讨如何使用Java的JFreeChart库来创建曲线图,以及相关的配置和示例代码。 JFreeChart是一个强大的Java图形库,它提供了丰富的图表类型,包括曲线图、柱状图、饼图等,适用于多种场景,如桌面...

    jfreechart的封装用例

    柱状图常用于比较不同类别的数量或比例,饼状图展示了各部分占整体的比例,而曲线图则用于显示数据随时间的变化趋势。 2. **封装的意义**:封装是面向对象编程的核心思想之一,它可以隐藏复杂的实现细节,提供简洁...

    JFreeChart

    通过上述示例可以看出,使用JFreeChart绘制曲线图不仅简单直观,而且可以轻松实现高度定制化的图表样式。无论是初学者还是经验丰富的开发者,都能借助JFreeChart强大的功能快速构建出美观实用的数据可视化图表。

Global site tag (gtag.js) - Google Analytics