<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0">
<channel>
<title><![CDATA[七小木东]]></title> 
<link>http://www.qixiaomudong.cn/index.php</link> 
<description><![CDATA[七小木东]]></description> 
<language>zh-cn</language> 
<copyright><![CDATA[七小木东]]></copyright>
<item>
<link>http://www.qixiaomudong.cn/read.php?168</link>
<title><![CDATA[关于配置支持JFreeChart的Tomcat]]></title> 
<author>七小木东 &lt;admin@yourname.com&gt;</author>
<category><![CDATA[JAVA技术]]></category>
<pubDate>Mon, 31 Jul 2006 02:37:56 +0000</pubDate> 
<guid>http://www.qixiaomudong.cn/read.php?168</guid> 
<description>
<![CDATA[ 
	关于配置支持JFreeChart的Tomcat[ 作者： &#124; 来源：CSDN 文档&#124; 点击数：356] <br/>关于配置支持JFreeChart的Tomcat<br/>何钢&lt;dchg2000@sina.com&gt;<br/><br/>第一步：安装J2SDK<br/><br/>1.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 获取J2SDK的win32安装版文件：j2sdk-1_4_2-windows-i586.exe<br/>2.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 双击安装J2SDK<br/>3.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 配置JAVA环境变量：在administrator的用户变量里（估计在系统变量里面也可以），新建变量：JAVA_HOME=C:&#92;j2sdk1.4.2（注意：C:&#92;j2sdk1.4.2为JAVA文件的安装路径，你应该根据自己的安装路径进行更改），在PATH变量里添加JAVA可执行文件的路径%JAVA_HOME%&#92;bin（这样你就可以在任何路径下执行java命令），新建变量：CLASSPATH=.;C:&#92;j2sdk1.4.2&#92;lib&#92;tools.jar;C:&#92;j2sdk1.4.2&#92;lib&#92;dt.jar。<br/><br/>第二步：安装tomcat<br/><br/>1.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 直接解压tomcat软件包<br/>2.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 启动tomcat：cd tomcat-home&#92;bin，执行startup.bat文件（执行shutdown.bat关闭tomcat） <br/>3.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 测试tomcat是否启动成功：http://localhost:8080/index.jsp<br/><br/>第三步：配置JfreeChart<br/><br/>1.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 在http://www.jfree.org/jfreechart/下载JfreeChart开发包：jfreechart-0.9.21.zip<br/>2.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 将jfreechart-0.9.21.zip中的lib路径下的jar文件拷贝到tomcat的common/lib路径下<br/>3.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 修改tomcat的conf/web.xml文件，添加：<br/><br/>&lt;servlet&gt;<br/>&lt;servlet-name&gt;DisplayChart&lt;/servlet-name&gt;<br/>&lt;servlet-class&gt;org.jfree.chart.servlet.DisplayChart&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/>4.&nbsp;&nbsp;&nbsp;&nbsp; 测试demo文件：http://localhost:8080/jfreechart.jsp，当你看到图片就说明jfreechart配置成功啦！<br/><br/>jfreechart.jsp代码：<br/><br/>&lt;%@ page contentType=&quot;text/html;charset=GBK&quot;%&gt;<br/><br/>&lt;%@ page import=&quot;org.jfree.data.general.DefaultPieDataset&quot;%&gt;<br/><br/>&lt;%@ page import=&quot;org.jfree.chart.JFreeChart&quot;%&gt;<br/><br/>&lt;%@ page import=&quot;org.jfree.chart.plot.PiePlot&quot;%&gt;<br/><br/>&lt;%@ page import=&quot;org.jfree.chart.ChartRenderingInfo&quot;%&gt;<br/><br/>&lt;%@ page import=&quot;org.jfree.chart.servlet.ServletUtilities&quot;%&gt;<br/><br/>&lt;%@ page import=&quot;org.jfree.chart.urls.StandardPieURLGenerator&quot;%&gt;<br/><br/>&lt;%@ page import=&quot;org.jfree.chart.entity.StandardEntityCollection&quot;%&gt;<br/><br/>&lt;%@ page import=&quot;org.jfree.chart.encoders.SunPNGEncoderAdapter&quot;%&gt;<br/>&lt;%<br/><br/>DefaultPieDataset data = new DefaultPieDataset();<br/><br/>data.setValue(&quot;六月&quot;, 500);<br/><br/>data.setValue(&quot;七月&quot;, 580);<br/><br/>data.setValue(&quot;八月&quot;, 828); <br/><br/>PiePlot plot = new PiePlot(data);<br/><br/>JFreeChart chart = new JFreeChart(&quot;&quot;, JFreeChart.DEFAULT_TITLE_FONT, plot, true);<br/><br/>chart.setBackgroundPaint(java.awt.Color.white);&nbsp;&nbsp;//可选，设置图片背景色<br/><br/>chart.setTitle(&quot;Welcome to Jfreechart !&quot;); //可选，设置图片标题<br/><br/>ChartRenderingInfo info = new ChartRenderingInfo(new StandardEntityCollection());<br/><br/>//500是图片长度，300是图片高度<br/><br/>String filename = ServletUtilities.saveChartAsPNG(chart, 500, 300, info, session);<br/><br/>String graphURL = request.getContextPath() + &quot;/servlet/DisplayChart?filename=&quot; + filename; <br/><br/>%&gt;<br/><br/>&lt;HTML&gt;<br/><br/>&lt;HEAD&gt;<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;TITLE&gt;Welcome to Jfreechart !&lt;/TITLE&gt;<br/><br/>&lt;/HEAD&gt;<br/><br/>&lt;BODY&gt;<br/><br/>&lt;P ALIGN=&quot;CENTER&quot;&gt;<br/><br/>&lt;img src=&quot;&lt;%= graphURL %&gt;&quot; width=500 height=300 border=0 usemap=&quot;#&lt;%= filename %&gt;&quot;&gt;<br/><br/>&lt;/P&gt;<br/><br/>&lt;/BODY&gt;<br/><br/>&lt;/HTML&gt;<br/><br/>第四步：JfreeChart开发<br/><br/>由于JfreeChart的文档是收费的，所以基于JfreeChart的开发反编译它自带的demo jar文件是一个不错的开始吧（其实，一般的应用在它的例子里面可以找到的啊）。<br/><br/>第五步：移动到Linux平台问题<br/>1.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 图片显示问题：<br/>把tomcat原封不动的搬到linux平台下，当我们请求http://localhost:8080/jfreechart.jsp时，将得到一个 “Can&#039;t connect to X11 window server using &#039;127.0.0.1:0.0&#039; as the value of the DISPLAY variable.”的错误。（郁闷吧）<br/>解决办法：<br/>export&nbsp;&nbsp;CATALINA_OPTS=&quot;-Djava.awt.headless=true&quot;<br/>重启tomcat看看吧，出来啦！<br/><br/>2.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 图片中文问题：<br/><br/>图片终于出现了，可是中文显示问题也随之而来（郁闷我了好久哦），<br/><br/>解决办法：<br/><br/>原来标准 jre/jdk 中只带了 redhat6 的 font.properties, 在 redhat7.3 和 redhat8.0 上都不能用。我们需要建一个 font.properties.zh.Redhat 放在 redhat 的 jre/lib 目录下。打开 /usr/lib/X11/fonts/ttf-zh 或者 /usr/share/fonts/zh_CN/TrueType （好像我是在后者发现的）下面的 font.dir， 将其中的一个中文字体名复制下来，比如： -misc-ZYSong18030-medium-r-normal--0-0-0-0-c-0-iso10646-1，按照 java 的字体规则改为 -misc-ZYSong18030-medium-r-normal--*-%d-*-*-c-*-iso10646-1，将 font.properties.zh 中的内容复制到 font.properties.zh.Redhat 中（如果没找到font.properties.zh文件，就把后面的内容粘贴进去也可以啊，我是这样做的，简单！）。<br/><br/>至于选用字体 -misc-ZYSong18030-medium-r-normal--0-0-0-0-c-0-iso10646-1 是因为在 redhat 7.3 和 redhat 8.0 上都能用。因为 jre/jdk 找不到 Redhat 的 true type 字体，在文件 font.properties.zh.Redhat 最后加入：<br/><br/>appendedfontpath=/usr/lib/X11/fonts/ttf-zh<br/>appendedfontpath=/usr/share/fonts/zh_CN/TrueType<br/>将字体名全部替换成 -misc-ZYSong18030-medium-r-normal--*-%d-*-*-c-*-iso10646-1，替换后的 font.properties.zh.Redhat 如下：<br/><br/># @(#)font.properties.zh.Redhat.linux 1.4 02/06/10<br/><br/>#<br/><br/># Copyright 2002 Sun Microsystems, Inc. All rights reserved.<br/><br/># Component Font Mappings<br/><br/>serif.0=-misc-ZYSong18030-medium-r-normal--*-%d-*-*-c-*-iso10646-1<br/><br/>serif.italic.0=-misc-ZYSong18030-medium-r-normal--*-%d-*-*-c-*-iso10646-1<br/><br/>serif.bold.0=-misc-ZYSong18030-medium-r-normal--*-%d-*-*-c-*-iso10646-1<br/><br/>serif.bolditalic.0=-misc-ZYSong18030-medium-r-normal--*-%d-*-*-c-*-iso10646-1<br/><br/>sansserif.0=-misc-ZYSong18030-medium-r-normal--*-%d-*-*-c-*-iso10646-1<br/><br/>sansserif.italic.0=-misc-ZYSong18030-medium-r-normal--*-%d-*-*-c-*-iso10646-1<br/><br/>sansserif.bold.0=-misc-ZYSong18030-medium-r-normal--*-%d-*-*-c-*-iso10646-1<br/><br/>sansserif.bolditalic.0=-misc-ZYSong18030-medium-r-normal--*-%d-*-*-c-*-iso10646-1<br/><br/>monospaced.0=-misc-ZYSong18030-medium-r-normal--*-%d-*-*-c-*-iso10646-1<br/><br/>monospaced.italic.0=-misc-ZYSong18030-medium-r-normal--*-%d-*-*-c-*-iso10646-1<br/><br/>monospaced.bold.0=-misc-ZYSong18030-medium-r-normal--*-%d-*-*-c-*-iso10646-1<br/><br/>monospaced.bolditalic.0=-misc-ZYSong18030-medium-r-normal--*-%d-*-*-c-*-iso10646-1<br/><br/>dialog.0=-misc-ZYSong18030-medium-r-normal--*-%d-*-*-c-*-iso10646-1<br/><br/>dialog.italic.0=-misc-ZYSong18030-medium-r-normal--*-%d-*-*-c-*-iso10646-1<br/><br/>dialog.bold.0=-misc-ZYSong18030-medium-r-normal--*-%d-*-*-c-*-iso10646-1<br/><br/>dialog.bolditalic.0=-misc-ZYSong18030-medium-r-normal--*-%d-*-*-c-*-iso10646-1<br/><br/>dialoginput.0=-misc-ZYSong18030-medium-r-normal--*-%d-*-*-c-*-iso10646-1<br/><br/>dialoginput.italic.0=-misc-ZYSong18030-medium-r-normal--*-%d-*-*-c-*-iso10646-1<br/><br/>dialoginput.bold.0=-misc-ZYSong18030-medium-r-normal--*-%d-*-*-c-*-iso10646-1<br/><br/>dialoginput.bolditalic.0=-misc-ZYSong18030-medium-r-normal--*-%d-*-*-c-*-iso10646-1<br/><br/># Missing Glyph Character<br/><br/>#<br/><br/>default.char=274f<br/><br/># Component Font Character Encodings<br/><br/>#<br/><br/>fontcharset.serif.0=sun.io.CharToByteISO8859_1<br/><br/>fontcharset.serif.1=sun.awt.motif.CharToByteX11GBK<br/><br/>fontcharset.sansserif.0=sun.io.CharToByteISO8859_1<br/><br/>fontcharset.sansserif.1=sun.awt.motif.CharToByteX11GBK<br/><br/>fontcharset.monospaced.0=sun.io.CharToByteISO8859_1<br/><br/>fontcharset.monospaced.1=sun.awt.motif.CharToByteX11GBK<br/><br/>fontcharset.dialog.0=sun.io.CharToByteISO8859_1<br/><br/>fontcharset.dialog.1=sun.awt.motif.CharToByteX11GBK<br/><br/>fontcharset.dialoginput.0=sun.io.CharToByteISO8859_1<br/><br/>fontcharset.dialoginput.1=sun.awt.motif.CharToByteX11GBK<br/><br/># Exclusion Ranges<br/><br/># XFontSet Information<br/><br/>#<br/><br/>fontset.serif.plain=&#92;<br/><br/>-misc-ZYSong18030-medium-r-normal--*-%d-*-*-c-*-iso10646-1<br/><br/><br/>fontset.serif.italic=&#92;<br/><br/>-misc-ZYSong18030-medium-r-normal--*-%d-*-*-c-*-iso10646-1<br/><br/>fontset.serif.bold=&#92;<br/><br/>-misc-ZYSong18030-medium-r-normal--*-%d-*-*-c-*-iso10646-1<br/><br/>fontset.serif.bolditalic=&#92;<br/><br/>-misc-ZYSong18030-medium-r-normal--*-%d-*-*-c-*-iso10646-1<br/><br/>fontset.sansserif.plain=&#92;<br/><br/>-misc-ZYSong18030-medium-r-normal--*-%d-*-*-c-*-iso10646-1<br/><br/>fontset.sansserif.italic=&#92;<br/><br/>-misc-ZYSong18030-medium-r-normal--*-%d-*-*-c-*-iso10646-1<br/><br/>fontset.sansserif.bold=&#92;<br/><br/>-misc-ZYSong18030-medium-r-normal--*-%d-*-*-c-*-iso10646-1<br/><br/>fontset.sansserif.bolditalic=&#92;<br/><br/>-misc-ZYSong18030-medium-r-normal--*-%d-*-*-c-*-iso10646-1<br/><br/>fontset.monospaced.plain=&#92;<br/><br/>-misc-ZYSong18030-medium-r-normal--*-%d-*-*-c-*-iso10646-1<br/><br/>fontset.monospaced.italic=&#92;<br/><br/>-misc-ZYSong18030-medium-r-normal--*-%d-*-*-c-*-iso10646-1<br/><br/>fontset.monospaced.bold=&#92;<br/><br/>-misc-ZYSong18030-medium-r-normal--*-%d-*-*-c-*-iso10646-1<br/><br/>fontset.monospaced.bolditalic=&#92;<br/><br/>-misc-ZYSong18030-medium-r-normal--*-%d-*-*-c-*-iso10646-1<br/><br/>fontset.dialog.italic=&#92;<br/><br/>-misc-ZYSong18030-medium-r-normal--*-%d-*-*-c-*-iso10646-1<br/><br/>fontset.dialog.bold=&#92;<br/><br/>-misc-ZYSong18030-medium-r-normal--*-%d-*-*-c-*-iso10646-1<br/><br/>fontset.dialog.bolditalic=&#92;<br/><br/>-misc-ZYSong18030-medium-r-normal--*-%d-*-*-c-*-iso10646-1<br/><br/>fontset.dialog.plain=&#92;<br/><br/>-misc-ZYSong18030-medium-r-normal--*-%d-*-*-c-*-iso10646-1<br/><br/>fontset.dialoginput.italic=&#92;<br/><br/>-misc-ZYSong18030-medium-r-normal--*-%d-*-*-c-*-iso10646-1<br/><br/>fontset.dialoginput.bold=&#92;<br/><br/>-misc-ZYSong18030-medium-r-normal--*-%d-*-*-c-*-iso10646-1<br/><br/>fontset.dialoginput.bolditalic=&#92;<br/><br/>-misc-ZYSong18030-medium-r-normal--*-%d-*-*-c-*-iso10646-1<br/><br/>fontset.dialoginput.plain=&#92;<br/><br/>-misc-ZYSong18030-medium-r-normal--*-%d-*-*-c-*-iso10646-1<br/><br/>#fontset.default=&#92;<br/><br/>#-b&amp;h-lucida-medium-r-normal-sans-*-%d-*-*-p-*-iso10646-1,&#92;<br/><br/>#-tlc-song-medium-r-normal--*-%d-*-*-c-*-gbk-0<br/><br/>fontset.default=&#92;<br/><br/>-misc-ZYSong18030-medium-r-normal--*-%d-*-*-c-*-iso10646-1<br/><br/>appendedfontpath=/usr/lib/X11/fonts/ttf-zh<br/><br/>appendedfontpath=/usr/share/fonts/zh_CN/TrueType
]]>
</description>
</item><item>
<link>http://www.qixiaomudong.cn/read.php?170</link>
<title><![CDATA[JFREECHART学习笔记]]></title> 
<author>七小木东 &lt;admin@yourname.com&gt;</author>
<category><![CDATA[JAVA技术]]></category>
<pubDate>Mon, 17 Jul 2006 02:53:50 +0000</pubDate> 
<guid>http://www.qixiaomudong.cn/read.php?170</guid> 
<description>
<![CDATA[ 
	JFreeChart中几个核心的对象类：&nbsp;&nbsp;类名&nbsp;&nbsp; 类的作用以及简单描述<br/>JFreeChart<br/> 图表对象，任何类型的图表的最终表现形式都是在该对象进行一些属性的定制。JFreeChart引擎本身提供了一个工厂类用于创建不同类型的图表对象<br/> <br/>XXXXXDataset<br/> 数据集对象，用于提供显示图表所用的数据。根据不同类型的图表对应着很多类型的数据集对象类。常用的数据集对象有：柱状图数据集对象DefaultCategoryDataset、饼图数据集对象DefauldPieDataset和曲线图数据集对象DefaultTableXYDataset<br/> <br/>XXXXXPlot<br/> 图表区域对象，基本上这个对象决定着什么样式的图表，创建该对象的时候需要Axis、Renderer以及数据集对象的支持。常用的Plot对象有：柱状图CategoryPlot、饼图PiePlot和曲线图XYPlot。<br/> <br/>XXXXXAxis<br/> 用于处理图表的两个轴：纵轴和横轴。常用的有NumberAxis数据轴，DateAxis日期轴。<br/> <br/>XXXXXRenderer<br/> 负责如何显示一个图表对象。常用的Renderer有DefaultCategoryItemRenderer 柱状图显示器StandardXYItemRenderer曲线图显示器。饼图的Renderer<br/> <br/>XXXXXURLGenerator<br/> 用于生成Web图表中每个项目的鼠标点击链接。常用的URLCenerator有StandardCategoryURLGenerator <br/>StandardPieURLGenerator <br/>StandardXYURLGenerator<br/> <br/>XXXXXToolTipGenerator<br/> 用于生成图象的帮助提示，不同类型图表对应不同类型的工具提示类。常用的有：StandardXYToolTipGenerator<br/>StandardCategoryToolTipGenerator<br/>StandardPieItemLabelGenerator<br/> <br/> <br/><br/>一般的创建图表的过程为：<br/><br/>1．&nbsp;&nbsp;从数据库里读取数据<br/><br/>2．&nbsp;&nbsp;将数据保存到图表对应的数据集对象中<br/><br/>3．&nbsp;&nbsp;创建坐标轴对象<br/><br/>4．&nbsp;&nbsp;创建Renderer对象<br/><br/>5．&nbsp;&nbsp;创建Plot对象<br/><br/>6．&nbsp;&nbsp;创建JfreeChart对象<br/><br/>7．&nbsp;&nbsp;生成图片文件（或者二进制流）<br/><br/> <br/><br/>以JfreeChart提供的Web应用的例子来说明一下以上几个步骤：<br/><br/>一．柱图。<br/><br/>public static String generateBarChart(Date hitDate, HttpSession session, PrintWriter pw) &#123;<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String filename = null;<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;try &#123;<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //&nbsp;&nbsp;Retrieve list of WebHits<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; WebHitDataSet whDataSet = new WebHitDataSet();<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ArrayList list = whDataSet.getDataBySection(hitDate);//获得数据集<br/> <br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //&nbsp;&nbsp;Throw a custom NoDataException if there is no data<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (list.size() == 0) &#123;<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println("No data has been found");<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;throw new NoDataException();<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &#125;<br/><br/> <br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;&nbsp;Create and populate a CategoryDataset<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Iterator iter = list.listIterator();<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;DefaultCategoryDataset dataset = new DefaultCategoryDataset();<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; while (iter.hasNext()) &#123;<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;WebHit wh = (WebHit)iter.next();<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dataset.addValue(new Long(wh.getHitCount()), "Hits", wh.getSection());<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &#125;//将数据集保存到Dataset对象<br/> <br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //&nbsp;&nbsp;Create the chart object<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; CategoryAxis categoryAxis = new CategoryAxis("");<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ValueAxis valueAxis = new NumberAxis("");//创建坐标轴<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; BarRenderer renderer = new BarRenderer();//创建Renderer<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; renderer.setItemURLGenerator(new StandardCategoryURLGenerator("xy_chart.jsp","series","section"));//创建URLGenerator.再不需要连接的情况下将第一个参数设置成"###"就可以了<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;renderer.setToolTipGenerator(new StandardCategoryToolTipGenerator());//创建提示标签<br/><br/> <br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Plot plot = new CategoryPlot(dataset, categoryAxis, valueAxis, renderer);//创建图表区域对象<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; JFreeChart chart = new JFreeChart("", JFreeChart.DEFAULT_TITLE_FONT, plot, false);<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; chart.setBackgroundPaint(java.awt.Color.white);//创建图表<br/><br/> <br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //&nbsp;&nbsp;Write the chart image to the temporary directory<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ChartRenderingInfo info = new ChartRenderingInfo(new StandardEntityCollection());//该工具类上面没有介绍，在鼠标移动到图片时显示提示信息是用Map实现的，这些Map是用该类生成的。<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; filename = ServletUtilities.saveChartAsPNG(chart, 500, 300, info, session);//保存图表为文件<br/><br/> <br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //&nbsp;&nbsp;Write the image map to the PrintWriter<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ChartUtilities.writeImageMap(pw, filename, info);//生成Map信息。这些信息写在pw的输出流中，这里的输出流就是Response.out。也就是直接输出到页面了<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; pw.flush();<br/><br/> <br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#125; catch (NoDataException e) &#123;<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.out.println(e.toString());<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; filename = "public_nodata_500x300.png";<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#125; catch (Exception e) &#123;<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.out.println("Exception - " + e.toString());<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; e.printStackTrace(System.out);<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; filename = "public_error_500x300.png";<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#125;<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return filename;<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &#125;<br/><br/>二．图表显示：<br/><br/><br/><&nbsp;&nbsp; %<br/> <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ......<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; String filename = WebHitChart.generateBarChart(dDate, session, new PrintWriter(out));//获得图片的文件名。注意该语句写在jsp文件（bar_chart.jsp）的开头，而用out的封装类作为参数，访问该页面后可以看到生成Map热点的内容输出再该页面的开头部分。也就是说最好是把这几句话写在页面有输出之前。<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;String graphURL = request.getContextPath() + "/servlet/DisplayChart?filename=" + filename;&nbsp;&nbsp; //显示图片的Servlet全路径名，另外文件名作为该Servlet的参数<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ......<br/><br/>%&nbsp;&nbsp;><br/><br/>......<br/><br/>< i m g src="<%= graphURL %>" width=500 height=300 border=0 usemap="#<%= filename %>"><br/> <br/><br/>src指定了servlet的全路径名，usermap指定了使用的热点。<br/><br/>该Servlet必须在WEB-INF/web.xml文件中配置：<br/><br/><servlet><br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;<servlet-name>DisplayChart</servlet-name><br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;<servlet-class>org.jfree.chart.servlet.DisplayChart</servlet-class><br/><br/>&nbsp;&nbsp;</servlet><br/><br/>&nbsp;&nbsp; <servlet-mapping><br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<servlet-name>DisplayChart</servlet-name><br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<url-pattern>/servlet/DisplayChart</url-pattern><br/><br/></servlet-mapping><br/><br/>该Servlet的作用就是将图片文件的二进制流数据写道response的输出流中，在客户端也就显示成了图片。<br/><br/>
]]>
</description>
</item><item>
<link>http://www.qixiaomudong.cn/read.php?169</link>
<title><![CDATA[ 使用JFreeChart生成热点图表]]></title> 
<author>七小木东 &lt;admin@yourname.com&gt;</author>
<category><![CDATA[JAVA技术]]></category>
<pubDate>Mon, 17 Jul 2006 02:46:04 +0000</pubDate> 
<guid>http://www.qixiaomudong.cn/read.php?169</guid> 
<description>
<![CDATA[ 
	＜一＞前言：<br/><br/>　　JFreeChart是开放源代码站点SourceForge.net上的一个JAVA项目。它的功能十分强大，能创建饼图、柱状图(普通柱状图以及堆栈柱状图)、线图、区域图、分布图、混合图、甘特图以及一些仪表盘等等，并可生成PNG或JPG图片格式文件。<br/>　　本人在学习过程中发现，网上很多文章都是讲一些JFreeChart的基本应用，而对JFreeChart生成热点图表这样常用的功能虽有所提及却没有一个完整的例子，所以我就写一个简单示例供大家参考，希望对大家的学习有所帮助。 <br/><br/>　　＜二＞示例说明：<br/><br/>　　假设有一个关于程序员北京，上海，广洲三地程序员学历，开发语言，薪金情况的调查。首先要以饼图显示程序员学历的分布情况(index.jsp)。点击饼图的每一部分会以柱状图显示该层次程序员所用开发语言和薪金的情况(barview.jsp)。重点演示怎样在饼图上添加链接。 <br/><br/>　　＜三＞准备工作：<br/><br/>　　1.下载最新版本的JFreeChart,当前为jfreechart-1.0.0-rc1<br/>下载地址：http://www.jfree.org/jfreechart/index.html<br/><br/>　　2.解压文件，将jfreechart-1.0.0-rc1/lib下的jcommon-1.0.0-rc1.jar，jfreechart-1.0.0-rc1.jar复制到WEB应用的lib目录下。<br/><br/>　　3.在web.xml文件中增加以下内容：<br/><span style="color: #8B0000;">＜servlet＞ <br/>＜servlet-name＞DisplayChart＜/servlet-name＞ <br/>＜servlet-class＞org.jfree.chart.servlet.DisplayChart＜/servlet-class＞ <br/>＜/servlet＞ <br/>＜servlet-mapping＞ <br/>＜servlet-name＞DisplayChart＜/servlet-name＞ <br/>＜url-pattern＞/servletDisplayChart＜/url-pattern＞ <br/>＜/servlet-mapping＞ </span> <br/><br/>＜四＞饼图页面代码（index.jsp） <br/><br/><span style="color: #8B0000;">＜%@ page contentType="text/html;charset=GBK"%＞ <br/>＜%@ page import="org.jfree.data.general.DefaultPieDataset"%＞ <br/>＜%@ page import="org.jfree.chart.*"%＞ <br/>＜%@ page import="org.jfree.chart.plot.*"%＞ <br/>＜%@ page import="org.jfree.chart.servlet.ServletUtilities"%＞ <br/>＜%@ page import="org.jfree.chart.labels.StandardPieItemLabelGenerator"%＞ <br/>＜%@ page import="org.jfree.chart.urls.StandardPieURLGenerator"%＞ <br/>＜%@ page import="org.jfree.chart.entity.StandardEntityCollection"%＞ <br/>＜%@ page import="java.io.*"%＞ <br/>＜HTML＞ <br/>＜HEAD＞ <br/>＜META http-equiv=Content-Type content="text/html; charset=GBK"＞ <br/>＜TITLE＞nacl_zhuang@hotmail.com＜/TITLE＞ <br/>＜/HEAD＞ <br/>＜BODY＞ <br/>＜% <br/><br/>DefaultPieDataset data = new DefaultPieDataset(); <br/>data.setValue("高中以下",370); <br/>data.setValue("高中",1530); <br/>data.setValue("大专",5700); <br/>data.setValue("本科",8280); <br/>data.setValue("硕士",4420); <br/>data.setValue("博士",80); <br/><br/>PiePlot3D plot = new PiePlot3D(data);//3D饼图 <br/>plot.setURLGenerator(new StandardPieURLGenerator("barview.jsp"));//设定链接 <br/>JFreeChart chart = new JFreeChart("",JFreeChart.DEFAULT_TITLE_FONT, plot, true); <br/>chart.setBackgroundPaint(java.awt.Color.white);//可选，设置图片背景色 <br/>chart.setTitle("程序员学历情况调查表");//可选，设置图片标题 <br/>plot.setToolTipGenerator(new StandardPieItemLabelGenerator()); <br/>StandardEntityCollection sec = new StandardEntityCollection(); <br/>ChartRenderingInfo info = new ChartRenderingInfo(sec); <br/>PrintWriter w = new PrintWriter(out);//输出MAP信息 <br/>//500是图片长度，300是图片高度 <br/>String filename = ServletUtilities.saveChartAsPNG(chart, 500, 300, info, session); <br/>ChartUtilities.writeImageMap(w, "map0", info, false); <br/><br/>String graphURL = request.getContextPath() + "/servlet/DisplayChart?filename=" + filename; <br/><br/>%＞ <br/><br/>＜P ALIGN="CENTER"＞ <br/>＜img src="＜%= graphURL %＞" width=500 height=300 border=0 usemap="#map0"＞ <br/>＜/P＞ <br/>＜/BODY＞ <br/>＜/HTML＞ </span><br/><br/>生成的图片如下<br/><a href="http://www.qixiaomudong.cn/attachment/200607/1153104135_0.png" target="_blank"><img src="http://www.qixiaomudong.cn/attachment/200607/1153104135_0.png" class="insertimage" alt="点击在新窗口中浏览此图片" title="点击在新窗口中浏览此图片" border="0"/></a><br/><br/>在浏览器中点右键－＞查看源文件会发现有以下一段HTML代码： <br/><span style="color: #8B0000;">＜map id="map0" name="map0"＞ <br/>＜area shape="poly" coords="247,61,250,61,250,123,250,123" title="博士 = 80" alt="" href="barview.jsp?category=博士&pieIndex=0"/＞ <br/>＜area shape="poly" coords="148,112,153,102,160,92,170,83,182,76,196,70,212,65,229,62,247,61,250,123,250,123" title="硕士 = 4,420" alt="" href="barview.jsp?category=硕士&pieIndex=0"/＞ <br/>＜area shape="poly" coords="324,167,311,173,297,179,282,182,266,185,250,186,234,185,217,183,202,179,188,173,175,167,<br/>　 165,159,157,151,151,142,147,132,146,122,148,112,250,123,250,123" title="本科 = 8,280" alt="" <br/>　href="barview.jsp?category=本科&pieIndex=0"/＞ <br/>＜area shape="poly" coords="307,72,324,80,338,91,347,103,352,117,352,131,347,144,338,156,324,167,250,123,250,123" title="大专 = 5,700" alt="" href="barview.jsp?category=大专&pieIndex=0"/＞ <br/>＜area shape="poly" coords="261,62,285,65,307,72,250,123,250,123" title="高中 <br/>　= 1,530" alt="" href="barview.jsp?category=高中&pieIndex=0"/＞ <br/>＜area shape="poly" coords="250,61,261,62,250,123,250,123" title="高中以下 = 370" alt="" href="barview.jsp?category=高中以下&pieIndex=0"/＞ <br/>＜/map＞&nbsp;&nbsp;</span><br/>这就是MAP信息，我们在IMG标签中加入usemap="#map0"就可以为饼图的每一部分加入链接。<br/>＜五＞柱状图页面代码：(barview.jsp)<br/><span style="color: #8B0000;">＜HTML＞ <br/>＜HEAD＞ <br/>＜META http-equiv=Content-Type content="text/html; charset=GBK"＞ <br/>＜TITLE＞nacl_zhuang@hotmail.com＜/TITLE＞ <br/>＜/HEAD＞ <br/><br/>＜body＞ <br/><br/>＜%@ page contentType="text/html;charset=GBK"%＞ <br/>＜%@ page import="org.jfree.chart.ChartFactory, <br/>org.jfree.chart.JFreeChart, <br/>org.jfree.chart.plot.PlotOrientation, <br/>org.jfree.chart.servlet.ServletUtilities, <br/>org.jfree.data.category.*"%＞ <br/>＜% <br/>CategoryDataset dataset; <br/>String category=request.getParameter("category"); <br/>category= new String(category.getBytes("ISO8859_1"), "GBK"); <br/>if(category.equals("本科")&#124;&#124;category.equals("高中")&#124;&#124;category.equals("大专")) <br/>&#123; <br/>　dataset=getDataSet(); <br/>&#125; <br/>else if(category.equals("硕士")&#124;&#124;category.equals("博士")) <br/>&#123; <br/>　dataset=getDataSet2(); <br/>&#125;else <br/>&#123; <br/>　dataset=getDataSet3(); <br/>&#125; <br/>String title=category+"程序员在各城市薪金情况统计"; <br/>JFreeChart chart = ChartFactory.createBarChart3D(title, <br/>"城市", <br/>"薪金", <br/>dataset, <br/>PlotOrientation.VERTICAL, <br/>true, <br/>false, <br/>false); <br/><br/>String filename = ServletUtilities.saveChartAsPNG(chart, 500, 300, null, session); <br/>String graphURL = request.getContextPath() + "/servlet/DisplayChart?filename=" + filename; <br/>%＞ <br/>＜P ALIGN="CENTER"＞ <br/>＜img src="＜%= graphURL %＞" width=500 height=300 border=0 usemap="#＜%= filename %＞"＞ <br/>＜/P＞ <br/>＜%! <br/>private static CategoryDataset getDataSet() &#123; <br/>　DefaultCategoryDataset dataset = new DefaultCategoryDataset(); <br/>　dataset.addValue(2000, "北京", "VB"); <br/>　dataset.addValue(1800, "上海", "VB"); <br/>　dataset.addValue(2200, "广州", "VB"); <br/>　dataset.addValue(3200, "北京", "JAVA"); <br/>　dataset.addValue(3500, "上海", "JAVA"); <br/>　dataset.addValue(3600, "广州", "JAVA"); <br/>　dataset.addValue(3300, "北京", "DOT NET"); <br/>　dataset.addValue(3400, "上海", "DOT NET"); <br/>　dataset.addValue(3700, "广州", "DOT NET"); <br/>　dataset.addValue(2500, "北京", "DELPHI"); <br/>　dataset.addValue(2800, "上海", "DELPHI"); <br/>　dataset.addValue(3200, "广州", "DELPHI"); <br/>　dataset.addValue(5000, "北京", "VC"); <br/>　dataset.addValue(3500, "上海", "VC"); <br/>　dataset.addValue(4600, "广州", "VC"); <br/>　return dataset; <br/>&#125; <br/>private static CategoryDataset getDataSet2() &#123; <br/>　DefaultCategoryDataset dataset = new DefaultCategoryDataset(); <br/>　dataset.addValue(2000, "上海", "VB"); <br/>　dataset.addValue(3000, "北京", "JAVA"); <br/>　dataset.addValue(3330, "上海", "JAVA"); <br/>　dataset.addValue(3500, "广州", "JAVA"); <br/>　dataset.addValue(3500, "北京", "DOT NET"); <br/>　dataset.addValue(4000, "上海", "DOT NET"); <br/>　dataset.addValue(4800, "广州", "DOT NET"); <br/>　dataset.addValue(2600, "北京", "DELPHI"); <br/>　dataset.addValue(2200, "上海", "DELPHI"); <br/>　dataset.addValue(4000, "北京", "VC"); <br/>　dataset.addValue(4000, "上海", "VC"); <br/>　dataset.addValue(4200, "广州", "VC"); <br/>　return dataset; <br/>&#125; <br/>private static CategoryDataset getDataSet3() &#123; <br/>　DefaultCategoryDataset dataset = new DefaultCategoryDataset(); <br/>　dataset.addValue(2100, "北京", "VB"); <br/>　dataset.addValue(2200, "上海", "VB"); <br/>　dataset.addValue(2100, "广州", "VB"); <br/>　dataset.addValue(3000, "北京", "JAVA"); <br/>　dataset.addValue(3200, "上海", "JAVA"); <br/>　dataset.addValue(3600, "广州", "JAVA"); <br/>　dataset.addValue(4100, "北京", "DOT NET"); <br/>　dataset.addValue(4200, "上海", "DOT NET"); <br/>　dataset.addValue(4160, "广州", "DOT NET"); <br/>　dataset.addValue(2400, "北京", "DELPHI"); <br/>　dataset.addValue(2600, "上海", "DELPHI"); <br/>　dataset.addValue(2500, "广州", "DELPHI"); <br/>　dataset.addValue(5400, "北京", "VC"); <br/>　dataset.addValue(5000, "上海", "VC"); <br/>　dataset.addValue(5500, "广州", "VC"); <br/>　return dataset; <br/>&#125; <br/>%＞ <br/>＜/body＞ <br/>＜/html＞ </span>生成图片如下： <br/><a href="http://www.qixiaomudong.cn/attachment/200607/1153104365_0.png" target="_blank"><img src="http://www.qixiaomudong.cn/attachment/200607/1153104365_0.png" class="insertimage" alt="点击在新窗口中浏览此图片" title="点击在新窗口中浏览此图片" border="0"/></a><br/><br/>＜六＞后记<br/><br/>　　1.这是本人发表的第一篇文章，如有不妥之处，请大家指正。<br/><br/>　　2.本人以程序员学历调查为例，实属对很多企业不接受低学历程序员的现象身有感触。本人认为，如果一个低学历的人真正的的想做程序员，他就会比其他人更加刻苦学习更多的知识。如果一个企业愿意用一个没有学历的程序员，他也会对这家企业心存感激，认真工作，不会轻易跳槽。 <br/>出自http://dev.yesky.com/307/2036307.shtml
]]>
</description>
</item>
</channel>
</rss>