




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、JFREECHART學(xué)習(xí)總結(jié)目錄一、JFreeChart簡介3二、JFreeChart的獲取3三、JFreeChart環(huán)境配置3四、JFreeChart功能介紹4五、JFreeChart核心類庫介紹4六、JFreeChart支持的圖表介紹4七、JFreeChart開發(fā)5第一步:建立DataSet數(shù)據(jù)源5第二步:創(chuàng)造JFreeChart5第三步:設(shè)置圖形顯示的屬性6第四步:寫入圖片或輸出界面6八、JFREECHART圖片在web中的應(yīng)用88.1在eclipse中創(chuàng)建tomcat工程88.2 創(chuàng)建web.xml88.3 配置web.xml98.4 創(chuàng)建含有JFreeChart圖片的頁面98.5 配
2、置server.xml128.6測試頁面12九、JFreeChart使用的優(yōu)缺點131.優(yōu)點:132.缺點:13九、使用JfreeChart開發(fā)圖表經(jīng)驗總結(jié)-14十、JFreeChart中文API15一、JFreeChart簡介JFreeChart是開放源代碼站點SourceF上的一個JAVA項目,它主要用來各種各樣的圖表,這些圖表包括:餅圖、柱狀圖(普通柱狀圖以及堆棧柱狀圖)、線圖、區(qū)域圖、分布圖、混合圖、甘特圖以及一些儀表盤等等。這些不同式樣的圖表基本上可以滿足目前的要求。當(dāng)在項目中客戶需要圖標(biāo)分析時,JFreeChart便是最好的選擇,JFreeChart是開源項目,可以
3、方便的從其官方網(wǎng)站上獲得其源代碼,可以方便的與Swing相結(jié)合使用,還可以導(dǎo)入到Web頁面中,更是可以方便的利用其工廠方法將圖表寫入jpeg或者png格式的圖片中,本文檔將簡要介紹小JFreeChart的使用。 二、JFreeChart的獲取JFreeChart 是JFreeChart公司在開源網(wǎng)站SourceF上的一個項目,該公司的主要產(chǎn)品有如下: 1.JFreeReport :報表解決工具 2.JFreeChart:Java 圖形解決方案(Application/Applet/Servlet/Jsp) 3.JCommon :JFreeReport和JFreeChart的公共
4、類庫 4.JFreeDesigner :JFreeReport的報表設(shè)計工具 我們可以從jfree官方網(wǎng)站上獲取最新版本和相關(guān)資料(但是jfree的document需要40美金才能獲?。?獲取地址:/jfreechart/index.html(同時可以獲得簡明介紹) 我們使用的版本:jfreechart-1.0.12.zip為例子進(jìn)行說明。三、JFreeChart環(huán)境配置 1、解壓jfreechart-1.0.12.zip到指定位置,其中source是jfreechart的源碼,jfreechart-1.0.12-demo.jar 是例子程序。 2、為了
5、配置成功,我們需要關(guān)注的文件有如下三個:jfreechart-1.0.12.jar、libjcommon-1.0.15.jar、libgnujaxp.jar。JCommon-1.0.15.jar是一組有用的classes集合. 這個類庫包含了以下功能: * 文本工具類(text utilities),* 用來顯示關(guān)于應(yīng)用程序信息的用戶界面類,* 布局定制管理器,* 一個日期選擇面板,* 序列化工具類,* XML解析器支持類。 3、如果是Application開發(fā),把上述三個文件拷貝到%JAVA_HOME%LIB中,同時在環(huán)境變量CLASSPATH中加入。在開發(fā)中,還有在工程中導(dǎo)入jfreech
6、art-1.0.12.jar,jcommon-1.0.15.jar,否則會在文件第一行提示有錯誤。 如果是WEB開發(fā),以TOMCAT中的一個WEB項目TEST為例子說明: 把上述三個文件拷貝到TESTWEB-INFLIB中,然后修改TESTWEB-INFweb.xml文件,在其中加入如下代碼: DisplayChart org.jfree.chart.servlet.DisplayChart DisplayChart /servlet/DisplayChart 至此jfreechart的配置就完成了,下面就可以進(jìn)行jfreechart的開發(fā)了。這里值得提出的是jfreechart的類結(jié)構(gòu)設(shè)計前
7、后兼容性不是很好,不同版本的jfreechart中類庫結(jié)構(gòu)可能不一樣,有時候可能需要查源碼。四、JFreeChart功能介紹JFreeChart是一個免費的Java圖表庫,讓開發(fā)人員開發(fā)出專業(yè)的圖表顯示在他們的應(yīng)用程序。 JFreeCharts extensive feature set includJFreeChart的廣泛的功能包括: a consistent and well-documented API, supporting a wide range of chart types;翔實的API ,支持各種各樣的圖表類型; a flexible design that is easy
8、to extend, and targets both server-side and client-side applications;一種靈活的設(shè)計,易于擴(kuò)展,和指標(biāo)均服務(wù)器端和客戶端的應(yīng)用; 支持多種類型的輸出,包括Swing界面,圖像文件(包括PNG和JPEG格式) ,和矢量圖形文件格式; JFreeChart是“開源” ,或更具體的免費軟件 。 使用JFREECHART能夠是新下列圖表:餅圖(二維和三維) , 柱狀圖 (水平,垂直),線圖,點圖,時間變化圖,甘特圖, 股票行情圖,混和圖, 溫度計圖, 刻度圖等常用商用圖表。五、JFreeChart核心類庫介紹jfreechart源碼主
9、要由兩個大的包組成:org.jfree.chart和org.jfree.data。其中前者主要與圖形本身有關(guān),后者與圖形顯示的數(shù)據(jù)有關(guān)。核心類主要有: org.jfree.chart.JFreeChart:圖表對象,任何類型的圖表的最終表現(xiàn)形式都是在該對象進(jìn)行一些屬性的定制。JFreeChart引擎本身提供了一個工廠類用于創(chuàng)建不同類型的圖表對象。 org.jfree.data.category.XXXDataSet:數(shù)據(jù)集對象,用于提供顯示圖表所用的數(shù)據(jù)。根據(jù)不同類型的圖表對應(yīng)著很多類型的數(shù)據(jù)集對象類。 org.jfree.chart.plot.XXXPlot:圖表區(qū)域?qū)ο?,基本上這個對象決定
10、著什么樣式的圖表,創(chuàng)建該對象的時候需要Axis、Renderer以及數(shù)據(jù)集對象的支持。 org.jfree.chart.axis.XXXAxis:用于處理圖表的兩個軸:縱軸和橫軸。 org.jfree.chart.render.XXXRender:負(fù)責(zé)如何顯示一個圖表對象。 org.jfree.chart.urls.XXXURLGenerator:用于生成Web圖表中每個項目的鼠標(biāo)點擊鏈接。 XXXXXToolTipGenerator:用于生成圖象的幫助提示,不同類型圖表對應(yīng)不同類型的工具提示類。六、JFreeChart支持的圖表介紹JFreeChart支持的圖表類型總結(jié) 圖表類型 工廠類方法
11、 數(shù)據(jù)集類型 備注 柱狀圖 createBarChart CategoryDataset 柱狀圖3D createBarChart3D CategoryDataset 餅圖 createPieChart PieDataset 餅圖3D createPieChart3D PieDataset 線圖 createLineChart CategoryDataset 線圖3D createLineChart3D CategoryDataset 復(fù)合餅圖 createMultiplePieChart CategoryDataset 需要設(shè)置TableOrder 復(fù)合餅圖3D createMultiple
12、PieChart3D CategoryDataset 環(huán)形圖 createRingChart PieDataset 瀑布圖 createWaterfallChart CategoryDataset 柱圖特殊形式 面積圖 createAreaChart CategoryDataset 散點圖 createScatterPlot XYSeriesCollection 組織圖 createHistogram XYSeriesCollection 數(shù)據(jù)點階梯圖 createXYStepChart XYSeriesCollection 堆積面積圖 createStackedAreaChart Categ
13、oryDataset 堆積柱狀圖 createStackedBarChart CategoryDataset 堆積柱狀圖3D createStackedBarChart3D CategoryDataset 數(shù)據(jù)點線圖 createXYLineChart XYSeriesCollection 數(shù)據(jù)點面積圖 createXYAreaChart XYSeriesCollection 數(shù)據(jù)點階梯面積圖 createXYStepAreaChart XYSeriesCollection 堆積數(shù)據(jù)點面積圖 createStackedXYAreaChart TableXYDataset 時序圖 createT
14、imeSeriesChart XYDataset 晶片圖 createWaferMapChart WaferMapDataset WindPlot createWindPlot WindDataset 極線圖 createPolarChart XYDataset 氣泡圖 createBubbleChart XYZDataset BoxAndWhiskerChart createBoxAndWhiskerChart BoxAndWhiskerXYDataset 燭臺圖 createCandlestickChart OHLCDataset 股價圖 createHighLowChart OHLCDa
15、taset 2種 時間線差別 甘特圖 createGanttChart IntervalCategoryDataset 數(shù)據(jù)點柱狀圖 createXYBarChart IntervalXYDataset 七、JFreeChart開發(fā)要建立一個JFreeChart圖形主要有以下三個步驟(以柱圖為例):第一步:建立DataSet數(shù)據(jù)源BarChart使用的dataset接口是org.jfree.data.defaultcategorydataset的dataset。使用categorydataset的子類org.jfree.data.defaultcategorydataset,再用addValu
16、e()方法把資料加入到dataset中,建立包含數(shù)值的二維陣列,代碼如下:DefaultCategoryDataset dataset = new DefaultCategoryDataset();dataset.addValue(100, 100, 蘋果);dataset.addValue(200, 200, 梨子);dataset.addValue(300, 300, 葡萄);dataset.addValue(400, 400, 香蕉);dataset.addValue(500, 500, 荔枝);dataset.addValue(600, 600, 西瓜);或者使用org.jfree.d
17、ata.datasetutilities ,CategoryDatasetdataset=DatasetUtilities.createCategoryDataset(rowKeys,columnKeys,data);其中:rowKeys表示X軸數(shù)據(jù),columnKeys表示Y軸數(shù)據(jù),data表示填充柱狀圖所要的實際數(shù)據(jù)(來自于數(shù)據(jù)庫)。第二步:創(chuàng)造JFreeChart 要用dataset創(chuàng)造一個JFreeChart類別,我們并不直接實例化出一個JFreeChart實例,而是使用ChartFactory工廠類來創(chuàng)造一個JFreeChart實例。代碼如下:JFreeChart chart = C
18、hartFactory.createBarChart3D(水果產(chǎn)量圖, /JFreeChart標(biāo)題 水果, /目錄軸顯示標(biāo)簽產(chǎn)量, /數(shù)值軸顯示標(biāo)簽 dataset, /數(shù)據(jù)源PlotOrientation.VERTICAL, /圖表方向:水平、垂直 true, /是否是否顯示圖例(對于簡單的柱狀圖是false) false, /是否生成熱點工具 false); /是否生成URL連接第三步:設(shè)置圖形顯示的屬性a)ValueAxis類,設(shè)置柱到圖上下邊的距離。實現(xiàn)方法是:ValueAxisrangeAxis=plot.getRangeAxis();設(shè)置最高的一個柱與圖片頂端的距離:rangeAx
19、is.setUpperMargin(0.15)設(shè)置最低的一個柱與圖片底端的距離:rangeAxis.setLowerMargin(0.15)b)org.jfree.chart.renderer.BarRenderer3D類,設(shè)置圖形上顯示的數(shù)值。實現(xiàn)方法如下:BarRenderer3Drenderer=newBarRenderer3D();renderer.setBaseOutlinePaint(Color.BLACK);設(shè)置Wall的顏色:renderer.setWallPaint(Color.gray);設(shè)置每個柱的顏色:renderer.setSeriesPaint(0,newColor
20、(0,0,255);renderer.setSeriesPaint(1,newColor(0,100,255);renderer.setSeriesPaint(2,Color.GREEN);設(shè)置每個柱的Outline顏色renderer.setSeriesOutlinePaint(0,Color.BLACK);renderer.setSeriesOutlinePaint(1,Color.BLACK);renderer.setSeriesOutlinePaint(2,Color.BLACK);設(shè)置每個地區(qū)所包含的平行柱之間的距離renderer.setItemMargin(0.1);顯示每個柱的
21、數(shù)值,并修改該數(shù)值的字體屬性renderer.setItemLabelFont(newFont(黑體,Font.PLAIN,12);renderer.setItemLabelsVisible(true);為圖形加入超連接renderer.setItemURLGenerator(newStandardCategoryURLGenerator();renderer.setToolTipGenerator(newStandardCategoryToolTipGenerator();第四步:寫入圖片或輸出界面a. 寫入圖片利用ChartUtilities.writeChartAsJPEG(fos_jp
22、g, /圖片輸出地址1.0f, /設(shè)置圖片質(zhì)量 chart, /指定chart500, /設(shè)置圖片寬度400); /設(shè)置圖片高度在打開圖片時,有可能出現(xiàn)異常,注意撲捉異常。代碼如下:FileOutputStream fos_jpg = null;try fos_jpg = new FileOutputStream(D:fruit.jpg);ChartUtilities.writeChartAsJPEG(fos_jpg,1.0f, chart, 500, 400);finallytryfos_jpg.close();catch (Exception e) b. 顯示圖片使用ChartFrame類
23、,ChartFrame ChartFrame = new ChartFrame(“水果產(chǎn)量圖”,chart);chartFrame.pack();chartFrame.setFont(new Font(宋體,Font.BOLD,20);chartFrame.setVisible(true);柱狀圖實例結(jié)果輸出:其他的圖創(chuàng)建方法都類似,但是每種圖形都將對應(yīng)每個dataset,所以在使用的時候注意選擇創(chuàng)建dataset數(shù)據(jù)源。八、JFREECHART圖片在web中的應(yīng)用通過上邊的介紹,我們已經(jīng)知道JFreechart是很好的Java圖表生成工具,利用JFreeChart可以很方便的生產(chǎn)餅圖、折線圖
24、、柱圖等圖表??梢愿有蜗蟮姆治鰯?shù)據(jù)。本部分主要介紹JFreeChart生成的圖片在Web工程中的應(yīng)用。8.1在Myeclipse中創(chuàng)建Web工程1、在Myeclipse中創(chuàng)建web工程。 8.2 創(chuàng)建web.xml在Web工程目錄下WEB-INF目錄下,創(chuàng)建web.xml。具體步驟為:1. 在右擊Tomcat工程目錄下WEB-INF目錄,選擇“new”-“File”。2. 輸入file名稱為web.xml,點擊“finish”完成創(chuàng)建。3. 在打開的file中輸入以下內(nèi)容: 至此完成web.xml的創(chuàng)建。8.3 添加相關(guān)JAR文件1.右擊項目名選擇“Build Path”,在其下拉框中選擇最
25、后一個“Config Bulid Path”。2.選擇“Libraries”。3.然后在選擇“Add External JARs”.4.在彈出的對話框中選擇在/common/lib/jasper-runtime.jar,jsp-api.jar,servlet-api.jar等JAR包文件。在加入JFreeChart需要的jfreechart-1.0.12.jar,jcommon-1.0.15.jar即可。5.再將jfreechart-1.0.12.jar,jcommon-1.0.15.jar拷到工程目錄下WEB-INF/lib文件夾中即可。8.3 配置web.xml 在web.xml文件和中間
26、加入以下的配置。 DisplayChart org.jfree.chart.servlet.DisplayChart DisplayChart /servlet/DisplayChart 8.4 創(chuàng)建含有JFreeChart圖片的頁面1.右擊Tomcat工程目錄下WEB-INF目錄,選擇“new”-“File”。2.輸入file名稱為xyline.jsp,點擊“finish”完成創(chuàng)建。3.打開File文件,在文件中輸入以下代碼:java.awt.Font,org.jfree.data.category.CategoryDataset,org.jfree.chart.ChartUtilities
27、,org.jfree.chart.renderer.category.LineAndShapeRenderer,org.jfree.chart.labels.StandardCategoryItemLabelGenerator,org.jfree.chart.plot.CategoryPlot,org.jfree.data.category.DefaultCategoryDataset,org.jfree.chart.ChartFactory,org.jfree.chart.plot.PlotOrientation,org.jfree.chart.JFreeChart,org.jfree.ch
28、art.servlet.ServletUtilities,org.jfree.chart.entity.StandardEntityCollection,org.jfree.chart.ChartRenderingInfo,org.jfree.chart.imagemap.StandardURLTagFragmentGenerator,org.jfree.chart.labels.StandardCategoryItemLabelGenerator,org.jfree.chart.renderer.xy.XYLineAndShapeRenderer,程序員學(xué)歷情況調(diào)查表img src= wid
29、th=800 height=500border=0 usemap=#map08.5 配置server.xml在tomcat工程中配置server.xml信息,可以有兩種方式:1. 右擊工程名稱,選擇“Tomcat Project”,在其下拉框中選擇“Updata context definition”,點擊提示“Oparetion Successful”,則說明在server.xml中已配置好元素。2. 在/conf/server.xml中手動配置元素。具體方法是:用記事本方式打開server.xml,在元素里添加元素,添加如下代碼: 元素的屬性描述參見下表:描述屬性path指定訪問該Web應(yīng)
30、用的URL入口docBase指定Web應(yīng)用的文件路徑。可以給定絕對路徑,也可以給定相對于Host的appBase屬性的相對路徑。如果Web應(yīng)用采用開放目錄結(jié)構(gòu),那就指定Web應(yīng)用的根目錄;如果Web應(yīng)用是個WAR文件,那就指定WAR文件的路徑reloadable如果這個屬性設(shè)置為true,Tomcat服務(wù)器在運行狀態(tài)下會監(jiān)視在WEB-INF/class和WEB-INF/lib目錄下CLASS文件的改動。如果監(jiān)測到有class被更新,服務(wù)器會自動加載Web應(yīng)用。workDir指定work的文件路徑。8.6測試頁面啟動tomcat,打開IE,在地址欄中輸入http:/localhost:8080/
31、Test/xyline.jsp回車即可顯示一下網(wǎng)頁,把鼠標(biāo)放在這點上,將會出現(xiàn)如圖那樣提示節(jié)點數(shù)據(jù)。八、JFreeChart使用的優(yōu)缺點1.優(yōu)點:圖表能使數(shù)據(jù)形象直觀的表現(xiàn),給數(shù)據(jù)統(tǒng)計也提供了方便,JFreeChart目前是最好的java圖形解決方案,基本能夠解決目前的圖形方面的需求,主要包括如下幾個方面:餅圖(二維和三維) , 柱狀圖 (水平,垂直),線圖,點圖,時間變化圖,甘特圖, 股票行情圖,混和圖, 溫度計圖, 刻度圖等常用商用圖表),圖形可以導(dǎo)出成PNG和JPEG格式,同時還可以與PDF和EXCEL關(guān)聯(lián)。JFreeChart還是開源項目,可以在其官方網(wǎng)站上得到其源代碼。2.缺點:JF
32、reeChart項目本身的類結(jié)構(gòu)設(shè)計的并不是很好,首先在創(chuàng)建圖表的時候用到了大量的工廠方法,這樣做雖然可以簡化創(chuàng)建圖表代碼,但是對項目本身或者開發(fā)人員來講自行擴(kuò)展一種新的圖標(biāo)仍然是一件很麻煩的事情;其次除圖標(biāo)本身外其余的類過于復(fù)雜,使用者必須去了解每個類型的圖表對象應(yīng)該對應(yīng)哪些Axis、Plot、Renderer類,并且必須非常熟悉這些類的構(gòu)造方法中的每個參數(shù)的具體含義。不過雖然還存在很多問題,但是JFreeChart本身仍不失為一個優(yōu)秀的圖表引擎。JFreeChart還有個缺點是漢字顯示的問題,我在網(wǎng)上找來些這方面的資料,說是在其解壓文件下找其字體的配置文件,不過我在最新的版本中沒有找到。我
33、的解決方案是,例如在柱狀圖中,我們可以獲取縱軸或橫軸的顯示標(biāo)簽,在標(biāo)簽上設(shè)置顯示字體,可以達(dá)到顯示漢字的效果。代碼如下:(CategoryPlot)chart.getPlot().getDomainAxis().setLabelFont(new Font(宋體,Font.BOLD,10); /獲得x軸標(biāo)簽,并設(shè)置字體(CategoryPlot)chart.getPlot().getRangeAxis().setLabelFont(new Font(宋體,Font.BOLD,10); /獲得y軸標(biāo)簽,并設(shè)置字體使用JfreeChart開發(fā)圖表經(jīng)驗總結(jié)生成基于瀏覽器的圖表方式比較多。據(jù)我所知道的,
34、常用的有三種:1、 VML方式實現(xiàn)。這種方式是通過產(chǎn)生客戶端的代碼,由客戶端根據(jù)代碼生成相應(yīng)的圖表。但這種方式產(chǎn)生的圖表有很多的局限性,如受限于瀏覽器,有些瀏覽器可能并不支持VML。另外,沒有封裝完整的圖表開發(fā)包。2、 通過applet來產(chǎn)生圖表。這種方式也對客戶端要求比較高,必須要有JRE,而且通過applet生成的圖表在加載過程中會有個Java的Log動畫。用戶看了可能會感覺不太舒服。3、 通過服務(wù)端直接生成圖表的圖片。這種方式對客戶端幾乎沒有什么要求,缺點是加重了服務(wù)端的負(fù)擔(dān),對服務(wù)端要求就相對高了點。經(jīng)過比較,根據(jù)項目自身特點,我們打算采用第三種方式來開發(fā)圖表。為了縮短開發(fā)周期、節(jié)約成
35、本,我們選用了開源的JFreeChart(/jfreechart/index.php)。jfreechart是一個免費創(chuàng)建圖表的java工具,目前最新版本是JFreeChart-1.0.0-rc1。它可以生成各式各樣的圖表。這些圖表包括餅圖、柱狀圖、線形圖、區(qū)域圖、甘特圖等等,基本可以滿足各種項目的要求。但在開發(fā)過程中我也發(fā)現(xiàn)了JFreeChart的一些不足,或者說有些稱得上是BUG。總體說來,JFreeChart還是個優(yōu)秀的開源項目。關(guān)于JFreeChart生成圖表的文章比較多了,我主要談?wù)勈褂肑FreeChart的一些比較棘手問題以及解決方法。同時也會
36、將問題所用到的源碼(JFreeChart-1.0.0-rc1+Struts1.2.4)從項目中抽象出來一起提供給大家。一、 圖片上熱點鏈接中文亂碼的解決方法這個問題是在我查閱關(guān)于JFreeChart相關(guān)資料時出現(xiàn)頻率最高的一個問題。其實這個亂碼問題不能怪罪于JFreeChart。有人甚至就因此認(rèn)為JFreeChart對中文支持不太完善,JFreeChart可要叫了:我是冤枉的!我們來找出問題產(chǎn)生的原因,這個問題也就不難解決了。首先查看一下出現(xiàn)問題頁面的Html源文件,你會發(fā)現(xiàn)在源文件的開頭多出了一段map代碼,代碼類似于這樣:這部分map代碼其實是JFreeChart產(chǎn)生的,是用來產(chǎn)生圖片上的
37、熱點鏈接,這也是問題產(chǎn)生的根源所在。你的Jsp頁面通過或者來設(shè)置contentType這無可厚非,但map并不是由這個jsp頁面產(chǎn)生的。它是JFreeChart通過PrintWriter產(chǎn)生的。查看一下你生成圖片的Chart源碼,其中有ChartUtilities.writeImageMap(pw, filename, info, false)這樣的語句。這是用來向頁面寫入map代碼的。默認(rèn)情況下,map代碼會以服務(wù)器默認(rèn)編碼(ISO-8859-1)輸出。這就和你的Jsp編碼不一致,從而產(chǎn)生亂碼。原因找到了,問題也就不難解決的。設(shè)置PrintWriter的contentType與Jsp的con
38、tentType保存一致就可以了。代碼如下(筆者的Web應(yīng)用是基于Struts框架的):/PieMothAciton.javapublic ActionForward execute(ActionMapping mapping, ActionForm form,HttpServletRequest request, HttpServletResponse response)throws Exception /設(shè)置輸出編碼格式response.setContentType(text/html;charset=UTF-8); PrintWriter out = response.getWriter
39、();String filename = chart.generatePieChart3D(月統(tǒng)計比例圖, session, out);String graphURL = request.getContextPath() + /servlet/DisplayChart?filename= + filename;request.setAttribute(filename,filename);request.setAttribute(graphURL,graphURL);return mapping.findForward(SUCCESS);重新部署你的Web應(yīng)用,中文亂碼文件就可以解決了。二、
40、餅圖顯示百分比在餅圖中JFreeChart默認(rèn)只顯示選項和數(shù)值,沒有顯示各項所占比例。由于手頭沒有1.0版的JFreeChart Developer Guide(這可是要錢的,后來想想即使有,也未必能找到關(guān)于百分比這方面的說明),再加上DEMO中的餅圖都沒有顯示百分比,無法參考。后來在網(wǎng)上找到了一個老版本的例子,其中能顯示百分比。它是通過在PiePlot中設(shè)置的:PiePlot pie;pie.setPercentFormatString(#,#0.0#%);但1.0版本中根本就找不到setPercentFormatString這方法,JFreeChart各版本之間改動比較大,很難兼容。還好它
41、是開源的,把它的源碼都搜索了一遍,認(rèn)真讀了一些源碼,終于理出了頭緒。原來在1.0.0-rc1版中顯示百分比已經(jīng)調(diào)整到StandardPieItemLabelGenerator構(gòu)造函數(shù)中了,StandardPieItemLabelGenerator有三個構(gòu)造函數(shù)。StandardPieItemLabelGenerator()不顯示各項所占比例。另外兩個可以顯示比例。代碼如下:plot.setLabelGenerator(new StandardPieItemLabelGenerator(StandardPieItemLabelGenerator.DEFAULT_TOOLTIP_FORMAT);/
42、或者采用下面自定義樣式顯示,0表示選項,1表示數(shù)值,2表示所占比例plot.setLegendLabelGenerator(new StandardPieItemLabelGenerator(0: (1M, 2);效果如下圖:默認(rèn)顯示百分比是取整的,如果要讓百分比保留二位小數(shù),可以用第三個構(gòu)造函數(shù):plot.setLabelGenerator(new StandardPieItemLabelGenerator(“0=1(2)”,NumberFormat.getNumberInstance(),new DecimalFormat(0.00%);效果如下圖:三、 混合圖表(不同類型的圖混合顯示)我
43、們經(jīng)常用的是柱狀圖、曲線圖、和餅圖,這三類型圖基本能滿足大部分項目的需求。但有些項目比較特殊,可能需要在一張圖上同時顯示不同類型的圖。這在JFreeChart中可以輕松實現(xiàn)。例如我們要做個流量監(jiān)控的系統(tǒng),該系統(tǒng)一天中在不同的時間段有不同的閥值(最大值),該閥值表示成階梯線。而實際流量就是個曲線了。當(dāng)流量在某個時段內(nèi)超過閥值時就觸發(fā)相應(yīng)的事件(如限流)。要表示閥值和流量的對比關(guān)系就需要兩種類型的圖片在同一張圖表上表示,如下圖:首先像創(chuàng)建普通圖表一樣來創(chuàng)建圖片,筆者先創(chuàng)建了一個XYStep Chart。然后創(chuàng)建第二圖表的Renderer,再分別將第二圖表的Dataset、Renderer添加進(jìn)第一圖表的plot。實例代碼如下:/MultipleChart.javaJFreeChart jfreechart = ChartFactory.createXYStepArea
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 修建贊助合同范本
- 勞務(wù)時間合同范本
- 內(nèi)外架合同范例
- 化肥合作合同范例
- 專項經(jīng)理聘用合同范本
- 農(nóng)業(yè)購貨合同范本
- 化工產(chǎn)品購銷服務(wù)合同范本
- 醫(yī)院購銷合同范本
- 出口布料銷售合同范例
- 養(yǎng)殖水車出租合同范例
- 2025年中國郵政招聘筆試參考題庫含答案解析
- 人教版(2024)七年級英語上冊新教材的變化及教學(xué)建議課件
- 2025年中考語文一輪復(fù)習(xí):九年級上冊知識點梳理
- 2025年新聞部工作計劃
- 中國近代史綱要西安財經(jīng)大學(xué)練習(xí)題復(fù)習(xí)資料
- 中國成人ICU鎮(zhèn)痛和鎮(zhèn)靜治療指南解讀
- 2023年工程質(zhì)量監(jiān)督人員考試真題模擬匯編(共957題)
- 延長保修服務(wù)合同
- 2025中考英語作文19個熱點話題及范文
- 2023三年級英語下冊 Unit 1 How are you第3課時說課稿 湘少版
- 基于人工智能的農(nóng)產(chǎn)品追溯系統(tǒng)解決方案
評論
0/150
提交評論