最近对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&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没有多大作用,但对于jfreechat报表初学者而言,确实比一般的网上的那些例子看起来更简单一些,而且里面有足够多的注释,更加利于初学者对jfreechat报表的入门,由于本人的应用需求不够广泛的...
本篇文章将深入探讨如何使用Java技术栈,特别是Struts和JFreeChart库来实现Web图形报表。Struts作为MVC框架,是Java Web开发中的一个经典选择,而JFreeChart则是一个强大的图表生成库,两者结合可以创建出丰富的交互...
Eclipse建立的WEB项目 做的3种 柱状图 带突出的饼图 线性图 的实例效果 柱状图数据采用随机数充当数据(为了看到实时变化的图形效果) 直接导入项目运行即可 http://localhost:8080/JFreechat/index.jsp
jfreechat,此文件包含图形的事例,和源代码的实现,开发人员可以根据图形直接把源码拷贝过来应用
在IT行业中,生成报表是一项常见的任务,特别是在数据分析、业务监控以及决策支持等领域。JFreeChart是一个流行的Java库,它提供了一种强大而灵活的方式来创建各种图表和报表,包括线图、柱状图、饼图、散点图以及...
jfreechat软件demo
这个压缩包文件“baobiaozuoye”很可能是包含了一些使用JFreeChart制作的报表示例或者源代码,旨在帮助用户了解和学习如何利用JFreeChart进行报表设计。 JFreeChart支持多种图表类型,包括但不限于: 1. 折线图:...
例如,你可以先用JFreeChart生成图表,然后将其嵌入到iText创建的PDF文档中,这样既能利用图表的可视化优势,又能充分利用PDF格式的可打印和可分享特性。 在学习和使用这两个工具时,可以通过实例代码加深理解,...
《JFreeChart 折线图详解》...无论是用于报表、数据分析还是教学演示,JFreeChart 都能提供丰富的选项来满足需求。通过学习和实践,我们可以利用这个开源库创造出更具吸引力的图形界面,提升应用程序的功能和用户体验。
在"jsp报表jfreechat学习案例"中,我们主要关注如何利用JFreeChart与JavaServer Pages(JSP)技术结合,生成动态且交互式的报表。下面将详细介绍JFreeChart库的功能,以及如何在JSP中使用它来实现这些图表。 1. **...
**JFreeChart报表详解** JFreeChart是一款强大的Java图表库,它允许开发者在应用程序、Swing组件或Web应用中创建各种复杂且美观的图表。在`JFreeChatTest.rar`这个压缩包中,包含了JFreeChart报表的具体实例,旨在...
使用JFreeChart时,开发者可以通过API创建图表对象,设定数据源,然后配置各种属性,最后将图表输出为图片或嵌入到Swing应用中。它支持多种输出格式,如JPEG、PNG、PDF、SVG等,方便在各种平台上展示和打印。 总的...
标题"jfreechart的例子"表明我们将探讨JFreeChart的实例应用,而描述中的“报表最好的工具”进一步强调了它在报表制作中的价值,特别是对于初学者来说。 JFreeChart的特点包括但不限于以下几点: 1. **多类型图表*...
然而,在某些Linux发行版,尤其是Ubuntu中,由于默认字体不支持或者配置问题,可能导致JFreeChart生成的图形中的文本出现乱码。这个问题主要涉及到Java的字体渲染机制以及Ubuntu的字体设置。 首先,我们需要理解的...
9. **报表生成**:结合其他报表工具(如JasperReports),JFreeChart可以生成更复杂的报表,包含多个图表和表格,以进行数据分析。 10. **性能优化**:虽然JFreeChart是一个功能强大的库,但在处理大量数据时,可能...
JFreeChat中文教程(入门篇).rar
JFreeChat中文API,大致方法和说明都有,希望对需要的人有用。
这个开源项目广泛应用于数据分析、报表生成和可视化应用中。本教程将带你了解如何开始使用JFreeChart进行数据可视化。 1. **安装与引入** 在开始之前,你需要将JFreeChart库添加到你的Java项目中。你可以从...