本文环境配置请查看上一篇JFreeChart开发Web图形报表(柱状图),本文都是在其环境配置基础之上。
四、曲线图
曲线图可能是企业开发用得最多的图,它可以用来绘制趋势图、统计分析等。在开始编码前,让我们来看看与画曲线图密切相关的几个类:
1)TimeSeriesCollection
曲线数据的集合。
2)TimeSeries
曲线信息序列。
3) ChartFactory
以利用该类的createTimeSeriesChart方法来创建曲线的JFreeChart对象。
新建line1.jsp页面。代码如下:
<%@ page contentType="text/html;charset=GBK"%> <%@ page import = "org.jfree.chart.ChartFactory,org.jfree.chart.JFreeChart, org.jfree.chart.servlet.ServletUtilities,org.jfree.chart.title.TextTitle, org.jfree.data.time.TimeSeries,org.jfree.data.time.Month,org.jfree.chart.plot.XYPlot, org.jfree.data.time.TimeSeriesCollection,java.awt.Font,org.jfree.chart.renderer.xy.XYLineAndShapeRenderer, org.jfree.chart.renderer.xy.XYItemRenderer,org.jfree.ui.RectangleInsets, org.jfree.chart.labels.*,org.jfree.ui.*,org.jfree.chart.axis.*,java.util.*"%> <% //访问量统计时间线 TimeSeries timeSeries = new TimeSeries("某网站访问量统计", Month.class); //时间曲线数据集合 TimeSeriesCollection lineDataset = new TimeSeriesCollection(); //构造数据集合 timeSeries.add(new Month(1, 2010), 1100); timeSeries.add(new Month(2, 2010), 1200); timeSeries.add(new Month(3, 2010), 1000); timeSeries.add(new Month(4, 2010), 900); timeSeries.add(new Month(5, 2010), 1000); timeSeries.add(new Month(6, 2010), 1200); timeSeries.add(new Month(7, 2010), 1300); timeSeries.add(new Month(8, 2010), 1400); timeSeries.add(new Month(9, 2010), 1200); timeSeries.add(new Month(10, 2010), 1500); timeSeries.add(new Month(11, 2010), 1600); timeSeries.add(new Month(12, 2010), 1300); lineDataset.addSeries(timeSeries); JFreeChart chart = ChartFactory.createTimeSeriesChart("访问量统计时间线", "月份", "访问量", lineDataset, true, true, true); //设置主标题 chart.setTitle(new TextTitle("某网站访问量统计", new Font("隶书", Font.ITALIC, 15))); //设置子标题 TextTitle subtitle = new TextTitle("2010年度", new Font("黑体", Font.BOLD, 12)); chart.addSubtitle(subtitle); chart.setAntiAlias(true); XYPlot plot = (XYPlot) chart.getPlot(); //设置时间轴的范围。 DateAxis dateaxis = (DateAxis)plot.getDomainAxis(); dateaxis.setDateFormatOverride(new java.text.SimpleDateFormat("M月")); dateaxis.setTickUnit(new DateTickUnit(DateTickUnit.MONTH,1)); Calendar date = Calendar.getInstance(); date.set(2009, 11, 1); Calendar mdate = Calendar.getInstance(); mdate.set(2010, 11, 30); dateaxis.setRange(date.getTime(),mdate.getTime()); //设置最大坐标范围 ValueAxis axis = plot.getRangeAxis() ; axis.setRange(800,1800) ; plot.setRangeAxis(axis); //设置曲线图与xy轴的距离 [上,左,下,右] plot.setAxisOffset(new RectangleInsets(0D, 0D, 0D, 12D)); //设置曲线是否显示数据点 XYLineAndShapeRenderer xylinerenderer = (XYLineAndShapeRenderer)plot.getRenderer(); xylinerenderer.setBaseShapesVisible(true); //设置曲线显示各数据点的值 XYItemRenderer xyitem = plot.getRenderer(); xyitem.setBaseItemLabelsVisible(true); xyitem.setBasePositiveItemLabelPosition(new ItemLabelPosition(ItemLabelAnchor.OUTSIDE12, TextAnchor.BASELINE_CENTER)); xyitem.setBaseItemLabelGenerator(new StandardXYItemLabelGenerator()); xyitem.setBaseItemLabelFont(new Font("Dialog", 1, 12)); plot.setRenderer(xyitem); String filename = ServletUtilities.saveChartAsPNG(chart, 500, 360, null, session); String graphURL = request.getContextPath() + "/DisplayChart?filename=" + filename; %> <img src="<%= graphURL %>" width=500 height=360 border=0 >
运行后的曲线效果如下图所示:
代码和柱状图和饼图都很像,上图是加的参数比较多。看官也可以修改其中的一些参数看看有什么变化。
PS:学习就是多实践。
上面的曲线图都是单曲线的,有时候我们对两个曲线进行比较,在此种情况下,我们只需要在多新建一个TimeSeries对象,给它添加数据后,将其添加到TimeSeriesCollection型数据集合对象中,代码如下:
<%@ page contentType="text/html;charset=GBK"%> <%@ page import = "org.jfree.chart.ChartFactory,org.jfree.chart.JFreeChart, org.jfree.chart.servlet.ServletUtilities,org.jfree.chart.title.TextTitle,java.awt.Font, org.jfree.data.time.TimeSeries,org.jfree.data.time.Month,org.jfree.data.time.TimeSeriesCollection"%> <% //时间曲线数据集合 TimeSeriesCollection lineDataset = new TimeSeriesCollection(); //访问量统计时间线 TimeSeries timeSeriesA = new TimeSeries("甲网站访问量统计", Month.class); TimeSeries timeSeriesB = new TimeSeries("乙网站访问量统计", Month.class); //构造数据集合 timeSeriesA.add(new Month(1, 2010), 3200); timeSeriesA.add(new Month(2, 2010), 3900); timeSeriesA.add(new Month(3, 2010), 6200); timeSeriesA.add(new Month(4, 2010), 4200); timeSeriesA.add(new Month(5, 2010), 5200); timeSeriesA.add(new Month(6, 2010), 3300); timeSeriesA.add(new Month(7, 2010), 4400); timeSeriesA.add(new Month(8, 2010), 7300); timeSeriesA.add(new Month(9, 2010), 2400); timeSeriesA.add(new Month(10, 2010), 2500); timeSeriesA.add(new Month(11, 2010), 3600); timeSeriesA.add(new Month(12, 2010), 2500); timeSeriesB.add(new Month(1, 2010), 1120); timeSeriesB.add(new Month(2, 2010), 900); timeSeriesB.add(new Month(3, 2010), 600); timeSeriesB.add(new Month(4, 2010), 820); timeSeriesB.add(new Month(5, 2010), 800); timeSeriesB.add(new Month(6, 2010), 1200); timeSeriesB.add(new Month(7, 2010), 1200); timeSeriesB.add(new Month(8, 2010), 830); timeSeriesB.add(new Month(9, 2010), 1200); timeSeriesB.add(new Month(10, 2010), 1500); timeSeriesB.add(new Month(11, 2010), 1600); timeSeriesB.add(new Month(12, 2010), 1500); lineDataset.addSeries(timeSeriesA); lineDataset.addSeries(timeSeriesB); JFreeChart chart = ChartFactory.createTimeSeriesChart("访问量统计时间线", "月份", "访问量", lineDataset, true, true, true); //设置主标题 TextTitle title = new TextTitle("某网站年访问量统计", new Font("隶书", Font.ITALIC, 15)); chart.setTitle(title); //设置子标题 TextTitle subtitle = new TextTitle("2010年度", new Font("黑体", Font.BOLD, 12)); chart.addSubtitle(subtitle); chart.setAntiAlias(true); String filename = ServletUtilities.saveChartAsPNG(chart, 500, 300, null, session); String graphURL = request.getContextPath() + "/DisplayChart?filename=" + filename; %> <img src="<%= graphURL %>" width=500 height=300 border=0 >
运行后的曲线效果如下图所示:
这个图呢就比较简单。没有那么多的参数修饰。
- 大小: 17.9 KB
- 大小: 15.6 KB
分享到:
相关推荐
Java JFreeChart 是一个强大的开源库,用于在Java应用程序或Web应用中生成高质量的图形报表。JFreeChart 支持多种图表类型,包括饼图、条形图和曲线图,这些图表在数据可视化中有着广泛的应用。在Java开发中,...
在Java编程领域,JFreeChart是一个非常流行的图表库,它允许开发者创建各种复杂的数据可视化图形,包括折线图、柱状图、饼图等。在本篇博客中,"JfreeChart画双Y轴折线图"的主题,将探讨如何使用JFreeChart库来创建...
在这个压缩包中,包含的"JFreeChart"文件很可能是项目源代码或者示例程序,旨在展示JFreeChart库的常用图形报表。 1. **柱状图(Bar Chart)** 柱状图是表示分类数据的一种常见方式,JFreeChart可以创建单列、双列...
JFreeChart是一款强大的Java图表库,它为开发者提供了丰富的图形绘制功能,包括曲线图、饼图和柱状图等。这个库是免费的,适用于各种项目,无论是商业应用还是个人学习,都能从中受益。在本篇文章中,我们将深入探讨...
Java生成图形报表组件是一种强大的工具,它主要用于在Java应用程序中创建和展示各种类型的图表,如曲线图、饼状图、柱状图以及时序图。这个组件通常包含一系列的类和方法,允许开发者通过编程方式定义数据源、样式和...
JFreeChart是一个强大的Java库,专用于创建高质量的图表,包括柱状图、饼图和曲线图等。它在Java应用程序和Web应用中尤其受到欢迎,特别是在JSP(JavaServer Pages)环境中,能够显著提升报表的可视化效果,提供更...
此外,JFreeChart还支持曲线图、区域图等多种变形的折线图,为数据分析提供了丰富的表现形式。 除了基本的图表类型,JFreeChart还支持创建复杂的组合图,将不同类型的图表组合在一起,以更全面地展示数据。例如,...
这个库广泛应用于各种应用程序,包括报表、数据分析、以及Web应用等,它支持多种图表类型,如曲线图、饼图、柱状图等。在"jfreechart曲线图表操作样例"中,我们可以深入理解如何利用 JFreeChart 来创建和定制这些...
在Java图形报表设计中,JFreeChart扮演着核心角色。它可以与像JasperReport这样的报表工具结合使用,生成包含图表的复杂报表。JasperReport是一个开源的报表引擎,它允许设计人员使用Ireport等工具创建报表模板,...
- 曲线图和面积图 - 散点图和气泡图 - 时序图(高/低/开/收盘图和蜡烛图) - 复合图 - 排列图(Pareto charts) - 甘特图(Gantt charts) **JFreeChart的关键类** - **JFreeChart**:图表对象,所有类型的图表最终...
它在IT行业中被广泛应用于数据分析、报表制作以及Web应用中,为开发者提供了一种简单且灵活的方式来生成高质量的图形。 在描述中提到的"中文文档"和"jar包",意味着这个压缩包包含JFreeChart的中文说明文档和实际的...
柱状图、饼图、曲线图、甘特图等。它能够用在Swing和Web等中制作自定义的图表或报表,并且得 到广泛的应用。 JFreeChart 是JFreeChart公司在开源网站SourceForge.net上的一个项目,该公司的主要产品有如 下: 1...
3. **线图(Line Chart)**:线图适合展示数据随时间的变化趋势,JFreeChart支持折线图和曲线图,可以用于监测和分析周期性数据。 4. **区域图(Area Chart)**:区域图在折线图的基础上填充了线条下的区域,强调...
JFreeChart是一个强大的Java图形库,它提供了丰富的图表类型,包括曲线图、柱状图、饼图等,适用于多种场景,如桌面应用、Applet、Servlet和JSP。JFreeChart项目在SourceForge.net上开源,同时也提供了商业支持。其...
- **应用场景**: 它支持多种图表类型,如柱状图、饼图、曲线图、甘特图等,适用于Swing和Web应用程序中。 #### 二、JFreeChart产品家族 - **JFreeReport**: 报表解决方案工具,用于生成复杂报表。 - **JFreeChart**...
JFreeChart 是一个用于 Java 的图表生成库,它可以生成各种类型的图表,如曲线图、柱状图、饼图等。在报表设计中,JFreeChart 可以用来创建图形化的数据表现,增加报表的可读性和视觉吸引力。通过 JFreeChart,...
- **对于Web开发**:以Tomcat中的一个Web项目为例,将这些文件复制到项目的`WEB-INF\lib`目录下,并在`web.xml`文件中注册相应的Servlet。 #### 四、JFreeChart功能介绍 JFreeChart支持以下主要功能: - **饼图*...
JFreeChart是一款强大的Java图形库,它为开发者提供了丰富的图表绘制功能,涵盖了多种类型的图表,如饼图、曲线图、折线图、柱状图、时序图、点图等,满足了各种数据分析和可视化需求。这个开源项目是SourceForge...