﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>BlogJava-我思故我强-文章分类-JFreeChart</title><link>http://www.blogjava.net/balajinima/category/27806.html</link><description /><language>zh-cn</language><lastBuildDate>Tue, 04 Dec 2007 09:37:03 GMT</lastBuildDate><pubDate>Tue, 04 Dec 2007 09:37:03 GMT</pubDate><ttl>60</ttl><item><title>有热点的JfreeChart柱型图（原创）</title><link>http://www.blogjava.net/balajinima/articles/165086.html</link><dc:creator>李云泽</dc:creator><author>李云泽</author><pubDate>Tue, 04 Dec 2007 01:57:00 GMT</pubDate><guid>http://www.blogjava.net/balajinima/articles/165086.html</guid><wfw:comment>http://www.blogjava.net/balajinima/comments/165086.html</wfw:comment><comments>http://www.blogjava.net/balajinima/articles/165086.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/balajinima/comments/commentRss/165086.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/balajinima/services/trackbacks/165086.html</trackback:ping><description><![CDATA[
		<p>
				<img src="http://www.blogjava.net/images/blogjava_net/balajinima/26977/r_chart.JPG" />
				<br />
				<br />实现方式：jsp+javabean<br />版本 ：jfreechart-1.0.8<br />web-inf：设置<br />=====================================<br />&lt;servlet&gt;<br />  &lt;servlet-name&gt;DisplayChart&lt;/servlet-name&gt;<br />  &lt;servlet-class&gt;<br />   org.jfree.chart.servlet.DisplayChart<br />  &lt;/servlet-class&gt;<br /> &lt;/servlet&gt;<br /> &lt;servlet-mapping&gt;<br />  &lt;servlet-name&gt;DisplayChart&lt;/servlet-name&gt;<br />  &lt;url-pattern&gt;/servlet/DisplayChart&lt;/url-pattern&gt;<br /> &lt;/servlet-mapping&gt;<br />======================================<br />jsp文件：<br />=========================================================================<br />&lt;%@ page language="java" contentType="text/html; charset=GBK"<br /> pageEncoding="GBK"%&gt;<br />&lt;!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"&gt;<br />&lt;html&gt;<br />&lt;head&gt;<br />&lt;meta http-equiv="Content-Type" content="text/html; charset=GBK"&gt;<br />&lt;title&gt;Insert title here&lt;/title&gt;</p>
		<p>&lt;script language="javascript"&gt;<br />function overlib(s){<br /> document.all.ChartTip.style.display="block";<br /> top.document.getElementById('ChartTip').innerHTML=s;<br /> document.all.ChartTip.style.left=document.body.scrollLeft+event.x;<br /> document.all.ChartTip.style.top=document.body.scrollTop+event.y-20;<br />}<br />function nd(s){<br /> document.all.ChartTip.style.display="none";<br />}<br />&lt;/script&gt;<br />&lt;jsp:useBean id="barchart01" scope="session"<br /> class="com.mdcl.fso.homepage.chart.BarChart01" /&gt;<br />&lt;/head&gt;<br />&lt;body&gt;<br />&lt;%<br /> String fileName = barchart01.drawPic(request.getSession(), out);<br /> String graphURL = request.getContextPath()<br />   + "/servlet/DisplayChart?filename=" + fileName;<br />%&gt;<br />&lt;br /&gt;<br />&lt;img src="&lt;%= graphURL %&gt;" border="0" usemap="#&lt;%=fileName %&gt;" /&gt;<br />&lt;br /&gt;<br />&lt;div id="ChartTip"<br /> style="position:absolute; font-family:'宋体'; font-size: 12px;line-height: 20px;background-color:#FFFFEC; border: 1px solid #999999;display:none;left:0px;top:1px;"&gt;测试显示&lt;/div&gt;<br />&lt;/body&gt;<br />&lt;/html&gt;<br />=========================================================================<br />java文件<br />=========================================================================<br />package com.mdcl.fso.homepage.chart;</p>
		<p>import org.jfree.chart.ChartFactory;<br />import org.jfree.chart.ChartRenderingInfo;<br />import org.jfree.chart.ChartUtilities;<br />import org.jfree.chart.JFreeChart;<br />import org.jfree.chart.plot.PlotOrientation;<br />import org.jfree.data.category.DefaultCategoryDataset;<br />import java.awt.Color;<br />import java.awt.Font;<br />import java.io.IOException;<br />import java.io.OutputStream;<br />import java.io.PrintWriter;</p>
		<p>import org.jfree.chart.renderer.category.BarRenderer3D;<br />import org.jfree.chart.servlet.ServletUtilities;<br />import org.jfree.chart.urls.StandardCategoryURLGenerator;<br />import org.jfree.chart.urls.StandardPieURLGenerator;<br />import org.jfree.chart.labels.StandardCategoryItemLabelGenerator;<br />import org.jfree.chart.axis.AxisLocation;<br />import org.jfree.chart.axis.CategoryAxis;<br />import org.jfree.chart.entity.StandardEntityCollection;<br />import org.jfree.chart.plot.CategoryPlot;<br />import org.jfree.chart.labels.*;<br />import org.jfree.ui.*;<br />import java.util.*;</p>
		<p>import javax.servlet.http.HttpSession;<br />import javax.servlet.http.HttpServletResponse;<br />import javax.servlet.jsp.JspWriter;</p>
		<p>import com.mdcl.fso.homepage.*;</p>
		<p>public class BarChart01 {</p>
		<p> private static DefaultCategoryDataset dataset = new DefaultCategoryDataset();</p>
		<p> private DefaultCategoryDataset getDataset() {// 取数据</p>
		<p>  List expense = new ArrayList();<br />  String sql = "select ftr.organ_id ,fs.dept_name,ftr.subject_id,fft.finance_type_name,ftr.rpt_date ,ftr.rpt_data "<br />    + "from fso_t_rpt_expense ftr,fso_sdept fs,fso_finance_type fft "<br />    + "where ftr.type_id='D' "<br />    + "and ftr.organ_id=fs.dept_id  "<br />    + "and ftr.rpt_date='2007-08' "<br />    + "and fft.finance_type_id=ftr.subject_id  "<br />    + "and ftr.organ_id='1140'";</p>
		<p>  expense = DBDao.DbQueryExpense(sql);<br />  for (int i = 0; i &lt; expense.size(); i++) {<br />   HashMap param = new HashMap();<br />   param = (HashMap) expense.get(i);</p>
		<p>   double dt = Double.parseDouble(String.valueOf(param.get("rpt_data")));<br />   String a = (String) param.get("organ");<br />   String b = (String) param.get("subject");</p>
		<p>   dataset.addValue(dt, a, b);<br />  }</p>
		<p>  return dataset;</p>
		<p> }</p>
		<p> public String drawPic(HttpSession session, JspWriter out) {<br />  String fileName = null;<br />  JFreeChart chart = ChartFactory.createBarChart3D("2007-08成本统计", "费用类型",<br />    "金额（单位：元）", getDataset(), PlotOrientation.VERTICAL, true, true,<br />    true);<br />  chart.setBackgroundPaint(Color.WHITE);</p>
		<p>  CategoryPlot plot = chart.getCategoryPlot();// 获取绘图区</p>
		<p>  plot.setBackgroundPaint(new Color(255, 255, 255)); // 设置绘图区背景色</p>
		<p>  plot.setRangeGridlinePaint(Color.gray); // 设置水平方向背景线颜色</p>
		<p>  plot.setRangeGridlinesVisible(true); // 设置是否显示水平方向背景线,默认值为True</p>
		<p>  plot.setDomainGridlinePaint(Color.black); // 设置垂直方向背景线颜色</p>
		<p>  // plot.setDomainGridlinesVisible(true); // 设置是否显示垂直方向背景线,默认值为False</p>
		<p>  CategoryAxis domainAxis = plot.getDomainAxis();// 获取统计种类轴标题（X轴）</p>
		<p>  plot.setDomainAxis(domainAxis);// 添加X轴</p>
		<p>  BarRenderer3D renderer = new BarRenderer3D();// 获得BarRenderer3D类的实例，目的是设置柱形的绘制属性</p>
		<p>  renderer.setBaseToolTipGenerator(new StandardCategoryToolTipGenerator());//</p>
		<p>  renderer.setBaseItemURLGenerator(new StandardCategoryURLGenerator("index2.jsp"));// 生成热点,用于链接</p>
		<p>  renderer.setItemMargin(0.1);// 设置每个组所包含的平行柱的之间距离</p>
		<p>  renderer.setSeriesPaint(0, Color.GREEN);// 设置柱子的颜色<br />  renderer.setSeriesPaint(1, Color.blue);// 设置柱子的颜色</p>
		<p>  renderer.setBaseOutlinePaint(Color.BLACK);</p>
		<p>  renderer.setWallPaint(Color.gray);// 设置 Wall 的颜色</p>
		<p>  renderer.setItemLabelAnchorOffset(10D);// 设置柱形图上的文字偏离值</p>
		<p>  renderer.setBaseItemLabelFont(new Font("arial", Font.PLAIN, 10), true);// 设置柱形图上的文字</p>
		<p>  renderer.setBaseItemLabelGenerator(new StandardCategoryItemLabelGenerator());// //显示每个柱的数值，并修改该数值的字体属性</p>
		<p>  renderer.setBasePositiveItemLabelPosition(new ItemLabelPosition(ItemLabelAnchor.OUTSIDE12, TextAnchor.BASELINE_CENTER));</p>
		<p>  renderer.setBaseItemLabelsVisible(true);</p>
		<p>  renderer.setMaximumBarWidth(0.050000000000000003D);</p>
		<p>  plot.setRenderer(renderer);</p>
		<p>  plot.setForegroundAlpha(0.80f);// 设置柱的透明度</p>
		<p>  // plot.setDomainAxisLocation(AxisLocation.TOP_OR_RIGHT);//设置显示位置</p>
		<p>  plot.setRangeAxisLocation(AxisLocation.BOTTOM_OR_RIGHT);// 设置显示位置</p>
		<p>  try {</p>
		<p>   PrintWriter pw = new PrintWriter(out);</p>
		<p>   StandardEntityCollection sec = new StandardEntityCollection();<br />   ChartRenderingInfo info = new ChartRenderingInfo(sec);</p>
		<p>   fileName = ServletUtilities.saveChartAsPNG(chart, 640, 400, info,<br />     session);<br />   // ChartUtilities.writeChartAsPNG(op,chart, 640, 400, info,true,0);<br />   ChartUtilities.writeImageMap(pw, fileName, info, true);<br />  } catch (IOException e) {<br />   // TODO Auto-generated catch block<br />   e.printStackTrace();<br />  }</p>
		<p>  return fileName;</p>
		<p> }</p>
		<p>}<br />=========================================================================<br /><br /><br /></p>
<img src ="http://www.blogjava.net/balajinima/aggbug/165086.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/balajinima/" target="_blank">李云泽</a> 2007-12-04 09:57 <a href="http://www.blogjava.net/balajinima/articles/165086.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>