JFreeChart并不存在多個(gè)不同的類來(lái)生成不同的圖形。所有的圖形都是具體類JFreeChart的實(shí)例化對(duì)象,初始化JFreeChart對(duì)象的時(shí)候通過(guò)指定不同的Plot實(shí)現(xiàn)類就可以顯示出不同的圖形。不同的Plot實(shí)現(xiàn)類具有不同的Renderer對(duì)象、Axis對(duì)象、Dataset對(duì)象。
JFreeChart提供工廠類ChartFactory方便使用者生成各種不同的圖形。ChartFactory類的各個(gè)工廠方法中實(shí)現(xiàn)對(duì)具體Plot的指定以及對(duì)類JFreeChart構(gòu)造函數(shù)的調(diào)用。
下面以常用圖形說(shuō)一下常用的使用流程(大部分的操作講的并不全面,比如JFreeChart可能提供了很多增加、修改數(shù)據(jù)的方式,下文中可能只列舉一種)。
1柱狀圖
(1)平面柱狀圖
生成柱狀圖操作:
JFreeChartchart=ChartFactory.createBarChart(String title,//圖標(biāo)題
String categoryAxisLabel,//x軸標(biāo)題
String valueAxisLabel,//y軸標(biāo)題
CategoryDataset dataset,//數(shù)據(jù)源
PlotOrientation orientation,//顯示方向
Boolean legend,//是否顯示圖例
Boolean tooltips,//是否顯示tooltip
Boolean urls);//是否指定url
平面柱狀圖的Plot對(duì)象是CategoryPlot類型。CategoryPlot對(duì)象的x軸是CategoryAxis對(duì)象,y軸是NumberAxis對(duì)象,繪制單元是BarRenderer對(duì)象,數(shù)據(jù)源是CategoryDataset對(duì)象。
獲取CategoryPlot對(duì)象操作為:
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的使用方式
實(shí)例化:
DefaultCategoryDataset dataset = new DefaultCategoryDataset();
增加數(shù)據(jù)
dataset.addValue(doublevalue,ComparablerowKey,ComparablecolumnKey);
刪除數(shù)據(jù):
dataset.removeValue(ComparablerowKey,ComparablecolumnKey);
或者
dataset.removeColumn(intcolumnIndex);
或者
dataset.removeColumn(ComparablecolumnKey);
對(duì)行同樣有上述兩種刪除方式,不在列舉。
修改數(shù)據(jù):
dataset.setValue(doublevalue,ComparablerowKey,ComparablecolumnKey);
查詢數(shù)據(jù):
對(duì)plot對(duì)象、繪制單元、x軸、y軸的顯示特性修改不再一一介紹。
(2)3D柱狀圖
對(duì)應(yīng)的工廠方法為createBarChart3D,該方法的參數(shù)與平面柱狀圖相同。3D柱狀圖的Plot對(duì)象是CategoryPlot類型。CategoryPlot對(duì)象的x軸是CategoryAxis3D對(duì)象,y軸是NumberAxis3D對(duì)象,繪制單元是BarRenderer3D對(duì)象,數(shù)據(jù)源是CategoryDataset對(duì)象。
具體使用以及操作與平面柱狀圖雷同,不在詳述。
2餅狀圖
(1)平面餅狀圖
生成平面餅狀圖:
JFreeChartchart=ChartFactory.createPieChart(String title,//圖標(biāo)題
PieDataset dataset,//數(shù)據(jù)源
Boolean legend,//是否顯示圖例
Boolean tooltips,//是否顯示tooltip
Boolean urls);//是否指定url
平面餅狀圖的Plot對(duì)象是PiePlot類型。PiePlot對(duì)象沒(méi)有x軸對(duì)象、y軸對(duì)象、繪制單元對(duì)象,數(shù)據(jù)源是PieDataset對(duì)象。
獲取PiePlot對(duì)象操作為:
PiePlot plot = (PiePlot)chart.getPlot();
獲取數(shù)據(jù)源:
PieDataset dataset = plot.getDataset();
餅狀圖可以接受一切PieDataset類型的數(shù)據(jù)源,下面講解一下常用的PieDataset類型DefaultPieDataset的使用方式
實(shí)例化:
DefaultPieDatasetdataset=newDefaultPieDataset();
增加修改操作:
dataset.setValue(Comparablekey,doublevalue);
刪除操作:
dataset.remove(Comparablekey);
查詢操作:
dataset.getKey(intitem);
或者
dataset.getValue(intitem);
(1)3D餅狀圖
對(duì)應(yīng)的工廠方法為createPieChart3D,參數(shù)與平面餅狀圖相同。與平面餅狀圖的差別在于Plot對(duì)象是PiePlot3D類型,不再詳述。
3多重餅狀圖
(1)多重平面餅狀圖
生成多重平面餅狀圖:
JFreeChartchart=ChartFactory.createMultiplePieChart (String title,//圖標(biāo)題
CategoryDataset dataset,//數(shù)據(jù)源
TableOrder order,//指定提取數(shù)據(jù)的方式(按行或者按列)
Boolean legend,//是否顯示圖例
boolean tooltips,//是否顯示tooltip
boolean urls) ;//是否指定url
多重平面餅狀圖的Plot對(duì)象是MultiplePiePlot類型。MultiplePiePlot對(duì)象沒(méi)有x軸對(duì)象、y軸對(duì)象、繪制單元對(duì)象,數(shù)據(jù)源是CategoryDataset對(duì)象。MultiplePiePlot對(duì)象中可以含有多個(gè)子JFreeChart對(duì)象,子JFreeChart對(duì)象是上面講過(guò)的餅狀圖對(duì)象。
獲取MultiplePiePlot對(duì)象操作為:
MultiplePiePlot plotMain = (MultiplePiePlot)chart.getPlot();
獲取子JFreeChart的操作為:
JfreeChart childChart = plotMain.getPieChart();
獲取數(shù)據(jù)源:
CategoryDataset dataset = plotMain.getDataset();
(2)多重3D餅狀圖
對(duì)應(yīng)的工廠方法為createMultiplePieChart3D,該方法的參數(shù)與多重平面餅狀圖相同。多重3D餅狀圖的Plot對(duì)象是MultiplePiePlot類型。MultiplePiePlot對(duì)象中可以含有多個(gè)子JFreeChart對(duì)象,子JFreeChart對(duì)象是上面講過(guò)的3D餅狀圖對(duì)象。
4線圖
(1)平面線圖
生成平面線圖:
JFreeChartchart=ChartFactory.createLineChart(String title,//圖標(biāo)題
String categoryAxisLabel,//x軸標(biāo)題
String valueAxisLabel,//y軸標(biāo)題
CategoryDataset dataset,//數(shù)據(jù)源
PlotOrientation orientation,//顯示方向
Boolean legend,//是否顯示圖例
Boolean tooltips,//是否顯示tooltip
Boolean urls);//是否指定url
平面線圖除了的Plot對(duì)象中繪制單元對(duì)象是LineAndShapeRenderer對(duì)象,其他一切組成對(duì)象與平面柱狀圖相同。
獲取Renderer操作:
LineAndShapeRenderer renderer = (LineAndShapeRenderer)plot.getRenderer();
其他參考平面柱狀圖。
(2)3D線圖
對(duì)應(yīng)工廠方法為createLineChart3D,參數(shù)與createLineChart相同。3D線圖的組成對(duì)象除了繪制單元對(duì)象是LineAndShapeRenderer3D對(duì)象,其他一切組成對(duì)象與3D柱狀圖相同。
5時(shí)序圖
生成時(shí)序圖:
JfreeChartchart = ChartFactory.createTimeSeriesChart(String title,//圖標(biāo)題
String timeAxisLabel,//x軸標(biāo)題
String valueAxisLabel,//y軸標(biāo)題
XYDataset dataset,//數(shù)據(jù)源
Boolean legend,//是否顯示圖例
Boolean tooltips,//是否顯示tooltip
Boolean urls);//是否指定url
時(shí)序圖的Plot對(duì)象是XYPlot類型。XYPlot對(duì)象的x軸是DateAxis對(duì)象,y軸是NumberAxis對(duì)象,繪制單元是XYLineAndShapeRenderer對(duì)象,數(shù)據(jù)源是XYDataset對(duì)象。
Plot對(duì)象的獲取操作:
XYPlot plot = (XYPlot)chart.getPlot();
X軸對(duì)象的獲取操作:
DateAxis xAxis = (DateAxis)plot.getDomainAxis();
Y軸對(duì)象的獲取操作:
NumberAxis yAxis = (NumberAxis)plot.getRangeAxis();
Renderer對(duì)象的獲取操作:
XYItemRenderer renderer = plot.getRenderer();
時(shí)序圖可以接受一切XYDataset類型的數(shù)據(jù)源,下面講解一下常用的XYDataset類型TimeSeriesCollection的使用方式。
實(shí)例化:
TimeSeriesCollection dataset = newTimeSeriesCollection();
添加數(shù)據(jù)操作:
dataset.addSeries(TimeSeries);//后面講解TimeSeries對(duì)象
刪除數(shù)據(jù)操作:
dataset.removeSeries(intindex);
查詢數(shù)據(jù)操作:
dataset.getSeries(intseries);
TimeSeries對(duì)象操作
實(shí)例化:
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);
類RegularTimePeriod是JFreeChart提供的時(shí)間模板類,它有很多具體的時(shí)間類,比如:Minute、Second、Hour、Day……等,不再詳述。
posted on 2010-07-20 20:33
donghang73 閱讀(1225)
評(píng)論(0) 編輯 收藏 所屬分類:
學(xué)習(xí)筆記