- 浏览: 394809 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
iris_1992:
2005年以前,国外开原报表完全碾压国产软件,但是现在国内软件 ...
JasperReport报表设计总结(一)(已完毕) -
水土第一:
在flash显示jasperprintlist的时候,根据下面 ...
JasperReport报表设计总结(三)(已完毕) -
水土第一:
结构分的很清晰。。。加上applet与jasper的东西就更完 ...
JasperReport报表设计总结(三)(已完毕) -
水土第一:
windowshead 写道import cn.com.rea ...
JasperReport报表设计总结(二)(已完毕) -
zwj1533:
下载的附件服务解压!
JasperReport报表设计总结(一)(已完毕)
Jfreechart的最新版本,对于中文默认是不支持的,因为默认的font为英文的,所以需要单独设置。以前一直诟病于jfreechart的生成的图形颜色不好看,图片不清晰,现在新版本已经好了很多了,至于图形的颜色,可以自定义。
三种常见的图代码。
/** * copyRight vaalhaai.com */ package com.vaalhaai.framework.report.chart; import java.awt.Color; import java.awt.Font; import java.awt.FontFormatException; import java.io.IOException; import java.text.NumberFormat; import org.jfree.chart.ChartFactory; import org.jfree.chart.ChartFrame; import org.jfree.chart.JFreeChart; import org.jfree.chart.axis.CategoryAxis; import org.jfree.chart.axis.CategoryAxis3D; import org.jfree.chart.axis.NumberAxis; import org.jfree.chart.axis.NumberAxis3D; 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.StandardPieSectionLabelGenerator; import org.jfree.chart.plot.CategoryPlot; import org.jfree.chart.plot.PiePlot3D; import org.jfree.chart.plot.PlotOrientation; import org.jfree.chart.renderer.category.BarRenderer; import org.jfree.chart.renderer.category.LineAndShapeRenderer; import org.jfree.chart.title.LegendTitle; import org.jfree.chart.title.TextTitle; import org.jfree.data.category.DefaultCategoryDataset; import org.jfree.data.general.DefaultPieDataset; import org.jfree.ui.TextAnchor; /** * @author Jimmy.Shine 2010-5-9 * */ public class ChartTest { /** * @param args * @throws IOException * @throws FontFormatException */ public static void main(String[] args) throws FontFormatException, IOException { // pie3D(); // bar3D(); line(); } public static void pie3D(){ DefaultPieDataset dataset = new DefaultPieDataset(); dataset.setValue("中国电信", 30); dataset.setValue("中国移动", 60); dataset.setValue("中国联通", 10); dataset.setValue("固定电话", 40); dataset.setValue("其它", 20); JFreeChart chart = ChartFactory.createPieChart3D("通信分布饼图", dataset, true, true, false); TextTitle title = chart.getTitle(); title.setFont(new Font("黑体", Font.BOLD, 18)); LegendTitle legendTitle = chart.getLegend(); legendTitle.setItemFont(new Font("微软雅黑", Font.BOLD, 12)); PiePlot3D plot = (PiePlot3D) chart.getPlot(); plot.setLabelFont(new Font("微软雅黑", Font.PLAIN, 12)); plot.setLabelBackgroundPaint(new Color(255, 255, 255)); plot.setBackgroundPaint(new Color(255, 255, 255)); plot.setOutlineVisible(true); plot.setBackgroundAlpha(0.75F); plot.setForegroundAlpha(0.80F); plot.setStartAngle(90); //int r = 61, g = 89, b = 171; int r = 20, g = 20, b = 20; int rStep = 30; int gStep = 30; int bStep = 30; plot.setSectionPaint("中国电信", new Color(r, g, b)); r = (r + rStep > 255 ? r : r + rStep); g = (g + gStep > 255 ? g : g + gStep); b = (b + bStep > 255 ? b : b + bStep); plot.setSectionPaint("中国移动", new Color(r, g, b)); r = (r + rStep > 255 ? r : r + rStep); g = (g + gStep > 255 ? g : g + gStep); b = (b + bStep > 255 ? b : b + bStep); plot.setSectionPaint("中国联通", new Color(r, g, b)); r = (r + rStep > 255 ? r : r + rStep); g = (g + gStep > 255 ? g : g + gStep); b = (b + bStep > 255 ? b : b + bStep); plot.setSectionPaint("固定电话", new Color(r, g, b)); r = (r + rStep > 255 ? r : r + rStep); g = (g + gStep > 255 ? g : g + gStep); b = (b + bStep > 255 ? b : b + bStep); plot.setSectionPaint("其它", new Color(r, g, b)); plot.setDarkerSides(true); plot.setShadowPaint(new Color(0, 0, 255)); plot.setLabelGenerator(new StandardPieSectionLabelGenerator("{0}({2})")); plot.setLegendLabelGenerator(new StandardPieSectionLabelGenerator("{0}({1}/{3}={2})")); // plot.setExplodePercent("中国电信", 0.3F); // plot.setExplodePercent("中国移动", 0.3F); // plot.setExplodePercent("中国联通", 0.3F); // plot.setExplodePercent("固定电话", 0.3F); ChartFrame frame = new ChartFrame("通信 ", chart); frame.pack(); frame.setVisible(true); } public static void bar3D(){ DefaultCategoryDataset dataset = new DefaultCategoryDataset(); dataset.addValue(30, "移动通信", "中国电信"); dataset.addValue(60, "移动通信", "中国移动"); dataset.addValue(10, "移动通信", "中国联通"); dataset.addValue(40, "固定通信", "中国电信"); dataset.addValue(-10, "固定通信", "中国移动"); dataset.addValue(20, "固定通信", "中国联通"); JFreeChart chart = ChartFactory.createBarChart3D("通信分布柱状图", "类别", "值", dataset,PlotOrientation.VERTICAL, true, true, false); TextTitle title = chart.getTitle(); title.setFont(new Font("黑体", Font.BOLD, 18)); LegendTitle legendTitle = chart.getLegend(); legendTitle.setItemFont(new Font("微软雅黑", Font.BOLD, 12)); CategoryPlot plot = (CategoryPlot) chart.getPlot(); plot.setBackgroundPaint(new Color(255, 255, 255)); plot.setOutlineVisible(true); plot.setBackgroundAlpha(0.75F); plot.setForegroundAlpha(0.80F); plot.setRangeGridlinesVisible(true); plot.setRangeGridlinePaint(Color.GRAY); CategoryAxis3D xAxis = (CategoryAxis3D) plot.getDomainAxis(); xAxis.setLabelFont(new Font("微软雅黑", Font.PLAIN, 12)); xAxis.setTickLabelFont(new Font("微软雅黑", Font.PLAIN, 12)); ValueAxis yAxis = plot.getRangeAxis(); yAxis.setLabelFont(new Font("微软雅黑", Font.PLAIN, 12)); yAxis.setTickLabelFont(new Font("微软雅黑", Font.PLAIN, 12)); BarRenderer render = (BarRenderer) plot.getRenderer(); render.setBaseItemLabelFont(new Font("微软雅黑", Font.PLAIN, 12)); render.setBaseLegendTextFont(new Font("微软雅黑", Font.BOLD, 12)); render.setMaximumBarWidth(0.1F); render.setItemMargin(0.0F); render.setBaseItemLabelGenerator(new StandardCategoryItemLabelGenerator("{3}",NumberFormat.getInstance())); render.setBaseItemLabelsVisible(true); render.setItemLabelAnchorOffset(8); render.setBasePositiveItemLabelPosition(new ItemLabelPosition(ItemLabelAnchor.OUTSIDE12,TextAnchor.BASELINE_LEFT)); render.setBaseNegativeItemLabelPosition(new ItemLabelPosition(ItemLabelAnchor.OUTSIDE12,TextAnchor.BASELINE_LEFT)); /* ValueMarker marker = new ValueMarker(0.70, new Color(200, 200, 255), new BasicStroke(1.0f), new Color(200, 200, 255), new BasicStroke(1.0f), 1.0f); plot.addRangeMarker(marker); */ /* GradientPaint gp0 = new GradientPaint( 0.0f, 0.0f, Color.blue, 0.0f, 0.0f, new Color(0, 0, 64) ); GradientPaint gp1 = new GradientPaint( 0.0f, 0.0f, Color.green, 0.0f, 0.0f, new Color(0, 64, 0) ); GradientPaint gp2 = new GradientPaint( 0.0f, 0.0f, Color.red, 0.0f, 0.0f, new Color(64, 0, 0) ); render.setSeriesPaint(0, gp0); render.setSeriesPaint(1, gp1); render.setSeriesPaint(2, gp2); */ int r = 20, g = 20, b = 20; int rStep = 120; int gStep = 120; int bStep = 120; render.setSeriesPaint(0, new Color(r,g,b)); r = (r + rStep > 255 ? r : r + rStep); g = (g + gStep > 255 ? g : g + gStep); b = (b + bStep > 255 ? b : b + bStep); render.setSeriesPaint(1, new Color(r,g,b)); ChartFrame frame = new ChartFrame("通信 ", chart); frame.pack(); frame.setVisible(true); } public static void line(){ DefaultCategoryDataset dataset = new DefaultCategoryDataset(); dataset.addValue(30, "通信", "中国电信"); dataset.addValue(60, "通信", "中国移动"); dataset.addValue(10, "通信", "中国联通"); dataset.addValue(40, "通信", "中国电信固话"); dataset.addValue(10, "通信", "其它固话"); dataset.addValue(20, "通信", "中国联通固话"); dataset.addValue(30, "3G", "中国电信"); dataset.addValue(50, "3G", "中国移动"); dataset.addValue(20, "3G", "中国联通"); dataset.addValue(50, "3G", "中国电信固话"); dataset.addValue(30, "3G", "其它固话"); dataset.addValue(20, "3G", "中国联通固话"); JFreeChart chart = ChartFactory.createLineChart("通信分布线图", "类别", "值", dataset,PlotOrientation.VERTICAL, true, true, false); TextTitle title = chart.getTitle(); title.setFont(new Font("黑体", Font.BOLD, 18)); LegendTitle legendTitle = chart.getLegend(); legendTitle.setItemFont(new Font("微软雅黑", Font.BOLD, 12)); CategoryPlot plot = (CategoryPlot) chart.getPlot(); plot.setBackgroundPaint(new Color(255, 255, 255)); plot.setOutlineVisible(true); plot.setBackgroundAlpha(0.75F); plot.setForegroundAlpha(0.80F); plot.setRangeGridlinesVisible(true); plot.setRangeGridlinePaint(Color.GRAY); CategoryAxis xAxis = (CategoryAxis) plot.getDomainAxis(); xAxis.setLabelFont(new Font("微软雅黑", Font.PLAIN, 12)); xAxis.setTickLabelFont(new Font("微软雅黑", Font.PLAIN, 12)); NumberAxis yAxis = (NumberAxis)plot.getRangeAxis(); yAxis.setLabelFont(new Font("微软雅黑", Font.PLAIN, 12)); yAxis.setTickLabelFont(new Font("微软雅黑", Font.PLAIN, 12)); yAxis.setStandardTickUnits(NumberAxis3D.createIntegerTickUnits()); LineAndShapeRenderer render = (LineAndShapeRenderer) plot.getRenderer(); render.setBaseItemLabelFont(new Font("微软雅黑", Font.PLAIN, 12)); render.setBaseLegendTextFont(new Font("微软雅黑", Font.BOLD, 12)); render.setItemMargin(0.0F); render.setBaseItemLabelGenerator(new StandardCategoryItemLabelGenerator("{2}",NumberFormat.getInstance())); render.setBaseItemLabelsVisible(true); render.setBaseLinesVisible(true); render.setBaseSeriesVisibleInLegend(true); render.setBaseSeriesVisible(true); render.setBaseShapesVisible(true); render.setItemLabelAnchorOffset(2); render.setBasePositiveItemLabelPosition(new ItemLabelPosition(ItemLabelAnchor.OUTSIDE2,TextAnchor.BASELINE_LEFT)); render.setBaseNegativeItemLabelPosition(new ItemLabelPosition(ItemLabelAnchor.OUTSIDE2,TextAnchor.BASELINE_LEFT)); int r = 61, g = 89, b = 171; int rStep = 120; int gStep = 120; int bStep = 120; render.setSeriesPaint(0, new Color(r,g,b)); r = (r + rStep > 255 ? r : r + rStep); g = (g + gStep > 255 ? g : g + gStep); b = (b + bStep > 255 ? b : b + bStep); render.setSeriesPaint(1, new Color(r,g,b)); ChartFrame frame = new ChartFrame("通信 ", chart); frame.pack(); frame.setVisible(true); } }
效果见附件
发表评论
-
谨慎使用IDEA12的并行编译模式
2012-12-14 11:07 1212IDEA 12 提供了使用扩展工具进行并行编译的功能,但是请谨 ... -
JavaMail使用注意
2012-12-12 23:55 1002在使用JavaMail发送邮件时候,需要注意,如果在收件人中过 ... -
Take care of JPA MERGE
2012-12-12 23:52 1136在使用JPA的MERGE的时候要注意: 1、将多执行一次SE ... -
Tomcat SSL正确配置
2010-12-08 14:36 1480<Connector protocol=&quo ... -
近期看的书
2010-03-18 21:25 1211SONY PRS600。技术类的电子书一本一本的看,记录一下: ... -
开源的宿命
2009-08-11 21:06 1222Vmware收购了Spring,这绝对是一个令人震惊的消息,我 ... -
Java生成文件时的编码的问题
2009-01-05 08:40 9663最近在做RCP应用的时候,需要生成文件,而使用编码为UTF-8 ... -
Java EE架构调查
2008-11-04 21:23 1296近期准备升级技术框架。 准备升级为: JSF + Seam + ... -
框架升级兼新书推荐
2008-10-17 09:23 1391终于可以静下心来,做框架的研发了。经过无数次的努力,将项目做到 ... -
InstallAnywhere
2008-07-21 11:25 1587随着开发系统的加大,对 ... -
Portlet
2008-07-12 20:35 1606Portlet技术已经被广泛运用,转载此文目的在于大家一窥Po ... -
以SSL加强Tomcat的安全防护能力
2008-07-11 01:55 1407关于如何在TOMCAT中使用SSL的文档。 由于插入图片太 ... -
越来越无知了
2008-07-08 22:22 1365学习知识总有一个过程,大体上是这样。 感觉自己什么都不知道-- ... -
netBeans6.1与eclipse
2008-05-24 00:42 1773为了学习JavaFX,遵照于官方教程,下载了netBeans, ... -
详细讲解Java中log4j的使用方法
2008-01-07 16:37 16571、Log4j是什么? Log4j可以帮助调试(有时候de ... -
以不合适的方式在编程
2007-12-12 20:49 1160越来越喜欢组件化的开发了,可能是对于组件化开发的喜欢。 在Ja ... -
Log4j的使用以及在Spring中集成(转)
2007-12-09 09:27 4692log4j简介 简单的说log4j ... -
JBoss Tools--eclipse开发基于B/S模式下的必备插件
2007-11-27 13:32 4181JBoss是越来越强大了,一直有使用JBoss的,自从归属于R ... -
eclipse3.4到底改变了什么,陈桥五笔无法使用
2007-11-26 09:57 1938Eclipse发布了3.4M3,内置了许多有用的新功能,最直接 ... -
EJB的存根和骨架的工作原理(转)
2007-10-18 10:31 1760EJB工作原理学习笔记 1 RMI工作原理 2 websphe ...
相关推荐
JFreeChart生成柱形图完整测试代码 放在普通项目里运行main方法就能生成柱形图 不需要添加任何代码 可根据自己需要修改参数
**JFreeChart 测试代码详解** JFreeChart 是一个用于Java平台的开源图表库,它提供了丰富的图表类型,包括柱状图、饼图、线形图、散点图、甘特图等,常用于数据分析和可视化展示。这篇测试代码旨在演示JFreeChart库...
标题中的“jfreechart图表工程,可以导入测试”表明这是一个包含 JFreeChart 实例代码和测试的项目,可以帮助开发者了解如何在自己的项目中集成和使用 JFreeChart。 **1. JFreeChart 的基本概念** JFreeChart 支持...
JFreeChart是一款强大的Java图表库,它为开发者提供了一种简单的方式来创建各种复杂的统计图表,如折线图、柱状图、饼图等。这款开源库广泛应用于数据分析、报告生成和可视化应用中。源代码附带了详尽的中文注释,对...
在标题和描述中提到的"JfreeChart 1.0.10 demo 源代码"是一份包含了示例和测试代码的资源,对于学习和理解如何使用JFreeChart库来构建图表非常有帮助。 1. **JFreeChart基本结构**:JFreeChart的核心组件包括`...
"JFreeChartTest"这个文件可能是项目的测试类或者示例代码,它可能包含了如何在Struts 2环境中使用JFreeChart的示例,包括创建不同类型的图表以及返回图表图像流的逻辑。 总的来说,JFreeChart结合Struts 2可以...
本教程将详细讲解如何在Struts2框架中使用JFreeChart来显示图片。 首先,我们需要了解JFreeChart的基本用法。JFreeChart提供了丰富的API,可以方便地创建和定制图表。以下是一般步骤: 1. **创建图表对象**:例如...
测试代码的编写需要创建一个Java类,然后在该类中通过JFreeChart提供的API来生成一个图表,并将图表保存为图片文件。如果运行测试代码后,在D盘下成功生成了名为PieChart.jpg的图片文件,那么表明JFreeChart已经可以...
安装完成后,可以通过运行演示应用程序来测试 JFreeChart 是否正确安装。 **3.5 在 IDE 中配置 JFreeChart** 针对 Eclipse 和 NetBeans 提供了详细的配置步骤,帮助用户快速集成 JFreeChart。 **3.6 编译源代码**...
4. **TestJfreeChart.java**:这显然是一个测试文件,用于演示或验证jFreeChart库创建柱状图的代码。 5. **DataStatModel.java**:这可能是博主定义的数据模型类,用于存储和处理数据,这些数据将被用来创建柱状图。...
在"JFreeChartTest"这个文件中,我们可以期待找到一些测试代码或者完整的示例应用。这些代码可能包括创建不同类型的图表,设置图例、轴标签、数据源,以及如何将图表嵌入到Web应用中。在Java Web环境中,通常会使用...
JFreeChart是一款强大的Java图表库,它允许开发者创建多种类型的2D图表,包括折线图、柱状图、饼图、散点图等。在Java应用程序中,JFreeChart经常被用于数据分析和可视化,尤其在报表系统、数据分析工具或者任何需要...
通过以上介绍,我们可以看出,这个封装后的 JFreeChart 示例提供了一种高效的方式来创建和展示各种类型的图表,尤其是在 Java Web 开发场景下。通过测试 Servlet,开发者可以快速地在网页上预览图表效果,提高了开发...
JFreeChart是一组功能强大、灵活易用的Java绘图API,使用它可以生成多种通用性的报表,包括柱状图、饼图、曲线图、甘特图等。它能够用在Swing和Web等中制作自定义的图表或报表,并且得到广泛的应用。本文将通过引领...
JFreeChart是Java的一个强大的图形库,它提供了丰富的图表类型,包括线图、柱状图、饼图等,非常适合用于数据可视化。本项目结合Applet和JFreeChart,目的是实现在网页上动态展示曲线走势图。 首先,理解Applet的...
5. 测试代码:用于验证库的功能,也可以作为学习库如何工作的参考。 在实际应用中,JFreeChart可以与其他Java库如Swing或JavaFX结合,创建出交互式的桌面应用程序。此外,由于JFreeChart是纯Java实现,因此它也适用...
1. **依赖注入(Dependency Injection, DI)**:通过反转控制,使得对象之间的依赖关系不再硬编码,而是通过配置文件或注解来实现,提高了代码的可测试性和可维护性。 2. **面向切面编程(Aspect-Oriented ...
这个压缩包可能还包含了示例代码或者测试用例,帮助开发者了解如何实际操作和自定义图表。 值得注意的是,描述中提到了“开发文档是收费的”。这表明尽管基本的API文档和安装指南是免费提供的,但更详细的开发文档...