`
long_yu2
  • 浏览: 337619 次
社区版块
存档分类
最新评论

用JFreeChart 生成报表

阅读更多

JFreeChart是JAVA平台上的一个开放的图表绘制类库。它完全使用JAVA语言编写,是为applications, applets, servlets 以及JSP等使用所设计。JFreeChart可生成饼图(pie charts)、柱状图(bar charts)、散点图(scatter plots)、时序图(time series)、甘特图(Gantt charts)等等多种图表,并且可以产生PNG和JPEG格式的输出,还可以与PDF和EXCEL关联。

它所有的方法都是静态的,用起来很简便.

生成饼图:

package cn.zhangao.jfreechart;
 
import java.awt.Font;
import java.awt.Image;
import java.io.File;
 
import javax.imageio.ImageIO;
 
import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartUtilities;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.labels.StandardPieSectionLabelGenerator;
import org.jfree.chart.plot.PiePlot;
import org.jfree.data.general.DefaultPieDataset;
 
public class App {
    public static void main(String[] args) {
        try {
            //如果不使用Font,中文将显示不出来
            Font font = new Font("宋体", Font.BOLD, 15);
 
            DefaultPieDataset pds = new DefaultPieDataset();
            pds.setValue("sun", 100);
            pds.setValue("ibm", 300);
            pds.setValue("bea", 500);
            pds.setValue("oracle", 700);
            /**
             * 生成一个饼图的图表
             * 
             * 分别是:显示图表的标题、需要提供对应图表的DateSet对象、是否显示图例、是否生成贴士以及是否生成URL链接
             */
            JFreeChart chart = ChartFactory.createPieChart("标题", pds, true, false, true);
            //设置图片标题的字体
            chart.getTitle().setFont(font);
 
            //得到图块,准备设置标签的字体
            PiePlot plot = (PiePlot) chart.getPlot();
 
            //设置分裂效果,需要指定分裂出去的key
            plot.setExplodePercent("oracle", 0.3);
 
            //设置标签字体
            plot.setLabelFont(font);
 
            //设置图例项目字体
            chart.getLegend().setItemFont(font);
 
            /**
             * 设置开始角度(弧度计算)
             * 
             * 度    0°    30°        45°        60°        90°        120°    135°    150°    180°    270°    360°
             * 弧度    0    π/6        π/4        π/3        π/2        2π/3    3π/4    5π/6    π        3π/2    2π
             */
            plot.setStartAngle(new Float(3.14f / 2f));
 
            //设置背景图片,设置最大的背景
            Image img = ImageIO.read(new File("d:/sunset.jpg"));
            chart.setBackgroundImage(img);
 
            //设置plot的背景图片
            img = ImageIO.read(new File("d:/Water.jpg"));
            plot.setBackgroundImage(img);
 
            //设置plot的前景色透明度
            plot.setForegroundAlpha(0.7f);
 
            //设置plot的背景色透明度
            plot.setBackgroundAlpha(0.0f);
 
            //设置标签生成器(默认{0})
            //{0}:key {1}:value {2}:百分比 {3}:sum
            plot.setLabelGenerator(new StandardPieSectionLabelGenerator("{0}({1})/{2}"));
 
            //将内存中的图片写到本地硬盘
            ChartUtilities.saveChartAsJPEG(new File("d:/pie.jpg"), chart, 600, 300);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

效果:

image

还可以生成3D效果的图片,只需要轻松地修改几个调用的方法即可:

JFreeChart chart = ChartFactory.createPieChart3D("标题", pds, true, false, true);
PiePlot3D plot = (PiePlot3D) chart.getPlot();

其他地方都不用改.但是需要注意的是:3D不能使用分裂效果!

image

生成柱状图:

package cn.zhangao.jfreechart;
 
import java.awt.Font;
import java.io.File;
 
import javax.imageio.ImageIO;
 
import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartUtilities;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.plot.CategoryPlot;
import org.jfree.chart.plot.PlotOrientation;
import org.jfree.data.category.DefaultCategoryDataset;
 
public class AppBar {
    public static void main(String[] args) {
        try {
            //种类数据集
            DefaultCategoryDataset ds = new DefaultCategoryDataset();
 
            ds.setValue(100, "ibm", "第一季度");
            ds.setValue(200, "ibm", "第二季度");
            ds.setValue(600, "ibm", "第三季度");
 
            ds.setValue(500, "google", "第一季度");
            ds.setValue(333, "google", "第二季度");
            ds.setValue(780, "google", "第三季度");
 
            ds.setValue(600, "用友", "第一季度");
            ds.setValue(1500, "用友", "第二季度");
            ds.setValue(300, "用友", "第三季度");
 
            Font font = new Font("宋体", Font.BOLD, 20);
            //创建柱状图,柱状图分水平显示和垂直显示两种
            JFreeChart chart = ChartFactory.createBarChart("前三季度各大公司JEEAS市场销售情况", "季度", "销量(万台)", ds, PlotOrientation.VERTICAL, true, true, true);
 
            //设置整个图片的标题字体
            chart.getTitle().setFont(font);
 
            //设置提示条字体
            font = new Font("宋体", Font.BOLD, 15);
            chart.getLegend().setItemFont(font);
 
            //得到绘图区
            CategoryPlot plot = (CategoryPlot) chart.getPlot();
            //得到绘图区的域轴(横轴),设置标签的字体
            plot.getDomainAxis().setLabelFont(font);
 
            //设置横轴标签项字体
            plot.getDomainAxis().setTickLabelFont(font);
 
            //设置范围轴(纵轴)字体
            plot.getRangeAxis().setLabelFont(font);
            //存储成图片
 
            //设置chart的背景图片
            chart.setBackgroundImage(ImageIO.read(new File("d:/sunset.bmp")));
 
            plot.setBackgroundImage(ImageIO.read(new File("d:/Water.jpg")));
 
            plot.setForegroundAlpha(1.0f);
 
            ChartUtilities.saveChartAsJPEG(new File("d:/bar.jpg"), chart, 600, 400);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

平面2D效果:

image

柱状图默认的ForegroundAlpha属性值是0.5,半透明的.创建3D柱状图只需要使用createBarChart3D()这个方法即可:

image

生成拆线图:

package cn.zhangao.jfreechart;
 
import java.awt.Font;
import java.io.File;
 
import javax.imageio.ImageIO;
 
import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartUtilities;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.plot.CategoryPlot;
import org.jfree.chart.plot.PlotOrientation;
import org.jfree.data.category.DefaultCategoryDataset;
 
public class AppLine {
    public static void main(String[] args) {
        try {
            //种类数据集
            DefaultCategoryDataset ds = new DefaultCategoryDataset();
            ds.setValue(100, "ibm", "第一季度");
            ds.setValue(200, "ibm", "第二季度");
            ds.setValue(600, "ibm", "第三季度");
 
            ds.setValue(500, "google", "第一季度");
            ds.setValue(333, "google", "第二季度");
            ds.setValue(780, "google", "第三季度");
 
            ds.setValue(600, "用友", "第一季度");
            ds.setValue(1500, "用友", "第二季度");
            ds.setValue(300, "用友", "第三季度");
 
            Font font = new Font("宋体", Font.BOLD, 20);
            //创建柱状图
            JFreeChart chart = ChartFactory.createLineChart("前三季度各大公司JEEAS市场销售情况", "季度", "销量(万台)", ds, PlotOrientation.VERTICAL, true, true, true);
 
            //设置整个图片的标题字体
            chart.getTitle().setFont(font);
 
            //设置提示条字体
            font = new Font("宋体", Font.BOLD, 15);
            chart.getLegend().setItemFont(font);
 
            //得到绘图区
            CategoryPlot plot = (CategoryPlot) chart.getPlot();
            //得到绘图区的域轴(横轴),设置标签的字体
            plot.getDomainAxis().setLabelFont(font);
 
            //设置横轴标签项字体
            plot.getDomainAxis().setTickLabelFont(font);
 
            //设置范围轴(纵轴)字体
            plot.getRangeAxis().setLabelFont(font);
            //存储成图片
            //设置chart的背景图片
            chart.setBackgroundImage(ImageIO.read(new File("d:/sunset.bmp")));
 
            plot.setBackgroundImage(ImageIO.read(new File("d:/Water.jpg")));
 
            plot.setForegroundAlpha(1.0f);
            ChartUtilities.saveChartAsJPEG(new File("d:/line.jpg"), chart, 600, 400);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

平面2D效果:

image

同样只需要使用createLineChart3D()方法创建3D拆线图,效果:

image

分享到:
评论

相关推荐

    java生成报表JFreeChart

    Java生成报表是一个重要的任务,特别是在企业级应用中,数据可视化对于理解和分析业务至关重要。JFreeChart库正是这样一个强大的工具,它允许开发人员在Java应用程序中创建各种图表,如柱状图、饼图和折线图等。这个...

    JFreeChart生成报表Demo案例

    在使用JFreeChart生成3D效果报表时,你需要: 1. **导入依赖**:在项目中引入JFreeChart相关的JAR包,这些包包含了所有生成图表所需的功能和组件。 2. **创建数据模型**:定义你需要展示的数据,这可能是一个二维...

    jFreeChart生成报表图片

    在"jFreeChart生成报表图片"的项目中,我们可以看到一个已经准备好的示例,包含了多种图表类型的实现,帮助开发者快速理解和应用jFreeChart。项目中的柱状图用于比较不同类别的数量或值,饼图则用于显示各部分占整体...

    jfreechart生成报表图片.zip

    通过解压“jfreechart生成报表图片.zip”,你可以获得示例代码或已生成的图片,进一步学习和理解如何使用JFreeChart。在实际开发中,结合JFreeChart的API文档和示例,可以轻松实现各种复杂的图表需求。

    JfreeChart生成报表[定义].pdf

    《JFreeChart生成报表详解》 在现代软件开发中,数据可视化已经成为不可或缺的一部分,尤其是在Web应用程序中。JFreeChart作为一款强大的Java图表库,能够帮助开发者轻松生成各种类型的图表,适用于网页、应用和...

    生成 JFreeChart 报表

    在这个简单的Dome中,我们将探讨如何利用JFreeChart库生成报表。 首先,我们需要了解JFreeChart的基本结构。JFreeChart的核心类是`ChartFactory`,它提供了静态方法来创建不同类型的图表。例如,要创建一个柱状图,...

    JFreeChart水晶报表制作

    由于JFreeChart生成的是图片,我们可以通过保存为PNG或JPEG格式的图片文件,然后在水晶报表中添加图片控件来显示。另外,可以使用水晶报表的“自定义代码”功能,通过Java或.NET代码直接生成JFreeChart并将其插入到...

    JFreeChart生成图片并显示

    这篇博文将深入探讨如何使用JFreeChart生成图片并将其在Web应用中显示。 首先,我们需要了解JFreeChart的基本概念。JFreeChart是一个用Java编写的库,它允许开发者创建各种类型的2D图表,包括折线图、柱状图、饼图...

    jfreechart形成报表文字乱码解决

    在使用JFreeChart库生成报表时,可能会遇到中文字符出现乱码的问题,这通常是由于字体设置不正确导致的。JFreeChart是一个强大的Java库,用于创建各种类型的图表,包括柱状图、饼图、时序图和折线图等。在处理中文...

    生成报表的jar

    使用JFreeChart生成报表的步骤通常包括以下几个关键环节: 1. **初始化**: 首先,你需要导入JFreeChart库到你的项目中。如果你是在IDE如Eclipse或IntelliJ IDEA中工作,可以通过Maven或Gradle等构建工具添加依赖。...

    jfreeChart报表小demo

    在这个demo中,iText用于将JFreeChart生成的图表嵌入到PDF中,使得报表可以以更便于分享和打印的形式存在。使用iText,你可以创建一个PdfDocument对象,添加一个PdfCanvas,然后将JFreeChart的Graphics2D绘图对象...

    用JFreeChart 输出报表

    JFreeChart可与其他Java库结合使用,比如JDBC连接数据库获取数据,或者与Apache POI一起生成带图表的Excel报表。 总结,JFreeChart是一个功能强大的图表库,提供了丰富的API来创建各种报表。通过理解和实践这些知识...

    java jfreechart 生成图形报表 饼图,条形图,曲线图

    首先,我们来了解一下如何使用JFreeChart生成饼图。饼图是一种直观地表示各部分与整体之间比例关系的图形。在JFreeChart中,我们可以使用`PieChart`类来创建饼图。需要定义数据集,通常是`DefaultPieDataset`,然后...

    Spring+JFreeChart 自动生成统计图

    标题“Spring+JFreeChart 自动生成统计图”涉及的是在Java开发环境中,利用Spring框架和JFreeChart库来动态生成图表的技巧。这篇文章可能是介绍如何在Spring应用中集成JFreeChart,以便为数据可视化提供服务。 ...

    jfreechart图形报表例子

    这个"jfreechart图形报表例子"是一个很好的资源,可以帮助开发者快速理解和使用JFreeChart库。 首先,JFreeChart库的核心是ChartFactory类,它提供了一系列静态方法,用于根据给定的数据和参数创建不同类型的图表。...

    JFreeChart报表

    **使用JFreeChart进行报表项目** 在Java报表项目中,JFreeChart作为核心组件,可以生成各种类型的图表,将复杂的数据转换为直观的视觉表示。通过结合Java的Swing或JavaFX等GUI库,可以创建交互式报表,用户可以缩放...

    JFreeChart图形报表代码

    在给定的“JFreeChart图形报表代码”中,我们可以通过分析源码来了解如何在JSP(JavaServer Pages)中利用JFreeChart生成图表,以及如何进行注释和改写。 首先,我们需要理解JFreeChart的基本使用步骤: 1. **引入...

    JFreeChart web报表开发实例

    在Web环境下开发报表,我们需要将JFreeChart生成的图表与Web服务器、HTTP响应和浏览器进行交互。通常,这可以通过以下步骤实现: 1. **服务器端生成图表**:在服务器端,使用JFreeChart创建图表对象,设置必要的...

    jfreechart报表

    在深入探讨JFreeChart的使用和功能之前,让我们先理解一下它的核心概念。 JFreeChart支持多种类型的图表,包括条形图、线形图、饼图、散点图、甘特图、面积图、雷达图、热力图等。这些图表可以是2D或3D形式,且可以...

Global site tag (gtag.js) - Google Analytics