国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

用jfreechart來生成統計圖表

2019-11-18 15:37:29
字體:
來源:轉載
供稿:網友

  在工作中,我們經常碰到需要在網頁上繪制統計圖的例子。其實實現的辦法有很多,我們可以親自編寫全部圖形生成代碼,比如用Flash,或者用svg,這樣做代碼量很大,還輕易出錯,很煩的。也可以利用現成的java統計圖表庫。例如用jclass(http://java.quest.com/jclass/jclass.sHtml),可是這玩藝卻是要收費的。對于我們這種崇尚open source的程序員來說,有沒有一個開源的統計圖形庫呢。有,它就是www.jfree.org推出的jfreechart包,它從柱形圖,餅形圖,到雷達圖,蠟燭圖等等無所不包,可以在c/s,b/s,甚至是實時環境都能一顯身手。最要害的是它是open source!我在這里給出一個在網頁上繪制餅形圖的簡單例子。



  1、到www.jfree.org下載一個最新的java庫,置jfreechart.jar和jcommon.jar.jar于classpath中

  2、編寫一個java bean,用來生成餅形圖。(GSPieChart.java)

package gov.gwssi.tax.nspg.datadisposal;
import java.awt.Insets;
import java.awt.Image;
import java.io.PRintWriter;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.Locale;
import java.text.NumberFormat;
import javax.servlet.http.Httpsession;
import org.jfree.data.*;
import org.jfree.chart.*;
import org.jfree.chart.axis.*;
import org.jfree.chart.renderer.VerticalBarRenderer;
import org.jfree.chart.renderer.StandardXYItemRenderer;
import org.jfree.chart.plot.*;
import org.jfree.chart.entity.*;
import org.jfree.chart.tooltips.*;
import org.jfree.chart.urls.*;
import org.jfree.chart.servlet.*;
import java.awt.Font;

/**
 * <p>Title: </p>
 * <p>Description: </p>
 * <p>Copyright: Copyright (c) 2003</p>
 * <p>Company: </p>
 * @author jagie
 * @version 1.0
*/

public class GSPieChart
{
 public static void main(String[] args)
 {
  Long[] testData =
   {
    new Long(10), new Long(20), new Long(30), new Long(40)
   } ;
 generatePieChart(testData, "", null, new PrintWriter(System.out), 580, 250);
}

/**
 * 生成圖像文件
 * @param datas Long[]數組
 * @param targetUrl 點餅形圖上的扇形,定向到的url
 * @param session httpsession
 * @param pw PrintWriter
 * @param w 生成的圖的寬度
 * @param h 生成的圖的高度
 * @return 生成的圖像文件的路徑
*/

public static String generatePieChart
 (Long[] datas, String targetUrl,
  HttpSession session,
  PrintWriter pw, int w, int h)
 {
  String filename = null;
  try
  {
   DefaultPieDataset data = new DefaultPieDataset();
   data.setValue("正常納稅人", datas[0]);
   data.setValue("異常納稅人", datas[1]);
   data.setValue("數據不全納稅人", datas[2]);
   data.setValue("未處理納稅人", datas[3]);
   // Create the chart object
   Pie3DPlot plot = new Pie3DPlot(data);
   plot.setInsets(new Insets(0, 5, 5, 5));
   plot.setForegroundAlpha(0.6f);
   plot.setSectionLabelType(plot.NO_LABELS);
   plot.setURLGenerator(new StandardPieURLGenerator(targetUrl, "type"));
   plot.setToolTipGenerator(new StandardPieToolTipGenerator());
   JFreeChart chart = new JFreeChart("數據處理結果統計圖", JFreeChart.DEFAULT_TITLE_FONT, plot, true);
   chart.setTitle(new TextTitle("數據處理結果統計圖", new Font("黑體", Font.BOLD, 15)));
   StandardLegend sl = (StandardLegend) chart.getLegend();
   sl.setItemFont(new Font("黑體", Font.TRUETYPE_FONT, 12));
   chart.setBackgroundPaint(new java.awt.Color(254, 254, 141));
   // 因為jfreechart把生成的png文件保存在系統的臨時文件夾中,你需要在適當的
   //時候調用session.removeAttribute("JFreeChart_Deleter"),這樣可以保證png文
   //件被刪除掉
   ChartRenderingInfo info = new ChartRenderingInfo(new StandardEntityCollection());
   filename = ServletUtilities.saveChartaspNG(chart, w, h, info, session);
   // Write the image map to the PrintWriter
   ChartUtilities.writeImageMap(pw, filename, info); pw.flush();
  } catch (Exception e)
   {
    System.out.println("Exception - " + e.toString());
    e.printStackTrace(System.out);
    filename = "public_error_500x300.png";
   }
  return filename;
 }
}

  3、在一個jsp文件中使用這個javabean來生成圖像,以下是代碼片斷

.........java代碼.................

<%
 //以下部分為圖象輸出

 String argetUrl="../servlet/gov.gwssi.tax.nspg.controlservlet.GSMainControlServlet?id="+sid;Long[] datas={normals,new Long(totalAbnormal),dataLacks,notProcesses};

String filename=GSPieChart.generatePieChart(datas,targetUrl,session,new PrintWriter(out),580,250);

String graphURL = request.getContextPath() + "/servlet/DisplayChart?filename=" + filename;
%>
.......html代碼................

<!-- pie chart -->
<table width="580" border="0" cellspacing="0" cellpadding="0">
<tr>
<td>
<img src="<%= graphURL %>" width=580 height=250 border=0 usemap="#<%=filename %>">
</td>
</tr>
</table>
  4、在web.xml中配置jfreechart的圖像生成的servlet

<servlet>
<servlet-name>DisplayChart</servlet-name>
<servlet-class>org.jfree.chart.servlet.DisplayChart</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>DisplayChart</servlet-name>
<url-pattern>/servlet/DisplayChart</url-pattern>
</servlet-mapping>
  以上就是在b/s中使用jfreechart的大體步驟,在你下載的jfreechart的sample文件夾中找到jfreechart-sample.war文件中也有類似的例子,只不過復雜一些。

  最后,希望這篇文章能對你有所啟發。如有錯誤之處,歡迎批評指正。進入討論組討論。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 荣成市| 新建县| 阿拉善盟| 安义县| 宁化县| 富裕县| 建昌县| 合川市| 广汉市| 洞头县| 菏泽市| 寿阳县| 荥经县| 寿光市| 台江县| 和顺县| 三穗县| 龙泉市| 四平市| 鲁甸县| 舞阳县| 乾安县| 台东市| 东丰县| 河津市| 修武县| 平武县| 芦山县| 枣阳市| 罗甸县| 九江市| 长兴县| 伊宁市| 新河县| 青岛市| 乌兰县| 本溪市| 沅江市| 马公市| 江达县| 双桥区|