<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    廉頗老矣,尚能飯否

    java:從技術(shù)到管理

    常用鏈接

    統(tǒng)計(jì)

    最新評(píng)論

    深入探究JFreeChart(1)[轉(zhuǎn)載]

    1  簡(jiǎn)介

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

    JFreeChart 可以生成很多圖形對(duì)象,它的工廠(chǎng)類(lèi)提供了 33 個(gè)工廠(chǎng)方法用于生成不同的圖形對(duì)象(具體的工廠(chǎng)方法可以參見(jiàn) JFreeChart 的 API 手冊(cè)或者源碼中的 ChartFactory 類(lèi) )。              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è)置(是否可見(jiàn)、筆畫(huà)、 Paint 等)、渲染方式的設(shè)置、標(biāo)題對(duì)象的設(shè)置、子標(biāo)題對(duì)象的增刪查操作。(本文中的所有操作都不提供代碼級(jí)的介紹,可參見(jiàn) API 手冊(cè)或者源碼)
    2 .2 主標(biāo)題對(duì)象

    主標(biāo)題對(duì)象是 TextTitle 類(lèi)型,可以進(jìn)行的操作有:背景設(shè)置、字體設(shè)置(字體類(lèi)型、顏色、內(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è)置、無(wú)數(shù)據(jù)存在情況的設(shè)置(顯示的字符內(nèi)容、顯示的字體、顯示的 Paint )、放大縮小比例的設(shè)置,大部分 Plot 對(duì)象還有設(shè)置 Datset 、設(shè)置 Renderer 對(duì)象操作。

    JFreeChart 中有 18 種 Plot 抽象類(lèi)的具體實(shí)現(xiàn)類(lèi)。 Plot 的具體實(shí)現(xiàn)類(lèi)主要由以下重要對(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 類(lèi)都含有 Datset 對(duì)象, FastScatterPlot 使用 float 的二維數(shù)組充當(dāng)數(shù)據(jù)源。尤其說(shuō)明一點(diǎn),餅狀圖相關(guān)的 Plot 對(duì)象( MultiplePiePlot 、 PiePlot 、 PiePlot3D 、 RingPlot )中都不含有 Renderer 對(duì)象、 DomainAxis 對(duì)象、 RangeAxis 對(duì)象。

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

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

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

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

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

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

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

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

    Axis 對(duì)象可進(jìn)行的操作有:標(biāo)題的設(shè)置(內(nèi)容、字體、Paint、顯示角度等)、坐標(biāo)線(xiàn)的設(shè)置(筆畫(huà)、Paint、是否可見(jiàn)等)、刻度線(xiàn)的設(shè)置(是否可見(jiàn)、筆畫(huà)、Paint、位于繪圖區(qū)域的長(zhǎng)度、位于繪圖區(qū)域外的長(zhǎng)度等)、刻度標(biāo)示的設(shè)置(筆畫(huà)、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 類(lèi)型的對(duì)象,一個(gè)JFreeChart可以有多個(gè)子標(biāo)題對(duì)象。JFreeChart提供了5種Title的實(shí)現(xiàn),可以是圖片、文本、圖例等的形式。

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

    柳德才
    13691193654
    18942949207
    QQ:422157370
    liudecai_zan@126.com
    湖北-武漢-江夏-廟山

    posted on 2009-01-10 10:24 liudecai_zan@126.com 閱讀(437) 評(píng)論(0)  編輯  收藏 所屬分類(lèi): JFreeChart

    主站蜘蛛池模板: 窝窝影视午夜看片免费| 亚洲理论片在线观看| 国产亚洲人成在线播放| 成年网站免费视频A在线双飞| 精品无码一区二区三区亚洲桃色| 久久久久久免费一区二区三区 | 久久成人a毛片免费观看网站| 国产av无码专区亚洲国产精品 | 国精产品一区一区三区免费视频| 中文字幕亚洲电影| 免费国产美女爽到喷出水来视频| 国产亚洲免费的视频看| 亚洲日日做天天做日日谢| 在线看免费观看AV深夜影院| 亚洲一区二区三区四区视频| 一个人免费播放在线视频看片| 亚洲一区二区中文| 欧洲人免费视频网站在线| 亚洲人成电影福利在线播放 | 国产亚洲高清不卡在线观看| 你懂得的在线观看免费视频| 亚洲第一精品在线视频| 色影音免费色资源| 亚洲成a人无码亚洲成www牛牛| 人人玩人人添人人澡免费| 中文字幕亚洲免费无线观看日本| 九九精品免费视频| 国产亚洲精品美女2020久久| 亚洲一区精品无码| 18禁网站免费无遮挡无码中文 | 涩涩色中文综合亚洲| 四虎永久成人免费影院域名| 亚洲日韩中文字幕天堂不卡| 在线观看免费污视频| 亚洲最大福利视频网站| 免费一本色道久久一区| 日韩免费在线中文字幕| 亚洲精品免费观看| 免费无码看av的网站| 99re6在线精品免费观看| 亚洲香蕉久久一区二区三区四区|