TNT blog  
          日歷
          <2009年10月>
          27282930123
          45678910
          11121314151617
          18192021222324
          25262728293031
          1234567
          統(tǒng)計(jì)
          • 隨筆 - 5
          • 文章 - 40
          • 評(píng)論 - 7
          • 引用 - 0

          導(dǎo)航

          常用鏈接

          留言簿(2)

          隨筆分類

          隨筆檔案

          文章分類

          文章檔案

          收藏夾

          home

          搜索

          •  

          最新隨筆

          最新評(píng)論

          閱讀排行榜

           
          ????????????????????????????????????????????????? ? 作者:酈春錦 杭州電子科技大學(xué)

          ????????????????????????????????????????????????????? ?msn lichunjin@hotmail.com

          ?

          研究目的是:利用 jfreechar 開(kāi)發(fā)出類似證券之星的股票實(shí)時(shí)走勢(shì)圖

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

          目前本人已經(jīng)用 applet 實(shí)現(xiàn)類似的功能,由于 applet 的局限

          所以要進(jìn)一步的開(kāi)發(fā),在此基礎(chǔ)上要采用圖片的形式。

          jfreechart 以下簡(jiǎn)稱 chart

          一. Chart 的主要應(yīng)用

          是在繪圖上,包括能夠繪制盤塊圖( pie charts )、柱狀圖( bar charts )、折線圖、曲線圖、時(shí)間 \ 值連續(xù)圖,包括各種 applet 小程序窗體以及 web 上的 jsp\servlet 程序

          ?

          二. Chart 的設(shè)計(jì)

          2.1 Chart在設(shè)計(jì)上采用靜態(tài)工廠模式ChartFactory,目的產(chǎn)生各種的圖表

          2.2 產(chǎn)生JFreeChart對(duì)象的實(shí)例的方法:
          ?? 1.工廠模式產(chǎn)生一個(gè)所需要繪畫圖形的實(shí)例,例如
          ?? JFreeChart chart = ChartFactory.createTimeSeriesChart(
          ??????????? "Weekly Data",
          ??????????? "Date",
          ??????????? "Value",
          ??????????? dataset,
          ??????????? true,
          ??????????? true,
          ??????????? false
          ??????? );
          ?? 2.直接new一個(gè)chart的構(gòu)造方法
          ?? JFreeChart chart = new JFreeChart(null, JFreeChart.DEFAULT_TITLE_FONT, plot, true);

          ?

          ?

          三.時(shí)間 \ 值線連續(xù)圖,應(yīng)用于股票的走勢(shì)圖

          3.1 .如何放置時(shí)間 \ 值的一系列的數(shù)據(jù),

          chart 采用類 XYSeriesCollection 來(lái)放置(x,y)格式的數(shù)據(jù),對(duì)應(yīng)的對(duì)象是 XYSeries

          chart 采用類 TimeSeriesCollection 來(lái)放置時(shí)間\值線的數(shù)據(jù),對(duì)應(yīng)的對(duì)象是 TimeSeries

          可見(jiàn) XYSeriesCollection TimeSeriesCollection 類似集合容器類

          ?

          3.2. 股票圖生成的原理(一條線)

          第一步:產(chǎn)生 XYSeries 對(duì)象的實(shí)例,添加數(shù)據(jù)到 XYSeries ,并且產(chǎn)生一個(gè)參數(shù)為 XYSeries 對(duì)象的 XYSeriesCollection

          第二步:產(chǎn)生 StandardXYToolTipGenerator 對(duì)象的實(shí)例,設(shè)置 X 軸時(shí)間的顯示格式

          第三步:產(chǎn)生 StandardXYItemRenderer 對(duì)象的實(shí)例,設(shè)置繪畫圖形的方式,是點(diǎn)到點(diǎn)的繪畫,

          第四步:產(chǎn)生 XYPlot 對(duì)象的實(shí)例,數(shù)據(jù)格式設(shè)置成( x,y )的形式。

          ????????????? ?XYPlot plot = new XYPlot( 數(shù)據(jù)集合 , 時(shí)間 x , y , 繪畫圖形的方式 );

          最后一步:無(wú)論生成什么圖形,都必須產(chǎn)生 JFreeChart 對(duì)象的實(shí)例,

          ?????????????? ?JFreeChart chart = new JFreeChart( 標(biāo)題 , 字體 ,plot, 是否生成圖例 );

          Servlet/jsp 可選功能:

          請(qǐng)求的時(shí)候生成圖片,可以是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 .應(yīng)用于股票的走勢(shì)圖的局限性

          由于股票數(shù)據(jù)是實(shí)時(shí)的,因此它表現(xiàn)出來(lái)的線是隨著時(shí)間的推移而前進(jìn)

          但是 chart 目前只是根據(jù)讀入的數(shù)據(jù)的多少而動(dòng)態(tài)繪制圖線,時(shí)間線不能固定的設(shè)置繪畫

          這是一個(gè)待解決的問(wèn)題,這也是本次學(xué)習(xí)研究目的,加以改進(jìn)!

          3.4 .期望的解決辦法

          更改底層 chart 的源代碼或者新增功能類

          ?

          四,深入chart

          4.1 時(shí)間軸的顯示:

          由于圖中必須畫一條昨日收盤線作為參考線。于是就把參考線一直畫到底,如此以來(lái)

          就能完整的表示一天的時(shí)間,就能解決3.3的問(wèn)題

          ?

          4.2 數(shù)據(jù)篩選和顯示

          由于股票交易時(shí)間是9:30-11:30??和13:00-15:00。所以一方面要把時(shí)間軸中的停盤時(shí)間去掉

          另一方面,曲線必須連續(xù)而且不能存在數(shù)據(jù)的重疊,我剛開(kāi)始試著把時(shí)間過(guò)濾掉,但chart是根據(jù)你的數(shù)據(jù)的時(shí)間點(diǎn)的數(shù)量進(jìn)行調(diào)整的,所以顯示出來(lái)的時(shí)間軸并沒(méi)有很好的體現(xiàn)停盤時(shí)間的存在

          (具體體現(xiàn)停盤時(shí)間:時(shí)間軸9:30、15:00必須顯示,11:30和13:00同一個(gè)點(diǎn),只要顯示其中一個(gè)值)

          我又重新研究了chart的demo,發(fā)現(xiàn)SegmentedHighLowChartDemo.java演示了如何排除休息日的時(shí)間

          相關(guān)的chartAPI的doc:SegmentedTimeline可以設(shè)定要排除的時(shí)間間隔!

          所以問(wèn)題得到解決

          ?

          五,總結(jié)

          經(jīng)過(guò)一個(gè)禮拜的學(xué)習(xí)和研究,jfreechart在生成各種數(shù)據(jù)分析圖片方面確實(shí)不錯(cuò),

          如果你的項(xiàng)目要用到此類應(yīng)用,可以學(xué)習(xí)一下!也可以聯(lián)系我一起談?wù)摚?/span>

          ?

          粗糙chart作品:

          ?



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

          posted on 2007-03-22 18:07 TNT 閱讀(2857) 評(píng)論(3)  編輯  收藏
          評(píng)論:
          • # re: jfreechar開(kāi)發(fā)出類似證券之星的股票實(shí)時(shí)走勢(shì)圖  吳志明 Posted @ 2007-04-10 00:49
            一直都在找jfreechar的相關(guān)資料  回復(fù)  更多評(píng)論   

          • # re: jfreechar開(kāi)發(fā)出類似證券之星的股票實(shí)時(shí)走勢(shì)圖[未登錄](méi)  user Posted @ 2007-10-17 11:46
            是如何設(shè)定要排除的時(shí)間間隔?請(qǐng)教,非常急啊  回復(fù)  更多評(píng)論   

          • # re: jfreechar開(kāi)發(fā)出類似證券之星的股票實(shí)時(shí)走勢(shì)圖  難題 Posted @ 2009-10-08 08:03
            你好!我目前有一些問(wèn)題想請(qǐng)教你一下,可否指點(diǎn)啊!qq:37079765  回復(fù)  更多評(píng)論   


          只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。


          網(wǎng)站導(dǎo)航:
           
           
          Copyright © TNT Powered by: 博客園 模板提供:滬江博客
          主站蜘蛛池模板: 峨山| 兴仁县| 米泉市| 呈贡县| 福州市| 灌南县| 海口市| 林西县| 岳池县| 金沙县| 水富县| 屯留县| 裕民县| 武清区| 哈巴河县| 息烽县| 壤塘县| 汝城县| 莒南县| 七台河市| 宁城县| 永昌县| 竹山县| 女性| 德阳市| 平顺县| 宣恩县| 新泰市| 轮台县| 县级市| 北宁市| 临泽县| 东港市| 秭归县| 元阳县| 桃园市| 皮山县| 新闻| 永年县| 大宁县| 香河县|