- 浏览: 116570 次
- 性别:
- 来自: 吉林
最新评论
-
stamina:
想请教一下这个系统的设计与实现:)
J2EE 0.4—加入批量CRUD功能、加入框架页面、加入struts-menu等 -
stamina:
你好,可以加你的msn么?
springadele@hotm ...
J2EE 0.4—加入批量CRUD功能、加入框架页面、加入struts-menu等 -
dovecat:
准备全部等高清,下着看.
以前读书条件不允许,只好下载,
现在 ...
2007年最值得期待的40部北美大片(争取去电影院看50%) -
swflora:
争取去电影院看20%,也就是8部,半价场的,35-50元一场。 ...
2007年最值得期待的40部北美大片(争取去电影院看50%) -
MyJavaRoad:
qingzi2534 写道MyJavaRoad 写道
是这样 ...
2007年最值得期待的40部北美大片(争取去电影院看50%)
用JFreeChart画统计分析柱状图(成功版)
用JFreeChart画统计分析柱状图(成功版) |
[ 2006-6-19 17:38:00 | By: blueroc ]
|
JFreeChart API http://www.jfree.org/jfreechart/javadoc/ 及 成功运行的例子(直接在jsp中显示chart) org.jfree.chart org.jfree.chart.annotations org.jfree.chart.axis org.jfree.chart.entity org.jfree.chart.event org.jfree.chart.imagemap org.jfree.chart.labels org.jfree.chart.needle org.jfree.chart.plot org.jfree.chart.renderer org.jfree.chart.servlet org.jfree.chart.title org.jfree.chart.ui org.jfree.chart.urls org.jfree.data org.jfree.data.statistics org.jfree.data.time org.jfree.data.xml
我们介绍使用 JFreeChart 生成柱状图,首先从一个最简单的例子开始。
上面的程序简单,但生成的柱状图也很简单。更多的时候,我们可能需要不同的效果。org.jfree.chart.ChartFactory 这个工厂类有createBarChart,createStackedBarChart,createBarChart3D,createStackedBarChart3D这几个工厂方法创建不同类型的柱状图。关于这四个方法的 JFreeChart 的 Java Doc API 文档有详细说明,比较重要的是 PlotOrientation.VERTICAL 让平行柱垂直显示,而 PlotOrientation.HORIZONTAL 则让平行柱水平显示。 几个对柱状图影响较大的几个类,它们分别是: org.jfree.chart.axis.CategoryAxis org.jfree.chart.axis.ValueAxis org.jfree.chart.renderer.BarRenderer org.jfree.chart.renderer.BarRenderer3D 我们还是以实例来说明这几个类,先来假设一个需要统计的数据表: 根据上表数据,首先构造 CategoryDataset, 这里不再使用上面简单例子里面的 DefaultCategoryDataset 类,而是 DatasetUtilities 更有效的构造 CategoryDataset,如下列代码: double[][] data = new double[][] {{672, 766, 223, 540, 126}, {325, 521, 210, 340, 106}, {332, 256, 523, 240, 526} }; String[] rowKeys = {"苹果","梨子","葡萄"}; String[] columnKeys = {"北京","上海","广州","成都","深圳"}; CategoryDataset dataset = DatasetUtilities.createCategoryDataset(rowKeys, columnKeys, data); 用上面的 dataset 生成的 3D 柱状图
CategoryAxis domainAxis = plot.getDomainAxis(); //设置 columnKey 是否垂直显示 domainAxis.setVerticalCategoryLabels(true); //设置距离图片左端距离 domainAxis.setLowerMargin(0.1); //设置距离图片右端距离 domainAxis.setUpperMargin(0.1); //设置 columnKey 是否间隔显示 domainAxis.setSkipCategoryLabelsToFit(true); plot.setDomainAxis(domainAxis); 上面代码产生的效果如下图,注意与图二的区别。
ValueAxis rangeAxis = plot.getRangeAxis(); //设置最高的一个柱与图片顶端的距离 rangeAxis.setUpperMargin(0.15); //设置最低的一个柱与图片底端的距离 //rangeAxis.setLowerMargin(0.15); plot.setRangeAxis(rangeAxis); 上面代码产生的效果如下图,注意与图二的区别。
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); 上面代码产生的效果如下图,注意与图二的区别。
补充两个有用的方法
补充 org.jfree.chart.plot.CategoryPlot 的两个方法,这两个方法对所有类型的图表都有作用,因为在前面没有介绍,这里补充一下。 //设置地区、销量的显示位置
plot.setDomainAxisLocation(AxisLocation.TOP_OR_RIGHT); plot.setRangeAxisLocation(AxisLocation.BOTTOM_OR_RIGHT); 上面代码产生的效果如下图,注意与图二的区别。
三 完整范例
前面都是一些代码片段,现在把这些片段组合成一个完整范例。 <DIV class=code> <%@ page contentType="image/jpeg;charset=GBK"%> <%@ page import="java.awt.Font"%> <%@ page import="java.awt.Color"%> <%@ page import="org.jfree.chart.ChartFactory"%> <%@ page import="org.jfree.chart.JFreeChart"%> <%@ page import="org.jfree.chart.plot.PlotOrientation"%> <%@ page import="org.jfree.chart.servlet.ServletUtilities"%> <%@ page import="org.jfree.data.general.DatasetUtilities"%> <%@ page import="org.jfree.data.DataUtilities"%> <%@ page import="org.jfree.chart.plot.CategoryPlot"%> <%@ page import="org.jfree.chart.axis.CategoryAxis"%> <%@ page import="org.jfree.chart.axis.ValueAxis"%> <%@ page import="org.jfree.chart.renderer.category.BarRenderer3D"%> <%@ page import="org.jfree.chart.labels.StandardCategoryItemLabelGenerator"%> <%@ page import="org.jfree.chart.axis.AxisLocation"%> <%@ page import="org.jfree.data.category.CategoryDataset"%> <% double[][] data = new double[][] { {672, 766, 223, 540, 126}, {325, 521, 210, 340, 106}, {332, 256, 523, 240, 526} }; String[] rowKeys = {"苹果","梨子","葡萄"}; String[] columnKeys = {"北京","上海","广州","成都","深圳"}; CategoryDataset dataset = DatasetUtilities.createCategoryDataset(rowKeys, columnKeys, data); JFreeChart chart = ChartFactory.createBarChart3D("水果销量图统计",null,null,dataset, PlotOrientation.VERTICAL,true,false,false); chart.setBackgroundPaint(Color.WHITE); CategoryPlot plot = chart.getCategoryPlot(); CategoryAxis domainAxis = plot.getDomainAxis(); domainAxis.setVisible(true); plot.setDomainAxis(domainAxis); ValueAxis rangeAxis = plot.getRangeAxis(); //设置最高的一个 Item 与图片顶端的距离 rangeAxis.setUpperMargin(0.15); //设置最低的一个 Item 与图片底端的距离 rangeAxis.setLowerMargin(0.15); plot.setRangeAxis(rangeAxis); BarRenderer3D renderer = new BarRenderer3D(); renderer.setBaseOutlinePaint(Color.BLACK); //设置 Wall 的颜色<BR> 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); //设置每个地区所包含的平行柱的之间距离 renderer.setItemMargin(0.1); //显示每个柱的数值,并修改该数值的字体属性<BR> renderer.setItemLabelGenerator(new StandardCategoryItemLabelGenerator()); renderer.setItemLabelsVisible(true); plot.setRenderer(renderer); //设置柱的透明度<BR> plot.setForegroundAlpha(0.6f); //设置地区、销量的显示位置<BR> plot.setDomainAxisLocation(AxisLocation.TOP_OR_RIGHT); plot.setRangeAxisLocation(AxisLocation.BOTTOM_OR_RIGHT); System.out.println("!!!!!!!!!"+chart); String filename = ServletUtilities.saveChartAsPNG(chart, 500, 300, null, session); String graphURL = request.getContextPath() + "/servlet/DisplayChart?filename=" + filename; System.out.println("!!!!!!!!!"+graphURL); %> <img src="<%= graphURL %>" width=500 height=300 border=0 usemap="#<%= filename %>">; </DIV> 不能正确运行,要在web.xml中配置:
<!--StartFragment-->
<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> 看看程序运行的结果吧:
三 总结我只介绍了少量的方法,更多的请参考 JFreeChart 的 Java Doc API 文档和 Sample Code 在Struts中用JFreeChart生成图表 1。action 处理: 2。页面 |
相关推荐
本文将详细介绍如何使用JFreeChart这一强大的Java图表库来绘制统计分析柱状图,并通过具体的示例来展示其基本用法及一些高级特性。 #### 二、基础概念介绍 JFreeChart是一款开源的Java图表库,支持多种类型的图表...
JFreeChart是一个流行的Java库,用于生成各种类型的图表,包括折线图、饼图和柱状图,甚至堆栈柱状图。这个压缩包中的"CreateChartServiceImpl.java"文件很可能包含了一个实现这些功能的服务类。 首先,我们要理解...
在Java编程环境中,JFreeChart库是一个强大的工具,用于创建各种复杂的图表,包括柱状图、折线图和雷达图。这些图表对于数据可视化和数据分析非常有用,可以帮助开发者直观地展示大量信息。以下是对给定文件中每个...
在商业智能和统计分析中,柱状图能够清晰地比较不同类别的数值,尤其适合于显示各类别之间的差异和整体趋势。 在 JFreeChart 中创建柱状图主要涉及以下步骤: 1. **创建 CategoryDataset**:这是柱状图的基础,...
除了饼图和柱状图,JFreeChart还支持线形图,这在时间序列分析中非常有用。线形图可以展示数据随时间的变化趋势,支持多系列数据,并可以设置线条样式、点样式以及轴的刻度和标签。 散点图是另一个重要的图表类型,...
JFreeChart的柱状图常用于商业报告、统计分析、科学实验结果展示等场景。例如,业务分析师可以利用它来展示销售数据,科学家可以用来可视化实验结果,教育者则可能用它来解释复杂的数据关系。 7. **与Web应用集成*...
你可以创建一个`CategoryDataset`对象,将数据组织成类别和值,然后使用`JFreeChart`的`createBarChart()`方法来生成柱状图。 饼图是另一种常用的数据表示形式,适合显示各部分占整体的比例。JFreeChart允许你创建...
**JFreeChart** 是一个强大的Java库,它提供了多种类型的图表,包括折线图、柱状图、饼图、散点图等,可用于创建高质量的静态和动态图形。在本项目中,JFreeChart被用来生成根据后台数据定制的统计图表,以便用户...
在Struts2框架中集成JFreeChart库,可以方便地创建各种图表,如饼状图、柱状图和折线图,为数据分析和可视化提供便利。 JFreeChart是一个开源的Java类库,用于生成高质量的统计和财务图表。它支持多种图表类型,...
JFreeChart是一款强大的Java图形库,它为开发者提供了创建各种类型图表的能力,包括柱状图、折线图、饼图等。在Java编程中,如果你需要在应用中展示数据,JFreeChart是一个理想的选择,因为它提供了丰富的定制选项,...
标题中提到的“jfreechart生成折线图、饼图、柱状图、堆栈柱状图”是指使用Java的一个开源图形库JFreeChart来创建不同类型的统计图表。JFreeChart是一个功能全面、成熟的Java图表库,广泛应用于各种应用程序中进行...
在数据挖掘中,数据分析的结果需要直观地展现给用户,这就需要使用数据统计图。Java 中可以使用 JFreeChart 库来实现各种数据统计图,如柱形图、饼图、折线图等。下面将详细介绍如何使用 JFreeChart 库实现数据统计...
JFreeChart是一款强大的Java图形库,它允许开发者创建各种类型的统计图表,如饼图、柱状图、线图、散点图等。在Java应用程序中,JFreeChart为数据可视化提供了丰富的功能,使得数据的展示更为直观易懂。在本教程中,...
本例子将详细介绍如何利用JFreeChart生成统计图,特别是柱状图和饼图。 首先,我们需要导入JFreeChart库。通常,这涉及到在项目中添加JFreeChart的jar包。在提供的压缩包中,`chartDemo`可能是包含示例代码的Java...
用JFreeChart画统计分析柱状图建站指南网页制作网页特效Flash动画网络编程素材下载教程下载建站服务HTML学习CSS学习JAVASCRIPT教程ASP技术PHP技术JSP技术ASP_NET技术数据库技术
在Java中,可以使用JFreeChart库来创建柱状图,它提供了丰富的定制选项,包括颜色、标签、图例等。 **饼状图**用于显示各部分占整体的比例。在饼状图中,数据被分割成扇形,每个扇形的大小代表了相应类别的比例。这...
**JFreeChart统计图资料详解** 在数据可视化领域,JFreeChart是一个强大的开源Java库,它为开发者提供了创建各种类型统计图的能力,如柱状图、饼图和曲线图等。JFreeChart自2001年发布以来,一直被广泛应用于商业...
JFreeChart是一个强大的Java库,能够创建多种类型的图表,包括折线图、柱状图、饼图、散点图等,非常适合用于报表和数据分析应用。在Spring框架中,我们可以利用其灵活的依赖注入和AOP(面向切面编程)特性,将图表...