JavaExplore

          一切像霧像雨又像風
          posts - 19, comments - 45, trackbacks - 0, articles - 0

          1 簡介

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

          2 圖形 對象的處理

          2 1 JFreeChart對象

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

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

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

          2 2 主標題對象

          主標題對象是 TextTitle 類型,可以進行的操作有:背景設置、字體設置(字體類型、顏色、內容、對齊方式等操作)、 tooltip 設置、 URL 設置。

          2 3 Plot 對象

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

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

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

          仍以上面的圖形講解 Plot 對象的組成。

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

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

          2 31 Renderer對象

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

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

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

          2 32 Axis對象

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

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

          CategoryAxis 對象還可以進行的操作有: 刻度標示間距 設置( 最小間距、最大間距、指定間距)等。

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

          DateAxis 對象還有對時間刻度顯示格式的設置操作。

          2 4 子標題對象

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

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

          Feedback

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

          2006-09-08 09:56 by hhh

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

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


          網(wǎng)站導航:
           
          主站蜘蛛池模板: 河北省| 邛崃市| 米林县| 竹山县| 定州市| 杂多县| 定兴县| 西藏| 福海县| 迭部县| 涿州市| 那曲县| 仁怀市| 永兴县| 资溪县| 汉沽区| 南江县| 柳林县| 梁河县| 望奎县| 工布江达县| 廉江市| 丰城市| 那曲县| 长子县| 长葛市| 天峨县| 云阳县| 宁陕县| 平利县| 湾仔区| 晋宁县| 宜川县| 文昌市| 衡山县| 罗源县| 库车县| 华宁县| 缙云县| 阜城县| 札达县|