- 浏览: 69897 次
- 性别:
- 来自: 深圳
最新评论
-
无与伦比12580:
感谢lz分享,问题真的就这样解决了
OpenSessionInViewFilter失效问题解决(SSH2) -
200313056:
200313056 写道重庆的排序 就对啊 这个有特殊意 ...
[转] JS 排序(包括按中文拼音排序) Google到的好东西,收藏! -
200313056:
重庆的排序 就对啊 这个有特殊意义啊 哈哈 城 ...
[转] JS 排序(包括按中文拼音排序) Google到的好东西,收藏! -
tiyi:
WorkingHard?! 写道
为什么需要调整顺序呢?
顺 ...
OpenSessionInViewFilter失效问题解决(SSH2) -
WorkingHard?!:
为什么需要调整顺序呢?
OpenSessionInViewFilter失效问题解决(SSH2)
首先几个核心API要熟悉
JFreeChart 图表对象
XXXXDataset 数据集
XXXXPlot 图表区域对象,即具体的什么类型的图表,柱状,饼状等
XXXXAxis X轴,Y轴对象
XXXXRenderer 负责如何显示图表对象
XXXXURLGenerator
XXXXToolTipGenerator
一般的实现步骤:
1.根据所要画的图,准备对应的数据集.
2.准备Plot,确定所要画的图的种类(如柱状,饼状等)
3.准备Axis,包括X,Y轴所表示的内容.
4.准备Renderer,确定如何显示图表对象
5.创建JFreeChart,把上面准备的相应参数传入.
6.保存图片到本地或传至WEB
java 代码
- package test;
- import java.awt.BasicStroke;
- import java.awt.Color;
- import java.awt.Font;
- import java.io.FileOutputStream;
- import java.io.IOException;
- import java.text.DecimalFormat;
- import java.text.SimpleDateFormat;
- import java.util.TimeZone;
- import org.jfree.data.KeyToGroupMap;
- import org.jfree.data.category.CategoryDataset;
- import org.jfree.data.category.DefaultCategoryDataset;
- import org.jfree.data.general.DefaultPieDataset;
- import org.jfree.data.time.Month;
- import org.jfree.data.time.TimeTableXYDataset;
- import org.jfree.data.xy.XYDataset;
- import org.jfree.ui.RectangleInsets;
- import org.jfree.ui.TextAnchor;
- import org.jfree.chart.*;
- import org.jfree.chart.axis.CategoryAnchor;
- import org.jfree.chart.axis.CategoryAxis;
- import org.jfree.chart.axis.NumberAxis;
- import org.jfree.chart.axis.PeriodAxis;
- import org.jfree.chart.axis.PeriodAxisLabelInfo;
- import org.jfree.chart.axis.ValueAxis;
- import org.jfree.chart.labels.ItemLabelAnchor;
- import org.jfree.chart.labels.ItemLabelPosition;
- import org.jfree.chart.labels.StandardCategoryItemLabelGenerator;
- import org.jfree.chart.labels.StandardCategoryToolTipGenerator;
- import org.jfree.chart.labels.StandardXYItemLabelGenerator;
- import org.jfree.chart.labels.StandardXYToolTipGenerator;
- import org.jfree.chart.plot.*;
- import org.jfree.chart.renderer.category.CategoryItemRenderer;
- import org.jfree.chart.renderer.category.GroupedStackedBarRenderer;
- import org.jfree.chart.renderer.category.LineAndShapeRenderer;
- import org.jfree.chart.renderer.xy.StackedXYBarRenderer;
- import org.jfree.chart.renderer.xy.XYStepRenderer;
- public class ChartDemo {
- public static void main(String[] args)
- {
- ChartDemo chartD = new ChartDemo();
- chartD.createBarDemo("bar.jpg");
- chartD.createPieDemo("pie.jpg");
- chartD.createXYBarDemo("xybar.jpg");
- }
- //创建柱状图
- public void createBarDemo(String jpgname)
- {
- CategoryDataset dataset = getBarDataset();
- JFreeChart chart = ChartFactory.createStackedBarChart("月统计报表", "统计月份", "数据", dataset, PlotOrientation.VERTICAL, true, true, false);
- //创建Renderer
- GroupedStackedBarRenderer groupedstackedbarrenderer = new GroupedStackedBarRenderer();
- //创建若干组,以便可分柱状,和叠方图
- KeyToGroupMap keytogroupmap = new KeyToGroupMap("G1");
- //目标为一组,实际,未完为另一组
- keytogroupmap.mapKeyToGroup("计划", "G1");
- keytogroupmap.mapKeyToGroup("实际", "G2");
- keytogroupmap.mapKeyToGroup("未完", "G2");
- //设置组
- groupedstackedbarrenderer.setSeriesToGroupMap(keytogroupmap);
- //显示数值
- groupedstackedbarrenderer.setBaseItemLabelGenerator(new StandardCategoryItemLabelGenerator());
- //可见?
- groupedstackedbarrenderer.setBaseItemLabelsVisible(true);
- //显示位置
- groupedstackedbarrenderer.setPositiveItemLabelPositionFallback(new ItemLabelPosition(ItemLabelAnchor.CENTER, TextAnchor.BOTTOM_CENTER));
- groupedstackedbarrenderer.setItemMargin(0.05000000000000001D);
- //设置显示颜色
- groupedstackedbarrenderer.setSeriesPaint(0, new Color(255, 137, 255)); // 粉红
- groupedstackedbarrenderer.setSeriesPaint(1, new Color(0, 11, 220));// BLUE
- groupedstackedbarrenderer.setSeriesPaint(2, new Color(0, 148, 52));// 绿色
- CategoryPlot categoryplot = (CategoryPlot)chart.getPlot();
- categoryplot.setDomainGridlinePosition(CategoryAnchor.MIDDLE);
- //横网格线
- categoryplot.setRangeGridlinesVisible(true);
- //竖风格线
- categoryplot.setDomainGridlinesVisible(false);
- //横轴
- CategoryAxis domainAxis=categoryplot.getDomainAxis();
- //间隔
- domainAxis.setCategoryMargin(0.2);
- //竖轴
- //ValueAxis valueaxis = categoryplot.getRangeAxis();
- //设置数值显示范围
- //valueaxis.setRange(0.0D, 30000D);
- categoryplot.setRenderer(groupedstackedbarrenderer);
- categoryplot.setDatasetRenderingOrder(DatasetRenderingOrder.FORWARD);
- categoryplot.setDataset(1, dataset);
- categoryplot.mapDatasetToRangeAxis(1, 1);
- //categoryplot.mapDatasetToRangeAxis(1, 2);
- NumberAxis numberaxis = new NumberAxis("费用");
- //numberaxis.setRange(0,90000);
- //设置右边的Y轴
- categoryplot.setRangeAxis(1, numberaxis);
- LineAndShapeRenderer lineandshaperenderer = new LineAndShapeRenderer();
- lineandshaperenderer.setBaseToolTipGenerator(new StandardCategoryToolTipGenerator());
- lineandshaperenderer.setSeriesPaint(0, new Color(255, 137, 255)); // 粉红
- lineandshaperenderer.setSeriesPaint(1, new Color(0,11,220)); // 蓝色
- categoryplot.setRenderer(1, lineandshaperenderer);
- categoryplot.setDatasetRenderingOrder(DatasetRenderingOrder.FORWARD);
- this.savejpg(chart, jpgname);
- }
- //获取柱状图数据
- private CategoryDataset getBarDataset()
- {
- DefaultCategoryDataset dataset = new DefaultCategoryDataset();
- String plan="计划";
- String actual="实际";
- String leave = "未完";
- dataset.addValue(2000, plan, "一月");
- dataset.addValue(500, actual, "一月");
- dataset.addValue(1500, leave, "一月");
- dataset.addValue(2000, plan, "二月");
- dataset.addValue(500, actual, "二月");
- dataset.addValue(1500, leave, "二月");
- dataset.addValue(5000, plan, "三月");
- dataset.addValue(3200, actual, "三月");
- dataset.addValue(1800, leave, "三月");
- return dataset;
- }
- //创建XYBar
- public void createXYBarDemo(String jpgname)
- {
- TimeTableXYDataset dataset = this.getXYDataset();
- //设置X坐标轴
- PeriodAxis periodaxis = new PeriodAxis("时间");
- periodaxis.setTimeZone(TimeZone.getTimeZone("Pacific/Auckland"));
- periodaxis.setAutoRangeTimePeriodClass(org.jfree.data.time.Month.class);
- periodaxis.setMajorTickTimePeriodClass(org.jfree.data.time.Month.class);
- PeriodAxisLabelInfo aperiodaxislabelinfo[] = new PeriodAxisLabelInfo[2];
- aperiodaxislabelinfo[0] = new PeriodAxisLabelInfo(org.jfree.data.time.Month.class,
- new SimpleDateFormat("MMM"),
- new RectangleInsets(2D, 2D, 2D, 2D),
- new Font("SansSerif", 1, 10),
- Color.BLACK, false, new BasicStroke(0.0F), Color.lightGray);
- aperiodaxislabelinfo[1] = new PeriodAxisLabelInfo(org.jfree.data.time.Year.class, new SimpleDateFormat("yyyy"));
- periodaxis.setLabelInfo(aperiodaxislabelinfo);
- periodaxis.setLowerMargin(0.01D);
- periodaxis.setUpperMargin(0.01D);
- //设置Y坐标轴
- NumberAxis numberaxis = new NumberAxis("登入次数");
- numberaxis.setStandardTickUnits(NumberAxis.createIntegerTickUnits());
- numberaxis.setUpperMargin(0.10000000000000001D);
- numberaxis.setRange(0,20000);
- //设置Renderer
- StackedXYBarRenderer stackedxybarrenderer = new StackedXYBarRenderer(0.14999999999999999D);
- stackedxybarrenderer.setDrawBarOutline(true);
- stackedxybarrenderer.setBaseItemLabelsVisible(false);
- stackedxybarrenderer.setBaseItemLabelGenerator(new StandardXYItemLabelGenerator());
- stackedxybarrenderer.setBasePositiveItemLabelPosition(new ItemLabelPosition(ItemLabelAnchor.OUTSIDE12, TextAnchor.BOTTOM_CENTER));
- stackedxybarrenderer.setBaseToolTipGenerator(new StandardXYToolTipGenerator("{0} : {1} = {2}", new SimpleDateFormat("yyyy"), new DecimalFormat("0")));
- stackedxybarrenderer.setMargin(0.2);
- stackedxybarrenderer.setSeriesPaint(0, new Color(0,11,220));
- stackedxybarrenderer.setSeriesPaint(1, new Color(51,129,50));
- stackedxybarrenderer.setSeriesPaint(2, new Color(255,0,0));
- XYPlot plot = new XYPlot(dataset,periodaxis,numberaxis,stackedxybarrenderer);//数据集,X轴,Y轴,renderer
- plot.setRangeGridlinesVisible(true);
- plot.setDomainGridlinesVisible(false);
- JFreeChart chart = new JFreeChart("工作量统计",plot);
- XYPlot xyplot1=(XYPlot)chart.getPlot();
- XYStepRenderer xysteprenderer1 = new XYStepRenderer();
- xysteprenderer1.setBaseShapesVisible(true);
- xysteprenderer1.setSeriesStroke(0, new BasicStroke(1F));
- xysteprenderer1.setSeriesPaint(0, new Color(255,0,0));
- //xysteprenderer1.setBaseToolTipGenerator(new StandardXYToolTipGenerator());
- //xysteprenderer1.setDefaultEntityRadius(6);
- xyplot1.setDataset(1, getXYDatasetLevel1());
- xyplot1.setRenderer(1,xysteprenderer1);
- XYStepRenderer xysteprenderer2 = new XYStepRenderer();
- xysteprenderer2.setBaseShapesVisible(true);
- xysteprenderer2.setSeriesStroke(0, new BasicStroke(2.0F));
- xysteprenderer2.setSeriesPaint(0, Color.yellow);
- xyplot1.setDataset(2, getXYDatasetLevel2());
- xyplot1.setRenderer(2,xysteprenderer2);
- this.savejpg(chart, jpgname);
- }
- private TimeTableXYDataset getXYDataset()
- {
- TimeTableXYDataset dataset = new TimeTableXYDataset();
- dataset.add(new Month(1,2005), 8000, "已完");
- dataset.add(new Month(1,2005), 2000, "未完");
- dataset.add(new Month(2,2005), 8000, "未完");
- return dataset;
- }
- private XYDataset getXYDatasetLevel1()
- {
- TimeTableXYDataset ttd1 = new TimeTableXYDataset();// 目标
- ttd1.add(new Month(1,2005), 8000, "目标");
- ttd1.add(new Month(2,2005), 9000, "目标");
- ttd1.add(new Month(3,2005), 10000, "目标");
- return ttd1;
- }
- private XYDataset getXYDatasetLevel2()
- {
- TimeTableXYDataset ttd2 = new TimeTableXYDataset();// 分布
- ttd2.add(new Month(1,2005), 2000, "分布");
- ttd2.add(new Month(2,2005), 2000, "分布");
- return ttd2;
- }
- //创建饼图
- public void createPieDemo(String jpgname)
- {
- DefaultPieDataset dataset = getPieDataset();
- JFreeChart chart = ChartFactory.createPieChart3D("水果产量", dataset, true, true, true);
- this.savejpg(chart, jpgname);
- }
- //获取饼图数据
- private DefaultPieDataset getPieDataset() {
- DefaultPieDataset dataset = new DefaultPieDataset();
- dataset.setValue("苹果", 100);
- dataset.setValue("梨子", 200);
- dataset.setValue("葡萄", 300);
- dataset.setValue("荔枝", 400);
- dataset.setValue("香蕉", 500);
- dataset.setValue("枣子", 600);
- return dataset;
- }
- //保存为本地图片
- private void savejpg(JFreeChart chart,String jpgname)
- {
- FileOutputStream jpg = null;
- try {
- jpg = new FileOutputStream(jpgname);
- ChartUtilities.writeChartAsJPEG(jpg,0.5f,chart,800,500,null);
- } catch (Exception e) {
- // TODO 自动生成 catch 块
- e.printStackTrace();
- }
- finally
- {
- try {
- jpg.close();
- } catch (IOException e) {
- // TODO 自动生成 catch 块
- e.printStackTrace();
- }
- }
- }
- }
- JFreeChart学习笔记.rar (340.7 KB)
- 下载次数: 190
发表评论
-
Struts2为空时报错的问题
2009-11-30 15:31 0我也遇到一样的问题了,找到很多地方也没有解决办法。后来我把og ... -
Oracle 自动编号
2009-11-30 14:21 0ORACLE的编号和SQL SERVER的不同。SQL SER ... -
Oracle Sequence
2009-11-30 14:01 01、Create Sequence 你首先要有CREATE S ... -
jqueryAjax
2009-11-30 12:48 0// 提供大数据量 POSTfunction ajaxSubm ... -
jdbcTemplate 用法
2009-11-30 11:37 2722ApplicationContext.xml: < ... -
pbfcpbfc
2009-11-30 10:10 0pbfcpbfc -
pppppp
2009-09-18 14:05 0s -
日历Demo
2009-07-24 18:01 0df -
demo
2009-07-17 18:05 0safsdf -
saf
2009-05-20 16:53 0saf -
mulSel
2009-05-14 17:36 0mulSel -
vb 硬盘序列号
2008-12-13 17:24 0sdfsfsdfsdf -
OpenSessionInViewFilter失效问题解决(SSH2)
2008-04-06 23:52 2581今天在用Hibernate延迟加 ... -
SpringSide 学习
2007-11-17 22:14 2503好东西,收藏之,慢慢学! http://www.springs ... -
利用POI实现简单的Excel读写操作
2007-11-07 18:19 1911利用POI实现简单的Excel读写操作 java 代码 ... -
用JFreeChart实现简单的柱状图和饼状图
2007-11-05 15:22 2543用JFreeChart实现简单的柱 ... -
接触AppFuse!
2007-10-24 17:36 1143Java开源就是个天堂! 今天又碰到一个对于我自己来说,一个全 ... -
Spring是什么?
2007-10-24 15:25 2769简单的说,Spring是 ... -
今天听到除JUnit外的另一个单元测试工具DBUnit,记录之
2007-10-22 09:53 1309今天又听到一个单元测试工具DBUnit,记录之。 据说DBUn ...
相关推荐
在本篇“JFreeChart学习笔记3-简单Line图形创建”中,我们将深入探讨如何使用JFreeChart库在Java环境中创建基本的线性图表。JFreeChart是一个强大的、开源的Java图表库,它允许开发者轻松地生成各种类型的图表,包括...
**JFreeChart学习笔记1 - 简单Pie图创建** 在Java开发中,我们经常需要展示数据,而饼图(Pie Chart)是一种常见的数据可视化工具,尤其适用于展示各项比例关系。JFreeChart是一个强大的开源Java图表库,它提供了...
### JfreeChart 学习笔记:深度解析与应用 #### JFreeChart概览与核心功能 JFreeChart作为一款开源的JAVA项目,专为图表开发而设计,支持丰富的图表类型,包括饼图、柱状图(含普通及堆栈柱状图)、线图、散点图、...
《JFreeChart学习详解》 JFreeChart是一个强大的Java库,用于生成高质量的图表,包括折线图、柱状图、饼图、散点图等多种类型。它在各种应用程序中广泛应用,尤其适合于Web应用程序中数据可视化的实现。本文将通过...
通过学习本文,你将能够利用JFreeChart轻松地生成美观的数据可视化图形。 首先,我们从`BarChart.java`开始。这个文件通常会包含创建2D条形图的基本步骤。以下是一些关键点: 1. 引入必要的库:确保引入了...
在本学习笔记中,我们将深入探讨如何使用 JFreeChart 来构建这些图表,特别是混合图和动态时序图。 首先,构建一个 JFreeChart 图表的基本步骤涉及以下三个主要部分: 1. **创建面板容器**:通常,我们可以继承 `...
首先,我们从 `jfreechart学习笔记.doc` 入手,这份文档应该包含了关于 JFreeChart 的基础知识和关键API的详细解释。通常,它会涵盖如何创建图表对象、设置图表类型、添加数据、定制图表样式等内容。例如,你可能会...
JfreeChart则是一个强大的Java图表库,能够帮助开发者创建各种类型的图表,如饼图、柱状图、线图等,广泛应用于数据分析和展示。 在Struts框架中扩展JfreeChart,主要是为了在Web应用中生成动态的、交互式的图表,...
**JFreeChart 深度解析** JFreeChart 是一个流行的 Java 图表库,它提供了丰富的图表类型,如柱状图、...通过学习和实践,你可以利用 JFreeChart 实现各种复杂的图表需求,提升你的 Java 应用程序的数据可视化能力。
开发文档中的个人学习笔记和心得,通常会包含作者在实践过程中遇到的问题、解决方案和最佳实践,对于初学者来说是非常宝贵的参考资料。通过阅读这些笔记,可以更快地掌握JFreeChart的使用技巧。 9. **社区支持** ...
在本学习笔记中,我们将深入探讨Struts的核心特性、国际化、类型转换以及JFreeChart的使用。 一、Struts框架基础 Struts 1是一个经典的Web MVC框架,它为开发者提供了强大的请求处理、页面导航、业务逻辑组织等功能...
最后,`jfreechart的使用.wps`文档可能是作者整理的学习笔记,可能包含了一些实践中的技巧、问题解决方法和优化建议。这将是你深入学习JFreeChart的宝贵参考资料。 总结来说,这个资源包为学习和使用JFreeChart提供...
总之,"Java学习笔记"涵盖了从基础到进阶的众多Java主题,结合JFreeChart和iText这两个实用库,不仅提供了对Java编程语言的深入理解,还展示了其在数据可视化和文档生成方面的强大能力。对于任何希望提升Java技能的...
### iReport 4.5 学习笔记 #### 一、iReport介绍 ##### 1.1 概述 iReport是一款专为JasperReports设计的强大且直观的报表设计器,支持复杂的报表设计,包括图表、图像、子报表等多种元素。这款工具完全基于Java...
### Ajax技术概述与Java框架学习笔记 #### 一、Ajax技术简介 Ajax(Asynchronous JavaScript and XML)是一种在无需重新加载整个网页的情况下,能够更新部分网页的技术。它通过在后台与服务器进行少量数据交换,...
`笔记.txt` 文件可能包含了作者在开发过程中的一些笔记或教程,可能记录了如何配置和使用 `JFreeChartDemo` 的详细步骤。 通过运行 `JFreeChartDemo`,开发者可以了解如何使用 JFreeChart API 创建不同的图表,同时...