JavaExplore

          一切像霧像雨又像風(fēng)
          posts - 19, comments - 45, trackbacks - 0, articles - 0

          1 簡(jiǎn)介

          JFreeChart SourceForge.net 上的一個(gè)開源項(xiàng)目,它的源碼和 API 都可以免費(fèi)獲得。 JFreeChart 的功能非常強(qiáng)大,可以實(shí)現(xiàn)餅圖 ( 二維和三維 ) ,  柱狀圖  ( 水平 , 垂直 ), 線圖 , 點(diǎn)圖 , 時(shí)序圖 , 甘特圖 股票行情圖 , 混和圖 溫度計(jì)圖 刻度圖等常用商用圖表,   圖形可以導(dǎo)出成 PNG JPEG 格式,同時(shí)還可以與 PDF EXCEL 關(guān)聯(lián),支持對(duì)圖形的放大、縮小,支持常見圖形的 3D 顯示。

          2 圖形 對(duì)象的處理

          2 1 JFreeChart對(duì)象

          JFreeChart 可以生成很多圖形對(duì)象,它的工廠類提供了 33 個(gè)工廠方法用于生成不同的圖形對(duì)象(具體的工廠方法可以參見 JFreeChart API 手冊(cè)或者源碼中的 ChartFactory )。              JFreechart 對(duì)圖形對(duì)象的抽象具體化。圖形對(duì)象( JFreeChart ),由 Title( 主標(biāo)題 ) SubTitle (子標(biāo)題 ) Plot (圖形的繪制結(jié)構(gòu))等幾個(gè)主要對(duì)象組成。各個(gè)組成部分如下圖所示:

          這是一個(gè) JFreeChart 對(duì)象,上面的“ chart 標(biāo)題”是 Title 對(duì)象,中間區(qū)域是 Plot 對(duì)象(包括繪圖區(qū)域和坐標(biāo)軸區(qū)域),下面的區(qū)域是 LegendTitle 對(duì)象,是一種 SubTitle 對(duì)象。

          每個(gè) JFreeChart 對(duì)象只能有 1 個(gè) Title 對(duì)象, 1 個(gè) Plot 對(duì)象,可以有多個(gè) SubTitle 對(duì)象。 JFreeChart 對(duì)象可以進(jìn)行的操作有:背景的設(shè)置(背景顏色、背景圖片、透明度等)、邊框的設(shè)置(是否可見、筆畫、 Paint 等)、渲染方式的設(shè)置、標(biāo)題對(duì)象的設(shè)置、子標(biāo)題對(duì)象的增刪查操作。(本文中的所有操作都不提供代碼級(jí)的介紹,可參見 API 手冊(cè)或者源碼)

          2 2 主標(biāo)題對(duì)象

          主標(biāo)題對(duì)象是 TextTitle 類型,可以進(jìn)行的操作有:背景設(shè)置、字體設(shè)置(字體類型、顏色、內(nèi)容、對(duì)齊方式等操作)、 tooltip 設(shè)置、 URL 設(shè)置。

          2 3 Plot 對(duì)象

          Plot 對(duì)象是圖形的繪制結(jié)構(gòu)對(duì)象。 JFreeChart 中含有很多不同的 Plot 對(duì)象,每一種圖形對(duì)象中的 Plot 對(duì)象都在實(shí)例化的時(shí)候創(chuàng)建。所有的 Plot 共有的操作有:背景設(shè)置(背景顏色、背景圖片、透明度等)、前景透明度設(shè)置、無數(shù)據(jù)存在情況的設(shè)置(顯示的字符內(nèi)容、顯示的字體、顯示的 Paint )、放大縮小比例的設(shè)置,大部分 Plot 對(duì)象還有設(shè)置 Datset 、設(shè)置 Renderer 對(duì)象操作。

          JFreeChart 中有 18 Plot 抽象類的具體實(shí)現(xiàn)類。 Plot 的具體實(shí)現(xiàn)類主要由以下重要對(duì)象組成: Renderer 對(duì)象(圖形的繪制單元——繪圖域) Datset (圖形的數(shù)據(jù)源), DomainAxis (區(qū)域軸,相當(dāng)于 x 軸), RangeAxis (范圍軸,相當(dāng)于 y 軸)。不同的 Plot 對(duì)象組成方式不盡相同,有的不含有 Renderer 對(duì)象,比如 CompassPlot ContourPlot MultiplePiePlot PiePlot 等,有的不含有 DomainAxis RangeAxis 對(duì)象,另外除了 FastScatterPlot 類都含有 Datset 對(duì)象, FastScatterPlot 使用 float 的二維數(shù)組充當(dāng)數(shù)據(jù)源。尤其說明一點(diǎn),餅狀圖相關(guān)的 Plot 對(duì)象( MultiplePiePlot PiePlot PiePlot3D RingPlot )中都不含有 Renderer 對(duì)象、 DomainAxis 對(duì)象、 RangeAxis 對(duì)象。

          一般來說, Datset 對(duì)象存儲(chǔ)數(shù)據(jù)模型, Renderer 對(duì)象存儲(chǔ)顯示模型, Plot 對(duì)象根據(jù) Datset 對(duì)象、 Renderer 對(duì)象完成畫圖操作。

          仍以上面的圖形講解 Plot 對(duì)象的組成。

             上圖的中間區(qū)域是是一個(gè) XYPlot 對(duì)象。其中的折線部分即是圖形的繪制單元 Renderer 對(duì)象。 X 軸是 DomainAxis y 軸是 RangeAxis ,其中 Datset 對(duì)象屬于數(shù)據(jù)模型范疇,是 UI 不可見對(duì)象。該圖中的 plot 背景色、網(wǎng)格線的各種設(shè)置可以通過 XYPlot 對(duì)象本身完成。

                 下面講解 Renderer 對(duì)象、 Axis 對(duì)象( X 軸、 y 軸都屬于 Axis 對(duì)象), Datset 對(duì)象在后續(xù)章節(jié)中專門講解。

          2 31 Renderer對(duì)象

          Renderer 對(duì)象是圖形的繪制單元。 JFreeChart 提供了兩個(gè)接口 CategoryItemRenderer XYItemRenderer 1 個(gè)抽象類 AbstractRenderer 供具體的 Renderer 類實(shí)現(xiàn),給出了將近 50 種具體實(shí)現(xiàn)類。

          一般來說 Renderer 對(duì)象可進(jìn)行的操作有:對(duì) item label (下圖中的柱狀圖上的紅色數(shù)字即為 item label 的示例)的默認(rèn)設(shè)置( item label 的產(chǎn)生方式、是否可見、字體、 Paint 、正反向 item label 的位置設(shè)置等)、繪制圖形的邊框默認(rèn)設(shè)置( Paint 、筆畫、是否可見等)、繪制圖形的默認(rèn)設(shè)置(形狀、筆畫、是否可見、對(duì)應(yīng)的圖例中是否可見等,折線圖還有線條是否可見、折點(diǎn)圖形是否可見、折點(diǎn)圖形是否填充、折點(diǎn)圖形的形狀、對(duì)應(yīng)的圖例中線條是否可見、圖形是否可見、整體是否可見等)、以及對(duì)指定 item label 的設(shè)置、指定繪制圖形的設(shè)置。可以說和具體繪制的圖形相關(guān)的屬性都可以通過 Renderer 對(duì)象設(shè)置。

          不同的 Renderer 的實(shí)現(xiàn)類實(shí)現(xiàn)了不同的顯示方式,在含有 Renderer 對(duì)象的 JFreeChart 對(duì)象中, R enderer 對(duì)象決定了JFreeChart對(duì)象的顯示方式。例如:柱狀圖的Plot對(duì)象中默認(rèn)的Renderer對(duì)象是 CategoryItemRenderer 對(duì)象,通過設(shè)置 Plot 對(duì)象的Renderer對(duì)象 LineAndShapeRenderer ,則柱狀圖變?yōu)榫€圖。使用中一般不需要顯式的實(shí)例化一個(gè) R enderer 對(duì)象,一般通過 JFreeChart 對(duì)象的 Plot 對(duì)象調(diào)用現(xiàn)有的 R enderer 對(duì)象進(jìn)行重新設(shè)置等操作。

          2 32 Axis對(duì)象

          JFreeChart 提供了兩種類型的坐標(biāo)軸: CategoryAxis (等級(jí)軸)和 ValueAxis (值軸), ValueAxis 又有 3 個(gè)子類: DateAxis (時(shí)間軸)、 NumberAxis (數(shù)字軸)、 PeriodAxis (時(shí)期軸)。這些坐標(biāo)軸還有更詳細(xì)的子類,不再一一列舉

          Axis 對(duì)象可進(jìn)行的操作有:標(biāo)題的設(shè)置(內(nèi)容、字體、Paint、顯示角度等)、坐標(biāo)線的設(shè)置(筆畫、Paint、是否可見等)、刻度線的設(shè)置(是否可見、筆畫、Paint、位于繪圖區(qū)域的長(zhǎng)度、位于繪圖區(qū)域外的長(zhǎng)度等)、刻度標(biāo)示的設(shè)置(筆畫、Paint、字體、與軸的距離等)、坐標(biāo)軸范圍設(shè)置等。

          CategoryAxis 對(duì)象還可以進(jìn)行的操作有: 刻度標(biāo)示間距 設(shè)置( 最小間距、最大間距、指定間距)等。

          ValueAxis 對(duì)象可進(jìn)行的操作有:軸端設(shè)置(顯示的圖形形狀)、范圍設(shè)置(是否自動(dòng)產(chǎn)生范圍、自動(dòng)產(chǎn)生的最小范圍、最大范圍、指定確定范圍、指定范圍大小等)、間隔設(shè)置(是否自動(dòng)產(chǎn)生間隔、指定間隔)等。

          DateAxis 對(duì)象還有對(duì)時(shí)間刻度顯示格式的設(shè)置操作。

          2 4 子標(biāo)題對(duì)象

              子標(biāo)題對(duì)象是 Title 類型的對(duì)象,一個(gè)JFreeChart可以有多個(gè)子標(biāo)題對(duì)象。JFreeChart提供了5Title的實(shí)現(xiàn),可以是圖片、文本、圖例等的形式。

          (數(shù)據(jù)源以及常用圖形的處理以及進(jìn)一步的討論在后續(xù)文章中介紹)
           

          Feedback

          # re: 【原創(chuàng)】深入探究JFreeChart(1)  回復(fù)  更多評(píng)論   

          2006-09-08 09:56 by hhh

          jfreechart 小組 http://www.douban.com/group/19919/

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


          網(wǎng)站導(dǎo)航:
           
          主站蜘蛛池模板: 浦东新区| 九台市| 巴彦淖尔市| 浏阳市| 新宾| 福建省| 平遥县| 金寨县| 弋阳县| 依兰县| 瑞昌市| 巢湖市| 浦江县| 吐鲁番市| 岳池县| 福鼎市| 江华| 建阳市| 滦南县| 邹平县| 洛南县| 芜湖市| 宕昌县| 鞍山市| 莲花县| 安塞县| 鹿泉市| 西丰县| 大悟县| 年辖:市辖区| 景德镇市| 陆川县| 湘潭县| 岳阳县| 光泽县| 成安县| 卓资县| 格尔木市| 普定县| 南阳市| 安国市|