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

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

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

    JavaExplore

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

    3 數(shù)據(jù)源處理

    JFreeChart 中的數(shù)據(jù)源是DataSet接口類型。該接口有三個主要的子類接口:CategoryDatasetPieDatasetSeriesDataset

    CategoryDataset 接口的實現(xiàn)類基本上都維護了一個三元組<value,row,col>的列表結構。不同的實現(xiàn)類中value 的類型不相同。<row,col>唯一確定一個三元組。CategoryDataset的實現(xiàn)類提供對這個三元組的增刪改查操作。

    PieDataset 接口有兩個主要的實現(xiàn)類:CategoryToPieDataset DefaultPieDatasetPieDataset接口的實現(xiàn)類基本上都維護了一個二元組<key,value>的列表結構。Key唯一確定一個二元組。CategoryDataset的實現(xiàn)類提供對這個二元組的增刪改查操作。CategoryToPieDataset中的二元結構列表通過對CategoryDataset類型的對象指定行或者列轉化過來。DefaultPieDataset直接維護一個二元結構列表。

    SeriesDataset 接口的實現(xiàn)類基本上都維護了一種特定數(shù)據(jù)結構的列表。以TimeSeriesCollection為例。它維護一個TimeSeries對象列表,提供對該列表的增刪查操作。每個TimeSeries對象維護一個<time,value>列表,提供對該列表的增刪改查操作。

    JFreeChart 中對常見圖形的處理

    ?????? JFreeChart 并不存在多個不同的類來生成不同的圖形。所有的圖形都是具體類 JFreeChart 的實例化對象,初始化 JFreeChart 對象的時候通過指定不同的 Plot 實現(xiàn)類就可以顯示出不同的圖形。不同的 Plot 實現(xiàn)類具有不同的 Renderer 對象、 Axis 對象、 Dataset 對象。

    ?????? JFreeChart 提供工廠類 ChartFactory 方便使用者生成各種不同的圖形。 ChartFactory 類的各個工廠方法中實現(xiàn)對具體 Plot 的指定以及對類 JFreeChart 構造函數(shù)的調用。

    ?????? 下面以常用圖形說一下常用的使用流程(大部分的操作講的并不全面,比如 JFreeChart 可能提供了很多增加、修改數(shù)據(jù)的方式,下文中可能只列舉一種)。

    1 柱狀圖

    1 )平面柱狀圖

    ?????? 生成柱狀圖操作:

    ?????? JFreeChart chart = ChartFactory.createBarChart(

    ?????? ??????? ?????? String title,???????????????? // 圖標題

    ??????????????? String categoryAxisLabel,???? //x 軸標題

    ??????????????? String valueAxisLabel,?????? //y 軸標題

    ??????????????? CategoryDataset dataset,????? // 數(shù)據(jù)源

    ??????????????? PlotOrientation orientation,??? // 顯示方向

    ???????????????? boolean legend,???????????? // 是否顯示圖例

    ???????????????? boolean tooltips,??????????? // 是否顯示 tooltip

    ???????????????? boolean urls) ???????????? // 是否指定 url

    平面柱狀圖的 Plot 對象是 CategoryPlot 類型。 CategoryPlot 對象的 x 軸是 CategoryAxis 對象, y 軸是 NumberAxis 對象,繪制單元是 BarRenderer 對象,數(shù)據(jù)源是 CategoryDataset 對象。

    ?

    獲取 CategoryPlot 對象操作為:

    CategoryPlot plot = ( CategoryPlot ) chart.getPlot(); 或者

    CategoryPlot plot = chart.getCategoryPlot();

    獲取繪制單元操作:

    ?????? BarRenderer renderer = (BarRenderer) plot.getRenderer();

    獲取 x 軸的操作:

    CategoryAxis xAxis = ( CategoryAxis ) plot.getDomainAxis();

    獲取 y 軸操作:

    NumberAxis yAxis = (NumberAxis) plot.getRangeAxis();

    獲取數(shù)據(jù)源:

    CategoryDataset dataset=plot.getDataset();

    ?

    ?????? 柱狀圖可以接受一切 CategoryDataset 類型的數(shù)據(jù)源,下面講解一下常用的 CategoryDataset 類型 DefaultCategoryDataset 的使用方式

    實例化:

    DefaultCategoryDataset dataset = new DefaultCategoryDataset();

    增加數(shù)據(jù)

    dataset .addValue(double value, Comparable rowKey, Comparable columnKey) ;

    刪除數(shù)據(jù):

    ?????? dataset .removeValue(Comparable rowKey, Comparable columnKey);

    ?????? 或者

    ?????? dataset. removeColumn(int columnIndex);

    ?????? 或者

    ?????? dataset. removeColumn(Comparable columnKey);

    ?????? 對行同樣有上述兩種刪除方式,不在列舉。

    修改數(shù)據(jù):

    ?????? dataset. setValue(double value, Comparable rowKey, Comparable columnKey);

    查詢數(shù)據(jù) :

    plot 對象、繪制單元、 x 軸、 y 軸的顯示特性修改不再一一介紹。

    2 3D 柱狀圖

    ?????? 對應的工廠方法為 createBarChart3D ,該方法的參數(shù)與平面柱狀圖相同。 3D 柱狀圖的 Plot 對象是 CategoryPlot 類型。 CategoryPlot 對象的 x 軸是 CategoryAxis3D 對象, y 軸是 NumberAxis3D 對象,繪制單元是 BarRenderer3D 對象,數(shù)據(jù)源是 CategoryDataset 對象。

    ?????? 具體使用以及操作與平面柱狀圖雷同,不在詳述。

    2 餅狀圖

    (1) 平面餅狀圖

    生成平面餅狀圖:

    JFreeChart chart = ChartFactory. createPieChart(String title, // 圖標題

    ???????????????????????? ?PieDataset dataset, ????? // 數(shù)據(jù)源

    ???????????????????????? ?boolean legend, ????????// 是否顯示圖例

    ???????????????????????? ?boolean tooltips,? ???????// 是否顯示tooltip

    ???????????????????????? ?boolean urls) ???????? // 是否指定url

    平面餅狀圖的Plot對象是PiePlot類型。PiePlot對象沒有x軸對象、y軸對象、繪制單元對象,數(shù)據(jù)源是PieDataset對象。

    ?

    獲取PiePlot對象操作為:

    PiePlot plot = (PiePlot) chart.getPlot();

    獲取數(shù)據(jù)源:

    PieDataset dataset= plot .getDataset();

    ?

    餅狀圖可以接受一切 PieDataset 類型的數(shù)據(jù)源,下面講解一下常用的 PieDataset 類型 DefaultPieDataset 的使用方式

    實例化:

    ??? DefaultPieDataset dataset = new DefaultPieDataset();

    增加修改操作:

    ??? dataset. setValue(Comparable key, double value);

    刪除操作:

    ??? dataset. remove(Comparable key);

    查詢操作:

    ??? dataset. getKey(int item);

    或者

    dataset. getValue(int item);

    ?

    (1)3D 餅狀圖

    ?????? 對應的工廠方法為 createPieChart3D ,參數(shù)與平面餅狀圖相同。與平面餅狀圖的差別在于 Plot 對象是PiePlot3D類型 ,不再詳述。

    3 多重餅狀圖

    1 )多重平面餅狀圖

    生成多重平面餅狀圖:

    ?????? JFreeChart chart = ChartFactory. createMultiplePieChart

    (String title,?????????????? // 圖標題

    ??????????????????????? CategoryDataset dataset,???? // 數(shù)據(jù)源

    ??????????????????????? TableOrder order,?????? // 指定提取數(shù)據(jù)的方式(按行或者按列)

    ??????????????????????? boolean legend,??????????? // 是否顯示圖例

    ??????????????????????? boolean tooltips,??????????? // 是否顯示 tooltip

    ??????????????????????? boolean urls)?? ?????????? // 是否指定 url

    多重平面餅狀圖的 Plot 對象是 MultiplePiePlot 類型。 MultiplePiePlot 對象沒有 x 軸對象、 y 軸對象、繪制單元對象,數(shù)據(jù)源是 CategoryDataset 對象。 MultiplePiePlot 對象中可以含有多個子 JFreeChart 對象,子 JFreeChart 對象是上面講過的餅狀圖對象。

    ?

    獲取 MultiplePiePlot 對象操作為:

    MultiplePiePlot plotMain = (MultiplePiePlot) chart.getPlot();

    獲取子 JFreeChart 的操作為:

    ?????? JFreeChart childChart=plotMain.getPieChart();

    獲取數(shù)據(jù)源:

    CategoryDataset dataset= plotMain .getDataset();

    2 )多重 3D 餅狀圖

    ?????? 對應的工廠方法為 createMultiplePieChart3D ,該方法的參數(shù)與 多重平面餅狀圖 相同。 多重 3D 餅狀圖的 Plot 對象是 MultiplePiePlot 類型。 MultiplePiePlot 對象中可以含有多個子 JFreeChart 對象,子 JFreeChart 對象是上面講過的 3D 餅狀圖對象。

    4 線圖

    1 )平面線圖

    ?????? 生成平面線圖:

    ?????? JFreeChart chart = ChartFactory. createLineChart(String title,? // 圖標題

    ???????????????????????? String categoryAxisLabel,???????? //x 軸標題

    ???????????????????????? String valueAxisLabel,??????????? //y 軸標題

    ???????????????????????? CategoryDataset dataset,?????????? // 數(shù)據(jù)源

    ???????????????????????? PlotOrientation orientation,???????? // 顯示方向

    ???????????????????????? boolean legend,???????????????? // 是否顯示圖例

    ???????????????????????? boolean tooltips,???????????????? // 是否顯示 tooltip

    ???????????????????????? boolean urls);????????????????? // 是否指定 url

    平面線圖除了的 Plot 對象中繪制單元對象是 LineAndShapeRenderer 對象,其他一切組成對象與平面柱狀圖相同。

    獲取 Renderer 操作:

    LineAndShapeRenderer renderer=(LineAndShapeRenderer) plot.getRenderer();

    其他參考平面柱狀圖。

    2 3D 線圖

    對應工廠方法為 createLineChart3D ,參數(shù)與 createLineChart 相同。 3D 線圖的組成對象除了繪制單元對象是 LineAndShapeRenderer3D 對象,其他一切組成對象與 3D 柱狀圖相同。

    5 時序圖

    生成時序圖:

    ?????? JFreeChart chart = ChartFactory.createTimeSeriesChart(

    ????????????? String title,??? // 圖標題

    ???????????????? String timeAxisLabel,?? //x 軸標題

    ???????????????? String valueAxisLabel,? //y 軸標題

    ??????? ?????????XYDataset dataset,?????? // 數(shù)據(jù)源

    ???????????????? boolean legend,????????? // 是否顯示圖例

    ???????????????? boolean tooltips,??????? // 是否顯示 tooltip

    ???????????????? boolean urls);?????????? // 是否指定 url

    時序圖的 Plot 對象是 XYPlot 類型。 XYPlot 對象的 x 軸是 DateAxis 對象, y 軸是 NumberAxis 對象,繪制單元是 XYLineAndShapeRenderer 對象,數(shù)據(jù)源是 XYDataset 對象。

    Plot 對象的獲取操作:

    ?????? XYPlot plot = (XYPlot) chart.getPlot();

    X 軸對象的獲取操作:

    ?????? DateAxis xAxis = (DateAxis) plot.getDomainAxis();

    Y 軸對象的獲取操作:

    ?????? NumberAxis yAxis =(NumberAxis) plot.getRangeAxis();

    Renderer 對象的獲取操作:

    ?????? XYItemRenderer renderer= plot.getRenderer();

    ?

    時序圖可以接受一切 XYDataset 類型的數(shù)據(jù)源,下面講解一下常用的 XYDataset 類型 TimeSeriesCollection 的使用方式。

    實例化:

    ?????? TimeSeriesCollection dataset=new TimeSeriesCollection();

    添加數(shù)據(jù)操作:

    ?????? dataset. addSeries(TimeSeries); // 后面講解 TimeSeries 對象

    刪除數(shù)據(jù)操作:

    ?????? dataset. removeSeries(int index);

    查詢數(shù)據(jù)操作 :

    ?????? dataset. getSeries(int series);

    ?

    TimeSeries 對象操作

    實例化:

    ?????? TimeSeries ts=TimeSeries(String name, Class timePeriodClass);

    增加數(shù)據(jù)操作:

    ?????? ts. add(RegularTimePeriod period, double value);?

    刪除數(shù)據(jù)操作:

    ?????? ts. delete(RegularTimePeriod period);???

    修改數(shù)據(jù)操作:

    ?????? ts. update(RegularTimePeriod period, Number value);

    查詢數(shù)據(jù)操作:

    ?????? ts. getValue(RegularTimePeriod period);

    RegularTimePeriod JFreeChart 提供的時間模板類,它有很多具體的時間類,比如: Minute Second Hour Day…… 等,不再詳述。

    Feedback

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

    2006-09-13 08:50 by 陳琪
    看了你的文章,讓我對jfreechart更了解了,確實是入門的知識

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

    2006-09-14 15:08 by 譚俊
    謝謝,受益非淺,期待續(xù)篇

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

    2006-09-14 18:19 by 冰川
    恩,不錯!

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

    2006-09-18 16:28 by 非注冊用戶11
    thanks a lot....

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

    2006-11-13 15:42 by kaui
    specital thank

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

    2007-09-11 10:37 by aaa
    有待繼續(xù)
    不錯!

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

    2007-09-13 10:35 by chxmlmn
    對入門的人的幫助非常的大,謝謝樓主了。希望樓主繼續(xù)共享一些這方面知識。

    # re: 【原創(chuàng)】深入探究JFreeChart(2) [未登錄]  回復  更多評論   

    2007-09-13 22:54 by javaexplore
    很高興對大家有幫助 這是以前預研圖象顯示的時候寫的 這是和具體項目無關的一部分 供大家分享。有關jfreechart已經(jīng)不需要再繼續(xù)介紹了,往后就需要大家拿jfreechart的api手冊查了,沒有的話,拿到源碼javadoc生成就可以。jfreechart抽象的很好,看好了我寫的第一篇,需要什么再去api手冊里查就可以了。

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

    2008-05-07 16:36 by chen
    謝謝,頂頂!!!!

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

    2008-12-02 15:59 by 鮑明禮
    謝謝。。。

    # re: 【原創(chuàng)】深入探究JFreeChart(2) [未登錄]  回復  更多評論   

    2009-02-05 13:32 by OK
    謝謝很好的Jfreechart介紹

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

    2009-07-17 10:32 by song_27149
    你的文章幫了我大忙了,謝謝!收藏了!

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

    2010-06-29 17:31 by 淘寶網(wǎng)
    JFreeChart 并不存在多個不同的類來生成不同的圖形。所有的圖形都是具體類 JFreeChart 的實例化對象,初始化 JFreeChart 對象的時候通過指定不同的 Plot 實現(xiàn)類就可以顯示出不同的圖形。不同的 Plot 實現(xiàn)類具有不同的 Renderer 對象、 Axis 對象、 Dataset 對象。

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

    2011-07-16 14:29 by zhaoxy
    樓主,急求一個問題的解答,還望拔亢賜教。
    我用ChartFactory.createStackedBarChart3D生成了一個堆疊的柱圖效果,希望其中每一個色塊的顏色都可以自己配置。不是每個系列的柱圖,而是所有都能自己配置,不知可以用什么方法?

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

    2012-03-15 14:34 by hel
    請問能否制作出折線圖突出其中的一個折點呢,

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


    網(wǎng)站導航:
     
    主站蜘蛛池模板: 日本午夜免费福利视频| 免费大黄网站在线观看| 亚洲中文字幕无码久久2020| 日韩免费观看的一级毛片| xvideos永久免费入口| 中文字幕亚洲免费无线观看日本| 国产成人A在线观看视频免费 | 亚洲一区二区三区香蕉| 日本亚洲欧洲免费天堂午夜看片女人员 | 亚洲精品国产自在久久 | 最近中文字幕无吗高清免费视频| 亚洲综合久久精品无码色欲| 免费大黄网站在线观看| 色欲A∨无码蜜臀AV免费播| 亚洲欧美成aⅴ人在线观看| 亚洲精品无码不卡在线播HE| 国内自产拍自a免费毛片| a级毛片在线免费看| 亚洲丰满熟女一区二区哦| 国产AV无码专区亚洲精品| 成人毛片免费网站| 亚洲毛片免费视频| 37pao成人国产永久免费视频| 粉色视频成年免费人15次| 国产性爱在线观看亚洲黄色一级片| 中文字幕免费在线视频| 亚洲一区二区影院| 在线jlzzjlzz免费播放| 九九99热免费最新版| 亚洲欧洲日产v特级毛片| 噜噜嘿在线视频免费观看| 一级特黄录像免费播放肥| 精品亚洲456在线播放| 亚洲无码黄色网址| 成年私人影院免费视频网站| 国产精品视频全国免费观看 | 美女被爆羞羞网站免费| 亚洲AV午夜成人片| 免费中文字幕一级毛片| 中文字幕在线免费看| 亚洲视频一区调教|