TNT blog  
日历
<2009年10月>
27282930123
45678910
11121314151617
18192021222324
25262728293031
1234567
统计
  • 随笔 - 5
  • 文章 - 40
  • 评论 - 7
  • 引用 - 0

导航

常用链接

留言簿(2)

随笔分类

随笔档案

文章分类

文章档案

收藏夹

home

搜索

  •  

最新随笔

最新评论

阅读排行榜

 
                                                    作者:郦春锦 杭州电子科技大学

                                                       msn lichunjin@hotmail.com

 

研究目的是:利用 jfreechar 开发出类似证券之星的股票实时走势图

具体地址 http://quote.stockstar.com/stock/external_quote.asp?code=shzs000001

目前本人已经用 applet 实现类似的功能,由于 applet 的局限

所以要进一步的开发,在此基础上要采用图片的形式。

jfreechart 以下简称 chart

一. Chart 的主要应用

是在绘图上,包括能够绘制盘块图( pie charts )、柱状图( bar charts )、折线图、曲线图、时间 \ 值连续图,包括各种 applet 小程序窗体以及 web 上的 jsp\servlet 程序

 

二. Chart 的设计

2.1 Chart在设计上采用静态工厂模式ChartFactory,目的产生各种的图表

2.2 产生JFreeChart对象的实例的方法:
   1.工厂模式产生一个所需要绘画图形的实例,例如
   JFreeChart chart = ChartFactory.createTimeSeriesChart(
            "Weekly Data",
            "Date",
            "Value",
            dataset,
            true,
            true,
            false
        );
   2.直接new一个chart的构造方法
   JFreeChart chart = new JFreeChart(null, JFreeChart.DEFAULT_TITLE_FONT, plot, true);

 

 

三.时间 \ 值线连续图,应用于股票的走势图

3.1 .如何放置时间 \ 值的一系列的数据,

chart 采用类 XYSeriesCollection 来放置(x,y)格式的数据,对应的对象是 XYSeries

chart 采用类 TimeSeriesCollection 来放置时间\值线的数据,对应的对象是 TimeSeries

可见 XYSeriesCollection TimeSeriesCollection 类似集合容器类

 

3.2. 股票图生成的原理(一条线)

第一步:产生 XYSeries 对象的实例,添加数据到 XYSeries ,并且产生一个参数为 XYSeries 对象的 XYSeriesCollection

第二步:产生 StandardXYToolTipGenerator 对象的实例,设置 X 轴时间的显示格式

第三步:产生 StandardXYItemRenderer 对象的实例,设置绘画图形的方式,是点到点的绘画,

第四步:产生 XYPlot 对象的实例,数据格式设置成( x,y )的形式。

               XYPlot plot = new XYPlot( 数据集合 , 时间 x , y , 绘画图形的方式 );

最后一步:无论生成什么图形,都必须产生 JFreeChart 对象的实例,

                JFreeChart chart = new JFreeChart( 标题 , 字体 ,plot, 是否生成图例 );

Servlet/jsp 可选功能:

请求的时候生成图片,可以是jpg和png格式

//Write the chart image to the temporary directory

ChartRenderingInfo? info=new? ChartRenderingInfo(new StandardEntityCollection());

filename = ServletUtilities.saveChartAsPNG(chart, 500, 300, info, session);

 

3.3 .应用于股票的走势图的局限性

由于股票数据是实时的,因此它表现出来的线是随着时间的推移而前进

但是 chart 目前只是根据读入的数据的多少而动态绘制图线,时间线不能固定的设置绘画

这是一个待解决的问题,这也是本次学习研究目的,加以改进!

3.4 .期望的解决办法

更改底层 chart 的源代码或者新增功能类

 

四,深入chart

4.1 时间轴的显示:

由于图中必须画一条昨日收盘线作为参考线。于是就把参考线一直画到底,如此以来

就能完整的表示一天的时间,就能解决3.3的问题

 

4.2 数据筛选和显示

由于股票交易时间是9:30-11:30??和13:00-15:00。所以一方面要把时间轴中的停盘时间去掉

另一方面,曲线必须连续而且不能存在数据的重叠,我刚开始试着把时间过滤掉,但chart是根据你的数据的时间点的数量进行调整的,所以显示出来的时间轴并没有很好的体现停盘时间的存在

(具体体现停盘时间:时间轴9:30、15:00必须显示,11:30和13:00同一个点,只要显示其中一个值)

我又重新研究了chart的demo,发现SegmentedHighLowChartDemo.java演示了如何排除休息日的时间

相关的chartAPI的doc:SegmentedTimeline可以设定要排除的时间间隔!

所以问题得到解决

 

五,总结

经过一个礼拜的学习和研究,jfreechart在生成各种数据分析图片方面确实不错,

如果你的项目要用到此类应用,可以学习一下!也可以联系我一起谈论,

 

粗糙chart作品:

 



Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=60598

posted on 2007-03-22 18:07 TNT 阅读(2852) 评论(3)  编辑  收藏
评论:
  • # re: jfreechar开发出类似证券之星的股票实时走势图  吴志明 Posted @ 2007-04-10 00:49
    一直都在找jfreechar的相关资料  回复  更多评论   

  • # re: jfreechar开发出类似证券之星的股票实时走势图[未登录]  user Posted @ 2007-10-17 11:46
    是如何设定要排除的时间间隔?请教,非常急啊  回复  更多评论   

  • # re: jfreechar开发出类似证券之星的股票实时走势图  难题 Posted @ 2009-10-08 08:03
    你好!我目前有一些问题想请教你一下,可否指点啊!qq:37079765  回复  更多评论   


只有注册用户登录后才能发表评论。


网站导航:
 
 
Copyright © TNT Powered by: 博客园 模板提供:沪江博客