`

用jfreechat制作图形报表

 
阅读更多
    最近对jfreechat制作图形报表进行了总结,将一些要点记录下来,以备不时之需!
    JFreeChart是JAVA平台上的一个开放的图表绘制类库。它完全使用JAVA语言编写,是为applications, applets, servlets 以及JSP等使用所设计。JFreeChart可生成饼图(pie charts)、柱状图(bar charts)、散点图(scatter plots)、时序图(time series)、甘特图(Gantt charts)等等多种图表,并且可以产生PNG和JPEG格式的输出,还可以与PDF和EXCEL关联。
关联jar包
    jfreechart-1.0.11.jar、jcommon-1.0.14.jar

spring与jfreechart结合开发

web.xml
    <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>


当然,这里的URL前缀可以自己设置!

JFreeChartUtils。这里以折线图为例:
	public static String createLineChart(HttpSession session,
			CategoryDataset dataset, String title, String xtitle,
			String ytitle, int width, int height, PrintWriter pw) {
		String filename = "";

		JFreeChart jfreechart = ChartFactory.createLineChart(title, xtitle,
				ytitle, dataset, PlotOrientation.VERTICAL, true, true, true);

		jfreechart.setTitle(new TextTitle(title,
				new Font("黑体", Font.ITALIC, 20)));// 重新设置图表标题,改变字体

		jfreechart.getTitle().setFont(new Font("黑体", Font.ITALIC, 20)); // 解决标题乱码

		jfreechart.setBackgroundPaint(Color.white); // 设定背景色为白色

		CategoryPlot plot = (CategoryPlot) jfreechart.getPlot(); // 获得

		plot.setBackgroundPaint(Color.lightGray); // 设定图表数据显示部分背景色

		plot.setDomainGridlinePaint(Color.white); // 横坐标网格线白色

		plot.setDomainGridlinesVisible(true); // 网格线

		plot.setRangeGridlinePaint(Color.white); // 纵坐标网格线白色

		plot.setAxisOffset(new RectangleInsets(5D, 5D, 5D, 5D)); // 设定坐标轴与图表数据显示部分距离

		CategoryAxis categoryAxis = plot.getDomainAxis();// 取得横轴

		categoryAxis.setCategoryLabelPositions(CategoryLabelPositions.UP_45);// 设置分类标签以45度角倾斜

		Font font = new Font("宋体", Font.BOLD, 16);

		categoryAxis.setLabelFont(font);// 设置横轴显示标签的字体

		categoryAxis.setTickLabelFont(font); // 解决横坐标乱码

		NumberAxis numberAxis = (NumberAxis) plot.getRangeAxis();// 取得纵轴

		numberAxis.setLabelFont(font);// 设置纵轴显示标签的字体

		numberAxis.setTickLabelFont(font); // 解决纵坐标乱码

		numberAxis.setStandardTickUnits(NumberAxis.createIntegerTickUnits());// 使纵坐标的最小单位格为整数

		numberAxis.setAutoRangeIncludesZero(true);

		StandardEntityCollection sec = new StandardEntityCollection();
		ChartRenderingInfo info = new ChartRenderingInfo(sec);

		try {
			filename = ServletUtilities.saveChartAsPNG(jfreechart, width,
					height, info, session);
			ChartUtilities.writeImageMap(pw, filename, info, false);
			pw.flush();
		} catch (IOException e) {
			e.printStackTrace();
		}
		return filename;
	}


这里需要说明的是关于中文乱码的问题,其实很简单,只要设置相应的字体就好了!有很多朋友对 ChartUtilities.writeImageMap(pw, filename, info, false);  这句代码有些疑惑,这里结合页面代码进行说明!

jsp代码:
  <img src="${file}" border=0 usemap="#${filename}">


生成的页面源码:
<map id="jfreechart-62526.png" name="jfreechart-62526.png">
<area shape="poly" coords="727,43,733,43,733,49,727,49,727,43,727,43" title="(在线用户数, 07-26 11:55) = 44" alt="" href="index.html?series=%E5%9C%A8%E7%BA%BF%E7%94%A8%E6%88%B7%E6%95%B0&amp;category=07-26+11%3A55"/>
<area .... />
</map>

<img src="/gameCenter/servlet/DisplayChart?filename=jfreechart-62526.png" border=0 usemap="#jfreechart-62526.png"> 



可以注意到img的usemap标签是关键点!usemap 属性将图像定义为客户端图像映射。图像映射指的是带有可点击区域的图像。详细资料请参考 img的usemap标签。如而生成的页面代码中<map>......</map>部分正是ChartUtilities.writeImageMap(pw, filename, info, false);所生成!这样当你鼠标移动到生成的图标的某一个部分时,就会显示对应的title,点击会跳转到相应的url等。

当然这里也会出现中文乱码的问题,解决办法也很简单,只要在response中做下编码设置就OK了!

response.setContentType("text/html;charset=UTF-8");
Writer out = response.getWriter();
PrintWriter pw=new PrintWriter(out);

分享到:
评论

相关推荐

    jfreechat报表

    这个压缩包文件“baobiaozuoye”很可能是包含了一些使用JFreeChart制作的报表示例或者源代码,旨在帮助用户了解和学习如何利用JFreeChart进行报表设计。 JFreeChart支持多种图表类型,包括但不限于: 1. 折线图:...

    jfreechat 折线图

    《JFreeChart 折线图详解》...无论是用于报表、数据分析还是教学演示,JFreeChart 都能提供丰富的选项来满足需求。通过学习和实践,我们可以利用这个开源库创造出更具吸引力的图形界面,提升应用程序的功能和用户体验。

    jfreechat中文教程

    JFreeChart 是一个流行的开源 Java 图形库,它提供了创建各种图表的能力,如柱状图、饼图、线图、散点图等。这个中文教程是为那些想要深入理解 JFreeChart 并在自己的 Java 应用程序中使用它的开发者准备的。本文将...

    图表绘制jfreechat

    **JFreeChart 概述** JFreeChart 是一个在Java平台上广泛使用的开源图表库,它提供了丰富的图表类型...无论你是数据分析、报表制作还是可视化应用的开发者,JFreeChart 都能帮助你轻松地将数据转化为易于理解的图形。

    jsp编程技巧集锦

    用jfreechat制作拄、饼、曲线图型? 65. 文本框怎么只容许输入数字? 66. 打开Word和Execl文件? 67. 生成Word 和 Excel文档? 68. JSP如何读取Word内容? 69. 浏览服务器目录/文件? 70. jsp直接弹...

Global site tag (gtag.js) - Google Analytics