使用JFreeChart在web中繪製圖表

          用JFreeChart繪製圖表,能夠繪製二維柱狀圖、三維柱狀圖、折線圖、以及餅圖,網上也有不少關於JFreeChart繪製圖像的源碼,可是仍是須要本身去總結一下這個過程。html

         對於圖表並不陌生,office word中咱們對數據進行分類彙總,最後在讓咱們本身把分類彙總的內容生成一個圖表的樣式。而在java web開發中,咱們又一次碰見了,對於圖表的彙總可選方案有多種,在這裏使用的是JFreeChart。java

        一、開發環境搭建。node

        和圖片上傳的功能同樣,JFreechart是一個開源項目,咱們能夠從網上下載想要的版本。http://www.jfree.org/jfreechart/index.html,咱們把下載的壓縮包解壓就能夠看到以下目錄結構:
web

 

        解壓咱們把lib中的jar包copy到咱們項目的web-inf/lib目錄中去。瀏覽器

        二、編寫代碼,顯示圖表的servlet。app

package com.bjpowernode.drp.statreport.web; import java.io.FileOutputStream; import java.io.IOException; import java.text.DecimalFormat; import java.text.NumberFormat; import javax.servlet.ServletException; import javax.servlet.ServletRequest; import javax.servlet.ServletResponse; import javax.servlet.http.HttpServlet; import org.jfree.chart.ChartFactory; import org.jfree.chart.ChartUtilities; import org.jfree.chart.JFreeChart; import org.jfree.chart.labels.StandardPieSectionLabelGenerator; import org.jfree.chart.plot.PiePlot3D; import org.jfree.data.general.DefaultPieDataset; /** * 演示經過servlet直接輸出圖表 * @author Winter Lau */ public class ChartDemoServlet extends HttpServlet { public void service(ServletRequest req, ServletResponse res) throws ServletException, IOException { res.setContentType("image/jpeg"); DefaultPieDataset data = getDataSet(); JFreeChart chart = ChartFactory.createPieChart3D("水果產量圖", data, true, false, false ); //設置圖表的百分比. PiePlot3D plot=(PiePlot3D)chart.getPlot(); // 圖片中顯示百分比:默認方式 //plot.setLabelGenerator(new StandardPieSectionLabelGenerator(StandardPieToolTipGenerator.DEFAULT_TOOLTIP_FORMAT)); // 圖片中顯示百分比:自定義方式,{0} 表示選項, {1} 表示數值, {2} 表示所佔比例 ,小數點後兩位 plot.setLabelGenerator(new StandardPieSectionLabelGenerator("{0}={1}({2})", NumberFormat.getNumberInstance(), new DecimalFormat("0.00%"))); // 圖例顯示百分比:自定義方式, {0} 表示選項, {1} 表示數值, {2} 表示所佔比例 plot.setLegendLabelGenerator(new StandardPieSectionLabelGenerator("{0}={1}({2})")); //將圖表輸出到瀏覽器上. ChartUtilities.writeChartAsJPEG(res.getOutputStream(), 1.0f,chart,400,300,null); } /** * 獲取一個演示用的簡單數據集對象 * @return */ private static DefaultPieDataset getDataSet() { DefaultPieDataset dataset = new DefaultPieDataset(); dataset.setValue("蘋果",100); dataset.setValue("梨子",200); dataset.setValue("葡萄",300); dataset.setValue("香蕉",400); dataset.setValue("荔枝",500); return dataset; } } 


        配置ChartDemoServlet:函數

 <servlet> <servlet-name>ChartDemoServlet</servlet-name> <servlet-class>com.bjpowernode.drp.statreport.web.ChartDemoServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>ChartDemoServlet</servlet-name> <url-pattern>/servlet/statreport/FlowCardServlet</url-pattern> </servlet-mapping> 


        在瀏覽器中能夠顯示這個servlet,咱們在瀏覽器中調用這個servlet:http://localhost:8080/InfgMan6.0/servlet/statreport/FlowCardServlet,咱們的圖表顯示以下:
學習

 

        而後咱們再根據本身的須要,更改圖例,更改圖表列等,再嵌入到本身的網頁中具體的位置.url

        這個例子自己很簡單,只不過又一次感覺這個由陌生到到熟悉的過程,沒有接觸的時候,不敢開始,感受神祕,當咱們鼓足勇氣去接觸去嘗試,發現其實很簡單,人家寫好了的源碼,咱們去引用這個包,而且去用,對於錯誤的地方,咱們去看看源碼,或者看看幫助文檔,看看具體的這個類或者這個函數的參數是什麼,表明的什麼,哪裏出現的錯誤,寫這篇博客的目的是警醒本身要遵照學習的規律,勇敢走下去。spa