posts - 32,  comments - 3,  trackbacks - 0
                   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)平面柱狀圖

              生成柱狀圖操作:

          JFreeChartchart=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(doublevalue,ComparablerowKey,ComparablecolumnKey);

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

                 dataset.removeValue(ComparablerowKey,ComparablecolumnKey);

              或者

                 dataset.removeColumn(intcolumnIndex);

              或者

                 dataset.removeColumn(ComparablecolumnKey);

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

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

                 dataset.setValue(doublevalue,ComparablerowKey,ComparablecolumnKey);

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

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

          23D柱狀圖

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

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

          2餅狀圖

          (1)平面餅狀圖

          生成平面餅狀圖:

          JFreeChartchart=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的使用方式

          實例化:

              DefaultPieDatasetdataset=newDefaultPieDataset();

          增加修改操作:

              dataset.setValue(Comparablekey,doublevalue);

          刪除操作:

              dataset.remove(Comparablekey);

          查詢操作:

              dataset.getKey(intitem);

          或者

          dataset.getValue(intitem);

          (1)3D餅狀圖

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

          3多重餅狀圖

          1)多重平面餅狀圖

          生成多重平面餅狀圖:

          JFreeChartchart=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)平面線圖

              生成平面線圖:

          JFreeChartchart=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();

          其他參考平面柱狀圖。

          23D線圖

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

          5時序圖

          生成時序圖:

          JfreeChartchart = 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 = newTimeSeriesCollection();

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

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

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

                 dataset.removeSeries(intindex);

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

                 dataset.getSeries(intseries);

          TimeSeries對象操作

          實例化:

                 TimeSeries ts = TimeSeries(Stringname,ClasstimePeriodClass);

          增加數(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(RegularTimePeriodperiod);

          RegularTimePeriodJFreeChart提供的時間模板類,它有很多具體的時間類,比如:MinuteSecondHourDay……等,不再詳述。

          posted on 2010-07-20 20:33 donghang73 閱讀(1236) 評論(0)  編輯  收藏 所屬分類: 學習筆記
          主站蜘蛛池模板: 嘉峪关市| 米脂县| 钦州市| 防城港市| 长岛县| 华亭县| 凤台县| 巧家县| 永年县| 唐山市| 二连浩特市| 晋中市| 积石山| 区。| 永修县| 准格尔旗| 伊川县| 无棣县| 获嘉县| 兴隆县| 姚安县| 阜新市| 延庆县| 灵武市| 五指山市| 瑞金市| 博野县| 竹山县| 沧州市| 嘉祥县| 虞城县| 晋宁县| 德庆县| 辛集市| 长宁县| 若尔盖县| 永修县| 闽侯县| 明水县| 黔西县| 德阳市|