`

JFreeChart综合应用

    博客分类:
  • java
阅读更多

JFreeChart是一个开源的JAVA项目,它主要用来开发各种各样的图表,这些图表包括:饼图、柱状图(普通柱状图以及堆栈柱状图)、线图、区域图、分布图、混合图、甘特图以及一些仪表盘等等。在这些不同式样的图表上可以满足目前商业系统的要求。JFreeChart是一种基于JAVA语言的图表开发技术。JFreeChart可用于ServletJSPAppletJava Appication环境中,通过JDBC可动态显示任何数据库数据,结合Itext可以输出至PDF文件。

JFreeChart主要是由三个类构成:

Aorg.jfree.chart.servlet.ChartDeleter继承自HttpSessionBindingListener,用于实现当Session 关闭时,删除临时目中的图象文件。

Borg.jfree.chart.servlet.DisplayChart继承自Httpservlet 用于处理显示图象。

Corg.jfree.chart.servlet.ServletUtilities有一系列方法,例如,saveChartAs*;saveChartAs*是把图表按照不同的形式存储为图象;sendTempFile方法被重载了很多次,用于把文件流发送response

下面以柱状图和饼图为例,介绍图形创建方法。

1 柱状图

org.jfree.chart.ChartFactory这个工厂类有createBarChartcreateStackedBarChartcreateBarChart3DcreateStackedBarChart3D,这几个工厂方法创建不同类型的柱状图,比较重要的是 PlotOrientation.VERTICAL 让平行柱垂直显示,而 PlotOrientation.HORIZONTAL 则让平行柱水平显示。对柱状图影响较大的几个类包括:org.jfree.chart.axis.CategoryAxisorg.jfree.chart.axis.ValueAxisorg.jfree.chart.renderer.BarRendererorg.jfree.chart.renderer. BarRenderer3D

具体实现步骤:

1)创建用于图形生成所要的数据集对象。

CategoryDataset dataset = DatasetUtilities.createCategoryDataset(rowKeys, columnKeys, data)

其中:rowKeys表示X轴数据,columnKeys表示Y轴数据,data表示填充柱状图所要的实际数据(来自于数据库)。

2)创建图形对象。

JFreeChart chart = ChartFactory.createBarChart3D("标题",nullnulldatasetPlotOrientation.VERTICAL,truefalsefalse)

createBarChart3D方法是ChartFactory工厂类里的一个方法,用于3D柱状图的生成,该类继承自JFreeChart。其中的八个参数分别代表:图形的标题、X轴标题、Y轴标题、dataset就是CategoryDataset类的实例对象、显示标题、启用热键、启用超键接。

3)设置图形显示的属性。

a ) ValueAxis类,设置柱到图上下边的距离。实现方法是:

ValueAxis rangeAxis = plot.getRangeAxis();

设置最高的一个柱与图片顶端的距离:

rangeAxis.setUpperMargin(0.15)

设置最低的一个柱与图片底端的距离:

rangeAxis.setLowerMargin(0.15)

borg.jfree.chart.renderer.BarRenderer3D类,设置图形上显示的数值。实现方法如下:

BarRenderer3D renderer = new BarRenderer3D();

renderer.setBaseOutlinePaint(Color.BLACK);

设置 Wall 的颜色:

renderer.setWallPaint(Color.gray);

设置每个柱的颜色:

renderer.setSeriesPaint(0, new Color(0, 0, 255));

renderer.setSeriesPaint(1, new Color(0, 100, 255));

renderer.setSeriesPaint(2, Color.GREEN);

设置每个柱的 Outline 颜色 renderer.setSeriesOutlinePaint(0, Color.BLACK);

renderer.setSeriesOutlinePaint(1, Color.BLACK);

renderer.setSeriesOutlinePaint(2, Color.BLACK);

设置每个地区所包含的平行柱之间的距离 renderer.setItemMargin(0.1);

显示每个柱的数值,并修改该数值的字体属性

renderer.setItemLabelGenerator(new StandardCategoryItemLabelGenerator());

renderer.setItemLabelFont(new Font("黑体",Font.PLAIN,12));

renderer.setItemLabelsVisible(true);

为图形加入超连接

renderer.setItemURLGenerator(new StandardCategoryURLGenerator());

renderer.setToolTipGenerator(new StandardCategoryToolTipGenerator());

2 饼图

org.jfree.chart.plot包,包含创建饼形图的所有方法和属性。

笔者根据业务需求创建了setURLGenerator(PieURLGenerator generator)方法,在图片上建立连接,就是图片不同部分连接不同的资源。

setSectionLabelType(int type)方法:

指定 section 标签的类型,共有 7 种类型。如果不指定,默认是 NAME_LABELS,其中类型分别是:

PiePlot.NO_LABELS

PiePlot.NAME_LABELS

PiePlot.VALUE_LABELS

PiePlot.PERCENT_LABELS PiePlot.NAME_AND_VALUE_LABELSPiePlot. NAME_AND_PERCENT_LABELSPiePlot.VALUE_AND_PERCENT_LABELS

setDefaultOutlinePaint(java.awt.Paint paint)方法,指定 section 轮廓线的颜色,如果不指定,默认值为NULL

setDefaultOutlineStroke(java.awt.Stroke stroke)方法,指定 section 轮廓线的厚度。

setRadius(double percent) setExplodePercent(int section, double percent)方法,抽离 section,就是把某一section从饼形图剥离出来,需要两个方法一起使用。

setStartAngle(double angle)方法,设置第一个section开始位置,默认从12点钟方向开始。

setPaint(int section, java.awt.Paint paint)方法指定section的颜色。

setDirection(int direction)方法指定section顺序,默认是顺时针方向。顺时针:PiePlot.CLOCKWISE;逆时针:PiePlot.ANTICLOCKWISE

具体实现步骤:

1)创建用于图形生成所要的数据集对象。

首先实例化类DefaultPieDataset dataset = new DefaultPieDataset()。然后利用DefaultPieDataset类提供的setValuevalue1,value2)方法,把从数据库里提取的数据存入DefaultPieDataset对象。其中value1是数据名称、value2是数据值。

2)创建图形对象。

首先实例化JFreeChart chart = ChartFactory.createPieChart3D(title, dataset, true, true, false)createPieChart3D方法是用于饼图生成的主要方法。其中title代表图形的标题、dataset就是DefaultPieDataset对象的实例。

3)设置图形显示的属性。

String filename = ServletUtilities.saveChartAsPNG(jFreeChart, 700, 450, info, session);

ChartUtilities.writeImageMap(pw, filename, info);

pw.flush()

saveChartAsPNG方法在ServletUtilities工厂类定义完成。主要用于把图形对象JFreeChart以图片的形式保存。其中的jFreeChart就是JFreeChart对象的实例。该方法返回一个文件名。

writeImageMappw, filename, info)方法用于把保存的图片文件以字节流的形式写入用户界面。

其中pwjava.io包的PrintWriter类的实例对象,该对象创建一个图形输出流。Filename是输出图片的文件名。该文件名来自ServletUtilities.saveChartAsPNG方法创建。

参数info用于图形信息的显示。

ChartRenderingInfo info=new ChartRenderingInfo(new StandardEntityCollection())创建。

最后输出完成图形,调用pw.flush()方法关闭IO流。

分享到:
评论

相关推荐

    JfreeChart教程+API+例子

    **JFreeChart:一个强大的Java图表库** JFreeChart是一个广泛使用的开源Java库,它提供了丰富的图表类型,如折线图、饼图、柱状图和堆栈柱状图等,用于数据可视化。这个库非常适合那些希望在Java应用程序中集成高...

    applet_+_JfreeChart_实现曲线走势图

    综上所述,结合Applet和JFreeChart实现曲线走势图是一项涉及Web客户端编程、数据可视化和Java图形处理的综合任务。尽管Applet已逐渐被淘汰,但学习这个过程对于理解早期Web技术以及图形库的使用仍然有其价值。

    MyBatis高级查询+JFreeChart热点

    【标题】"MyBatis高级查询+JFreeChart热点"是一个综合的学习项目,它涵盖了数据库操作和数据可视化两个重要领域。MyBatis是Java开发中常用的一个持久层框架,而JFreeChart则是一个用于创建高质量图表的库。下面将...

    S2SH+jfreechart+ajax动态生成统计图

    在本文中,我们将深入探讨如何使用S2SH(Struts2、Spring、Hibernate)框架,结合JFreeChart库和Ajax技术,动态生成...在实际应用中,可以根据需求调整图表类型、样式以及数据来源,以满足各种复杂的数据可视化需求。

    jfreechart-1.0.14.rar

    在实际项目中,JFreeChart可以与其他Java框架集成,比如Swing或JavaFX,用于创建桌面应用的图形界面;也可以配合Servlet或JSP在Web应用中生成动态图表,通常会与ChartUtilities类结合,将图表保存为图片文件并返回给...

    spring+struts2+hibernate+ajax+jfreechart 广告管理系统

    通过上述技术的综合运用,这个广告管理系统具备了高效的数据处理能力、友好的用户界面以及丰富的数据分析功能。系统中的十几张表涵盖了广告主、广告位、广告订单、投放效果等多个方面,充分体现了其实战价值。这样的...

    投票系统struts2.0+hibernate3.2+spring2.5+sqlserver2005数据库,+JFReeChart饼图,柱状图显示。

    这是一个基于Java技术栈的投票系统...总的来说,这个投票系统展示了Java企业级开发中常用的技术组合,包括前端MVC框架、ORM工具、应用管理框架以及数据库管理和图表库的综合运用,为开发者提供了一个完整的参考示例。

    flex+jfreechart+others 整合架包和配置

    综上所述,"flex+jfreechart+others"的整合是一项涉及前端交互、后端数据处理、通信协议、图表定制等多个领域的综合性工作,需要开发者具备多方面技能。通过这样的整合,可以打造出既美观又功能强大的数据可视化应用...

    Java图表 JFreeChart

    Java图表库JFreeChart是Java开发中用于创建各种复杂图表的开源工具,广泛应用于数据分析、报表生成、可视化应用等场景。这个库支持多种图表类型,包括柱状图、饼图、线形图、散点图、面积图、甘特图以及复杂的组合...

    JSP使用组件jspSmartUpload+JavaMail+jaf+iText+jFreechart

    综合运用这些组件,开发者可以构建一个功能完善的Web应用,实现用户文件上传下载、邮件发送、报表生成等功能。例如,用户上传的文件可以通过jspSmartUpload组件处理,然后利用JavaMail发送邮件附带文件;同时,可以...

    struts2+hibernate+spring+jfreechart+导出excel+导出pdf完美整合.zip

    Struts2、Hibernate、Spring 和 JFreeChart 是Java开发中常用的四大框架和技术,它们在企业级应用开发中扮演着重要角色。这个压缩包文件“struts2+hibernate+spring+jfreechart+导出excel+导出pdf完美整合.zip”显然...

    jfreechar20100603.rar

    "JFreeChart的介绍及API说明_经云_新浪博客.files"和"JFreechart综合 - Powered by Sablog-X.files"这两个文件夹可能包含图片、样式表或者其他支持上述HTML页面的资源。 学习JFreeChart时,通常会从以下几个方面...

    JAVA做的毕业设计 综合测评系统

    5. **报表与可视化**:系统应能生成各类统计报告,如班级平均分、个人排名等,并以图表形式展示,可能涉及JFreeChart或Echarts等图表库。 6. **通知与消息**:系统需要有通知公告发布和用户消息推送功能,可能利用...

    Java Web开发实例大全(基础卷) 完整pdf扫描版[179MB]

    全书分为7篇23章,包括流行组件应用、数据库应用、图表统计、Ajax框架应用、流行框架、网站安全与架构模式、综合应用等。重点内容有操作XML文件、发送与接收邮件、数据库操作技术、SQL语句应用技术、复杂查询技术、...

    java毕业设计(学校综合管理系统)

    Java毕业设计中的“学校综合管理系统”是一个典型的业务应用系统,主要目标是实现对学校日常管理工作的信息化、自动化处理。这个项目涵盖了多个模块,涉及到许多Java技术及其相关领域,包括数据库设计、用户界面、...

    struts综合示例

    在"Struts 综合示例"中,我们可以深入理解Struts框架的核心概念和功能,包括其在图形报表展示、类库集成以及其他实际应用中的运用。 首先,Struts框架的核心组件包括Action、ActionForm、ActionMapping、Controller...

    j2ee报表开发

    Java报表开发是企业级应用中不可或缺的一部分,它...通过学习iReport和JFreeChart,你将能够为你的J2EE应用构建功能丰富的报表系统,帮助用户更好地理解和利用数据。在实践中不断探索和优化,你将成为这个领域的专家。

    Java Web开发实例大全

    全书分为7篇23章,包括流行组件应用、数据库应用、图表统计、Ajax框架应用、流行框架、网站安全与架构模式、综合应用等。重点内容有操作XML文件、发送与接收邮件、数据库操作技术、SQL语句应用技术、复杂查询技术、...

    iReport_cubebi、、jfreechar 案例

    标题 "iReport_cubebi、jfreechar案例" 提示我们关注的是两个特定的开源工具在IT领域的应用,它们分别是iReport和jFreeChart。这两个工具在数据可视化和报表设计方面发挥着重要作用。 首先,iReport是一款强大的...

    ssm 开发教师综合评价系统

    这可能需要使用到数据分析和可视化工具,如JFreeChart或者ECharts,帮助管理者快速理解教师的绩效状况。 "批量导入"功能通常用于快速输入大量数据,例如批量导入教师信息或评价数据。这通常涉及到文件上传、数据...

Global site tag (gtag.js) - Google Analytics