核心類主要有:
org.jfree.chart.JFreeChart :圖表對(duì)象,任何類型的圖表的最終表現(xiàn)形式都是在該對(duì)象進(jìn)行一些屬性的定制。 JFreeChart 引擎本身提供了一個(gè)工廠類用于創(chuàng)建不同類型的圖表對(duì)象
org.jfree.data.category.XXXDataSet: 數(shù)據(jù)集對(duì)象,用于提供顯示圖表所用的數(shù)據(jù)。根據(jù)不同類型的圖表對(duì)應(yīng)著很多類型的數(shù)據(jù)集對(duì)象類
org.jfree.chart.plot.XXXPlot :圖表區(qū)域?qū)ο?,基本上這個(gè)對(duì)象決定著什么樣式的圖表,創(chuàng)建該對(duì)象的時(shí)候需要 Axis 、 Renderer 以及數(shù)據(jù)集對(duì)象的支持
org.jfree.chart.axis.XXXAxis :用于處理圖表的兩個(gè)軸:縱軸和橫軸
org.jfree.chart.render.XXXRender :負(fù)責(zé)如何顯示一個(gè)圖表對(duì)象
org.jfree.chart.urls.XXXURLGenerator: 用于生成 Web 圖表中每個(gè)項(xiàng)目的鼠標(biāo)點(diǎn)擊鏈接
XXXXXToolTipGenerator: 用于生成圖象的幫助提示,不同類型圖表對(duì)應(yīng)不同類型的工具提示類
表5.1 JFreeChart核心類及其功能
類名 |
功能 |
JFreeChart |
圖表對(duì)象。生成任何類型的圖表都要通過該對(duì)象,JFreeChart插件提供了一個(gè)工廠類ChartFactory,用來創(chuàng)建各種類型的圖表對(duì)象 |
XXXDataset |
數(shù)據(jù)集對(duì)象。用來保存繪制圖表的數(shù)據(jù),不同類型的圖表對(duì)應(yīng)著不同類型的數(shù)據(jù)集對(duì)象 |
XXXPlot |
繪圖區(qū)對(duì)象。如果需要自行定義繪圖區(qū)的相關(guān)繪制屬性,需要通過該對(duì)象進(jìn)行設(shè)置 |
XXXAxis |
坐標(biāo)軸對(duì)象。用來定義坐標(biāo)軸的繪制屬性 |
XXXRenderer |
圖片渲染對(duì)象。用于渲染和顯示圖表 |
XXXURLGenerator |
鏈接對(duì)象。用于生成Web圖表中項(xiàng)目的鼠標(biāo)單擊鏈接 |
XXXToolTipGenerator |
圖表提示對(duì)象。用于生成圖表提示信息,不同類型的圖表對(duì)應(yīng)著不同類型的圖表提示對(duì)象 |
通過工廠類ChartFactory,可以創(chuàng)建各種類型的圖表對(duì)象,常用的創(chuàng)建JFreeChart實(shí)例的方法及其功能請(qǐng)參見表5.2。
表5.2 ChartFactory類中常用方法及其功能
名稱 |
功能 |
createBarChart()和createBarChart3D() |
分別用來創(chuàng)建繪制普通柱形圖和3D柱形圖的JFreeChart實(shí)例,它們基于的是DefaultCategoryDataset類型的數(shù)據(jù)集 |
createXYBarChart() |
用來創(chuàng)建繪制普通柱形圖的JFreeChart實(shí)例,它基于的是TimeSeries類型的數(shù)據(jù)集,TimeSeries數(shù)據(jù)集主要用來繪制與日期和時(shí)間相關(guān)的統(tǒng)計(jì)圖 |
createStackedBarChart()和createStackedBarChart3D() |
它們同createBarChart()和createBarChart3D()的功能相同,只是繪制出的柱形圖效果不同,它們可以互換使用 |
createPieChart()和createPieChart3D() |
分別用來創(chuàng)建繪制普通餅形圖和3D餅形圖的JFreeChart實(shí)例,它們基于的是DefaultPieDataset類型的數(shù)據(jù)集 |
createLineChart()和createLineChart3D() |
分別用來創(chuàng)建繪制普通折線圖和3D折線圖的JFreeChart實(shí)例,它們基于的是DefaultCategoryDataset類型的數(shù)據(jù)集 |
createXYLineChart() |
用來創(chuàng)建繪制普通折線圖的JFreeChart實(shí)例,它基于的是TimeSeries類型的數(shù)據(jù)集,TimeSeries數(shù)據(jù)集主要用來繪制與日期和時(shí)間相關(guān)的統(tǒng)計(jì)圖 |
createAreaChart() |
用來創(chuàng)建繪制普通區(qū)域圖的JFreeChart實(shí)例,它基于的是DefaultCategoryDataset類型的數(shù)據(jù)集 |
createXYAreaChart() |
用來創(chuàng)建繪制普通區(qū)域圖的JFreeChart實(shí)例,它基于的是TimeSeries類型的數(shù)據(jù)集,TimeSeries數(shù)據(jù)集主要用來繪制與日期和時(shí)間相關(guān)的統(tǒng)計(jì)圖 |
createTimeSeriesChart() |
用來創(chuàng)建繪制普通時(shí)序圖的JFreeChart實(shí)例,時(shí)序圖與折線圖有些類似,不過時(shí)序圖提供了繪制移動(dòng)平均線的功能,通過給定的數(shù)據(jù)集實(shí)例,可以自動(dòng)計(jì)算任意時(shí)間段的移動(dòng)平均值,它基于的是TimeSeries類型的數(shù)據(jù)集,TimeSeries數(shù)據(jù)集主要用來繪制與日期和時(shí)間相關(guān)的統(tǒng)計(jì)圖 |
注意:ChartFactory類中的所有方法均需要傳入一個(gè)數(shù)據(jù)集實(shí)例,并且返回值類型均為JFreeChart!
如果是通過工廠類ChartFactory創(chuàng)建JFreeChart實(shí)例,可以通過ChartFactory類提供的方法獲得繪圖區(qū)實(shí)例;如果是通過JFreeChart類創(chuàng)建JFreeChart實(shí)例,則需要在創(chuàng)建JFreeChart實(shí)例之前訂制好繪圖區(qū)實(shí)例,然后在創(chuàng)建時(shí)傳入。常用的繪圖區(qū)類及其功能請(qǐng)參見表5.3。
表5.3 常用的繪圖區(qū)類及其功能
名稱 |
功能 |
CategoryPlot |
在繪制基于DefaultCategoryDataset數(shù)據(jù)集的柱形圖、折線圖、區(qū)域圖時(shí),繪圖區(qū)為該類型 |
PiePlot |
在繪制普通餅形圖時(shí),繪圖區(qū)為該類型 |
PiePlot3D |
在繪制3D餅形圖時(shí),繪圖區(qū)為該類型 |
XYPlot |
在繪制基于TimeSeries數(shù)據(jù)集的柱形圖、折線圖、區(qū)域圖時(shí),繪圖區(qū)為該類型 |
表5.3中介紹的幾個(gè)繪圖區(qū)類均繼承于Plot類,Plot類提供的經(jīng)常用來訂制繪圖區(qū)繪制屬性的方法及其功能請(qǐng)參見表5.4。
表5.4 Plot類提供的常用方法及其功能
名稱 |
功能 |
setBackgroundPaint(Paint paint) |
用來設(shè)置繪圖區(qū)的背景色 |
setBackgroundAlpha(float alpha) |
用來設(shè)置繪圖區(qū)背景的透明度,參數(shù)在0.0和1.0之間,數(shù)值越大透明度越低 |
setForegroundAlpha(float alpha) |
用來設(shè)置繪圖區(qū)前景的透明度,參數(shù)在0.0和1.0之間,數(shù)值越大透明度越高 |
setNoDataMessage(String message) |
用來設(shè)置在沒有繪圖數(shù)據(jù)時(shí)在繪圖區(qū)顯示的提示信息 |
setNoDataMessageFont(Font font) |
用來設(shè)置沒有繪圖數(shù)據(jù)時(shí)顯示的提示信息的字體 |
setNoDataMessagePaint(Paint paint) |
用來設(shè)置沒有繪圖數(shù)據(jù)時(shí)顯示的提示信息的顏色 |
CategoryPlot類提供的經(jīng)常用來訂制繪圖區(qū)繪制屬性的方法及其功能請(qǐng)參見表5.5。
表5.5 CategoryPlot類提供的常用方法及其功能
名稱 |
功能 |
setDataset(CategoryDataset dataset)和setDataset(int, CategoryDataset) |
均用來設(shè)置繪圖數(shù)據(jù)集實(shí)例,后者的第一個(gè)參數(shù)為數(shù)據(jù)集的唯一標(biāo)識(shí)值,前者是采用默認(rèn)標(biāo)識(shí)值(0)。如果在一個(gè)繪圖區(qū)中只包含一個(gè)分類軸和一個(gè)數(shù)值軸,建議使用前者;否則,一定要通過后者為每個(gè)數(shù)據(jù)集實(shí)例指定一個(gè)唯一標(biāo)識(shí)值 |
setDomainAxis(CategoryAxis axis) |
用來設(shè)置分類軸實(shí)例 |
setDomainAxisLocation(AxisLocation location) |
用來設(shè)置分類軸的繪制位置,入口參數(shù)常量在org.jfree.chart.axis.AxisLocation類中做了定義 |
setDomainGridlinesVisible(boolean visible) |
用來設(shè)置分類軸標(biāo)記線是否可見,默認(rèn)為不可見(false) |
setDomainGridlineStroke(Stroke stroke) |
用來設(shè)置分類軸標(biāo)記線的繪制風(fēng)格 |
setDomainGridlinePaint(Paint paint) |
用來設(shè)置分類軸標(biāo)記線的顏色 |
setRangeAxis(ValueAxis axis) |
用來設(shè)置數(shù)據(jù)軸實(shí)例 |
setRangeAxisLocation(AxisLocation location) |
用來設(shè)置數(shù)據(jù)軸的繪制位置,入口參數(shù)常量在org.jfree.chart.axis.AxisLocation類中做了定義 |
setRangeGridlinesVisible(boolean visible) |
用來設(shè)置數(shù)據(jù)軸標(biāo)記線是否可見,默認(rèn)為可見(true) |
setRangeGridlineStroke(Stroke stroke) |
用來設(shè)置數(shù)據(jù)軸標(biāo)記線的繪制風(fēng)格 |
setRangeGridlinePaint(Paint paint) |
用來設(shè)置數(shù)據(jù)軸標(biāo)記線的顏色 |
mapDatasetToDomainAxis(int, int) |
用來將指定標(biāo)識(shí)值的繪圖數(shù)據(jù)集與分類軸建立關(guān)聯(lián) |
mapDatasetToRangeAxis(int, int) |
用來將指定標(biāo)識(shí)值的繪圖數(shù)據(jù)集與數(shù)據(jù)軸建立關(guān)聯(lián) |
PiePlot類提供的經(jīng)常用來訂制繪圖區(qū)繪制屬性的方法及其功能請(qǐng)參見表5.6。
表5.6 PiePlot類提供的常用方法及其功能
名稱 |
功能 |
setCircular(boolean flag) |
用來設(shè)置餅圖為正圓還是橢圓,默認(rèn)為正圓(true)。建議在繪制普通餅圖時(shí)采用正圓,在繪制3D餅圖時(shí)采用橢圓 |
setStartAngle(double angle) |
用來設(shè)置餅圖第一段圓弧的起始繪制角度,默認(rèn)為在餅圖的正上方開始繪制。水平方向餅圖的最左側(cè)為0度,最右側(cè)為180度;垂直方向餅圖的正上方為90度,正下方為270度 |
setDirection(Rotation direction) |
用來設(shè)置餅圖的繪制方向,默認(rèn)為按順時(shí)針方向繪制。Rotation.CLOCKWISE代表順時(shí)針,Rotation.ANTICLOCKWISE代表逆時(shí)針 |
setLegendLabelGenerator(PieSectionLabelGenerator generator) |
用來設(shè)置餅圖中圖例的輸出樣式 |
setLabelGenerator(PieSectionLabelGenerator generator) |
用來設(shè)置餅圖中普通標(biāo)簽的輸出樣式,當(dāng)設(shè)置為NULL時(shí),則不顯示普通標(biāo)簽及連接線 |
setLabelFont(Font font) |
用來設(shè)置餅圖中普通標(biāo)簽的字體樣式 |
setLabelPaint(Paint paint) |
用來設(shè)置餅圖中普通標(biāo)簽的字體顏色 |
setLabelBackgroundPaint(Paint paint) |
用來設(shè)置餅圖中普通標(biāo)簽的背景顏色 |
setLabelOutlinePaint(Paint paint) |
用來設(shè)置餅圖中普通標(biāo)簽的邊框顏色 |
setLabelLinkPaint(Paint paint) |
用來設(shè)置餅圖中普通標(biāo)簽與圓弧之間連接線的顏色 |
setSectionPaint(Comparable, Paint) |
用來設(shè)置餅圖中代表指定圖例的扇形的填充色 |
setToolTipGenerator(PieToolTipGenerator generator) |
用來設(shè)置熱點(diǎn)餅圖中熱區(qū)標(biāo)簽的輸出樣式 |
setURLGenerator(PieURLGenerator generator) |
用來設(shè)置熱點(diǎn)餅圖中熱區(qū)鏈接的URL |
setIgnoreNullValues(boolean flag) |
用來設(shè)置是否顯示繪圖數(shù)據(jù)設(shè)為NULL的圖例,默認(rèn)為顯示(false) |
setIgnoreZeroValues(boolean flag) |
用來設(shè)置是否顯示繪圖數(shù)據(jù)設(shè)為0的圖例,默認(rèn)為顯示(false) |
PiePlot3D類僅提供了一個(gè)用來設(shè)置3D餅圖Z軸高度的方法setDepthFactor(double factor)。
XYPlot類提供的經(jīng)常用來訂制繪圖區(qū)繪制屬性的方法及其功能請(qǐng)參見表5.7。
表5.7 XYPlot類提供的常用方法及其功能
名稱 |
功能 |
setDataset(CategoryDataset dataset)和setDataset(int, CategoryDataset) |
均用來設(shè)置繪圖數(shù)據(jù)集實(shí)例,后者的第一個(gè)參數(shù)為數(shù)據(jù)集的唯一標(biāo)識(shí)值,前者是采用默認(rèn)標(biāo)識(shí)值(0)。如果在一個(gè)繪圖區(qū)中只包含一個(gè)分類軸和一個(gè)數(shù)值軸,建議使用前者;否則,一定要通過后者為每個(gè)數(shù)據(jù)集實(shí)例指定一個(gè)唯一標(biāo)識(shí)值 |
setDomainAxis(CategoryAxis axis) |
用來設(shè)置分類軸實(shí)例 |
setDomainAxisLocation(AxisLocation location) |
用來設(shè)置分類軸的繪制位置,入口參數(shù)常量在org.jfree.chart.axis.AxisLocation類中做了定義 |
setDomainGridlinesVisible(boolean visible) |
用來設(shè)置分類軸標(biāo)記線是否可見,默認(rèn)為不可見(false) |
setDomainGridlineStroke(Stroke stroke) |
用來設(shè)置分類軸標(biāo)記線的繪制風(fēng)格 |
setDomainGridlinePaint(Paint paint) |
用來設(shè)置分類軸標(biāo)記線的顏色 |
setRangeAxis(ValueAxis axis) |
用來設(shè)置數(shù)據(jù)軸實(shí)例 |
setRangeAxisLocation(AxisLocation location) |
用來設(shè)置數(shù)據(jù)軸的繪制位置,入口參數(shù)常量在org.jfree.chart.axis.AxisLocation類中做了定義 |
setRangeGridlinesVisible(boolean visible) |
用來設(shè)置數(shù)據(jù)軸標(biāo)記線是否可見,默認(rèn)為可見(true) |
setRangeGridlineStroke(Stroke stroke) |
用來設(shè)置數(shù)據(jù)軸標(biāo)記線的繪制風(fēng)格 |
setRangeGridlinePaint(Paint paint) |
用來設(shè)置數(shù)據(jù)軸標(biāo)記線的顏色 |
mapDatasetToDomainAxis(int, int) |
用來將指定標(biāo)識(shí)值的繪圖數(shù)據(jù)集與分類軸建立關(guān)聯(lián) |
mapDatasetToRangeAxis(int, int) |
用來將指定標(biāo)識(shí)值的繪圖數(shù)據(jù)集與數(shù)據(jù)軸建立關(guān)聯(lián) |
可以通過繪圖區(qū)實(shí)例獲得坐標(biāo)軸實(shí)例,然后設(shè)置坐標(biāo)軸的繪制屬性;也可以將設(shè)置好的坐標(biāo)軸實(shí)例傳入到繪圖區(qū)實(shí)例中。常用的坐標(biāo)軸類及其功能請(qǐng)參見表5.8。
表5.8 常用的坐標(biāo)軸類及其功能
名稱 |
功能 |
CategoryAxis |
用來定義分類型坐標(biāo)軸 |
ValueAxis |
用來定義數(shù)值型坐標(biāo)軸,包括普通的數(shù)值型和日期型 |
NumberAxis |
用來定義普通數(shù)值型坐標(biāo)軸 |
DateAxis |
用來定義日期型坐標(biāo)軸 |
Axis類是表5.8中介紹的幾個(gè)類的父類,Axis類提供的經(jīng)常用來訂制繪圖區(qū)繪制屬性的方法及其功能請(qǐng)參見表5.9。
表5.9 Axis類提供的常用方法及其功能
名稱 |
功能 |
setLabel(String label) |
用來設(shè)置坐標(biāo)軸標(biāo)題 |
setLabelFont(Font font) |
用來設(shè)置坐標(biāo)軸標(biāo)題的字體 |
setLabelPaint(Paint paint |
用來設(shè)置坐標(biāo)軸標(biāo)題的顏色 |
setLabelAngle(double angle) |
用來設(shè)置坐標(biāo)軸標(biāo)題的旋轉(zhuǎn)角度 |
setTickLabelFont(Font font) |
用來設(shè)置坐標(biāo)軸標(biāo)尺值的字體 |
setTickLabelPaint(Paint paint) |
用來設(shè)置坐標(biāo)軸標(biāo)尺值的顏色 |
setTickMarkStroke(Stroke stroke) |
用來設(shè)置坐標(biāo)軸標(biāo)尺標(biāo)記的筆觸 |
setTickMarkPaint(Paint paint) |
用來設(shè)置坐標(biāo)軸標(biāo)尺標(biāo)記的顏色 |
CategoryAxis類提供的經(jīng)常用來訂制繪圖區(qū)繪制屬性的方法及其功能請(qǐng)參見表5.10。
表5.10 CategoryAxis類提供的常用方法及其功能
名稱 |
功能 |
setLowerMargin(double margin) |
用來設(shè)置分類軸的下邊距 |
setUpperMargin(double margin) |
用來設(shè)置分類軸的上邊距 |
setCategoryMargin(double margin) |
用來設(shè)置分類軸之間的間距 |
setMaxCategoryLabelWidthRatio(float ratio) |
用來設(shè)置顯示分類軸標(biāo)記內(nèi)容的最大比例,如果設(shè)為1,表示可以顯示標(biāo)記內(nèi)容的最大長度與繪圖所占寬度相同 |
ValueAxis類是NumberAxis類和DateAxis類的父類,ValueAxis類提供的經(jīng)常用來訂制繪圖區(qū)繪制屬性的方法及其功能請(qǐng)參見表5.11。
表5.11 ValueAxis類提供的常用方法及其功能
名稱 |
功能 |
setFixedAutoRange(double length) |
用來動(dòng)態(tài)設(shè)置數(shù)據(jù)軸的標(biāo)尺范圍。例如設(shè)置入口參數(shù)為100,表示數(shù)據(jù)軸的標(biāo)尺范圍為從(MaxValue-100)到(MaxValue) |
setLowerBound(double min) |
用來設(shè)置數(shù)據(jù)軸標(biāo)尺值的最小值 |
setUpperBound(double max) |
用來設(shè)置數(shù)據(jù)軸標(biāo)尺值的最大值 |
setVerticalTickLabels(boolean flag) |
用來設(shè)置日期軸標(biāo)記值是否垂直顯示,默認(rèn)為水平顯示(false) |
NumberAxis類提供的經(jīng)常用來訂制繪圖區(qū)繪制屬性的方法及其功能請(qǐng)參見表5.12。