图表jfreechart的简介

2024-06-14 16:48
文章标签 图表 简介 jfreechart

本文主要是介绍图表jfreechart的简介,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

  • 简介:JFreeChart是JAVA平台上的一个开放的图表绘制类库。它完全使用JAVA语言编写,是为applications, applets, servlets 以及JSP等使用所设计。JFreeChart可生成饼图(pie charts)、柱状图(bar charts)、散点图(scatter plots)、时序图(time series)、甘特图(Gantt charts)等等多种图表,并且可以产生PNG和JPEG格式的输出,还可以与PDF和EXCEL关联。
  • 特点:稳定、轻量级且功能强大;免费开源;简单易操作。
  • 缺点:缺乏灵活性、代码量大、类及接口较多需要长时间研究、不能是实现数据分离。
  • 案例:
    package com.wasu.itv.common.util;   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.NumberFormat;   
    import java.util.Iterator;   
    import java.util.List;   import javax.servlet.http.HttpServletRequest;   import org.jfree.chart.ChartFactory;   
    import org.jfree.chart.ChartUtilities;   
    import org.jfree.chart.JFreeChart;   
    import org.jfree.chart.axis.CategoryAxis;   
    import org.jfree.chart.labels.StandardCategoryItemLabelGenerator;   
    import org.jfree.chart.labels.StandardPieSectionLabelGenerator;   
    import org.jfree.chart.labels.StandardPieToolTipGenerator;   
    import org.jfree.chart.plot.CategoryPlot;   
    import org.jfree.chart.plot.PiePlot;   
    import org.jfree.chart.plot.PlotOrientation;   
    import org.jfree.chart.renderer.category.BarRenderer;   
    import org.jfree.chart.title.LegendTitle;   
    import org.jfree.chart.title.TextTitle;   
    import org.jfree.data.category.CategoryDataset;   
    import org.jfree.data.category.DefaultCategoryDataset;   
    import org.jfree.data.general.DefaultPieDataset;   
    import org.jfree.util.Rotation;   public class JFreeChartUtils {   public static boolean generatePieChart(List<Object[]> data, String title,   int width, int heigth, HttpServletRequest request,boolean is3D) {   boolean returnValue = false;   DefaultPieDataset dataset = new DefaultPieDataset();   for (Iterator<Object[]> iterator = data.iterator(); iterator.hasNext();) {   Object[] o = (Object[]) iterator.next();   dataset.setValue(o[0].toString(), ((Long) o[1]).doubleValue());   }   JFreeChart chart = createPieChart(dataset, title,is3D);   returnValue = drawToOutputStream(request.getSession()   .getServletContext().getRealPath("/")   + "/images/itv/statistical.jpg", chart, width, heigth);   return returnValue;   }   /**  * step2:创建PieChart图表  *   * @param dataset  * @return  */  private static JFreeChart createPieChart(DefaultPieDataset dataset,   String title,boolean is3D) {   JFreeChart chart=null;   if(is3D){   chart=ChartFactory.createPieChart3D(   title, // 图表标题   dataset, // 数据集   true, // 是否显示图例   true, // 是否显示工具提示   true // 是否生成URL   );   }   else{ chart = ChartFactory.createPieChart(   title, // 图表标题   dataset, // 数据集   true, // 是否显示图例   true, // 是否显示工具提示   true // 是否生成URL   );   }   // 设置标题字体==为了防止中文乱码:必须设置字体   chart.setTitle(new TextTitle(title, new Font("黑体", Font.ITALIC, 22)));   // 设置图例的字体==为了防止中文乱码:必须设置字体   chart.getLegend().setItemFont(new Font("黑体", Font.BOLD, 12));   // 获取饼图的Plot对象(实际图表)   PiePlot plot = (PiePlot) chart.getPlot();   // 图形边框颜色   plot.setBaseSectionOutlinePaint(Color.GRAY);   // 图形边框粗细   plot.setBaseSectionOutlineStroke(new BasicStroke(0.0f));   // 设置饼状图的绘制方向,可以按顺时针方向绘制,也可以按逆时针方向绘制   plot.setDirection(Rotation.ANTICLOCKWISE);   // 设置绘制角度(图形旋转角度)   plot.setStartAngle(70);   // 设置突出显示的数据块   // plot.setExplodePercent("One", 0.1D);   // 设置背景色透明度   plot.setBackgroundAlpha(0.7F);   // 设置前景色透明度   plot.setForegroundAlpha(0.65F);   // 设置区块标签的字体==为了防止中文乱码:必须设置字体   plot.setLabelFont(new Font("宋体", Font.PLAIN, 12));   // 扇区分离显示,对3D图不起效   if(is3D)   plot.setExplodePercent(dataset.getKey(3), 0.1D);   // 图例显示百分比:自定义方式,{0} 表示选项, {1} 表示数值, {2} 表示所占比例 ,小数点后两位   plot.setLabelGenerator(new StandardPieSectionLabelGenerator(   "{0}:{1}\r\n({2})", NumberFormat.getNumberInstance(),   new DecimalFormat("0.00%")));   // 图例显示百分比   // plot.setLegendLabelGenerator(new   // StandardPieSectionLabelGenerator("{0}={1}({2})"));   // 指定显示的饼图为:圆形(true) 还是椭圆形(false)   plot.setCircular(true);   // 没有数据的时候显示的内容   plot.setNoDataMessage("找不到可用数据...");   // 设置鼠标悬停提示   plot.setToolTipGenerator(new StandardPieToolTipGenerator());   // 设置热点链接   // plot.setURLGenerator(new StandardPieURLGenerator("detail.jsp"));   return chart;   }   private static JFreeChart createBarChart(CategoryDataset dataset,   String title, String x, String y,boolean is3D) {   JFreeChart chart =null;   if(is3D){   chart = ChartFactory.createBarChart3D( // 3D柱状图   // JFreeChart chart = ChartFactory.createLineChart3D( //3D折线图   title, // 图表的标题   x, // 目录轴的显示标签   y, // 数值轴的显示标签   dataset, // 数据集   PlotOrientation.VERTICAL, // 图表方式:V垂直;H水平   true, // 是否显示图例   false, // 是否显示工具提示   false // 是否生成URL   );   }else{   chart = ChartFactory.createBarChart( // 柱状图   // JFreeChart chart = ChartFactory.createLineChart3D( //3D折线图   title, // 图表的标题   x, // 目录轴的显示标签   y, // 数值轴的显示标签   dataset, // 数据集   PlotOrientation.VERTICAL, // 图表方式:V垂直;H水平   true, // 是否显示图例   false, // 是否显示工具提示   false // 是否生成URL   );   }   // ===============为了防止中文乱码:必须设置字体   chart.setTitle(new TextTitle(title, new Font("黑体", Font.ITALIC, 22)));   LegendTitle legend = chart.getLegend(); // 获取图例   legend.setItemFont(new Font("宋体", Font.BOLD, 12)); // 设置图例的字体,防止中文乱码   CategoryPlot plot = (CategoryPlot) chart.getPlot(); // 获取柱图的Plot对象(实际图表)   // 设置柱图背景色(注意,系统取色的时候要使用16位的模式来查看颜色编码,这样比较准确)   plot.setBackgroundPaint(new Color(255, 255, 204));   plot.setForegroundAlpha(0.65F); // 设置前景色透明度   // 设置横虚线可见   plot.setRangeGridlinesVisible(true);   // 虚线色彩   plot.setRangeGridlinePaint(Color.gray);   CategoryAxis h = plot.getDomainAxis(); // 获取x轴   h.setMaximumCategoryLabelWidthRatio(1.0f);// 横轴上的 Lable 是否完整显示   h.setLabelFont(new Font("宋体", Font.BOLD, 12));// 设置字体,防止中文乱码   h.setTickLabelFont(new Font("宋体", Font.BOLD, 12));// 轴数值   // h.setCategoryLabelPositions(CategoryLabelPositions.UP_45);//45度倾斜   plot.getRangeAxis().setLabelFont(new Font("宋体", Font.BOLD, 12)); // Y轴设置字体,防止中文乱码   // 柱图的呈现器   BarRenderer renderer = new BarRenderer();   // 设置柱子宽度   // renderer.setMaximumBarWidth(0.05);   // 设置柱子高度   // renderer.setMinimumBarLength(0.2);   // 设置柱子边框颜色   renderer.setBaseOutlinePaint(Color.BLACK);   // 设置柱子边框可见   renderer.setDrawBarOutline(true);   // 设置每个柱的颜色   renderer.setSeriesPaint(0, Color.BLUE);   renderer.setSeriesPaint(1, Color.GREEN);   renderer.setSeriesPaint(2, Color.RED);   // 设置每个地区所包含的平行柱的之间距离   renderer.setItemMargin(0.05);   // 显示每个柱的数值,并修改该数值的字体属性   renderer.setIncludeBaseInRange(true);   renderer   .setBaseItemLabelGenerator(new StandardCategoryItemLabelGenerator());   renderer.setBaseItemLabelsVisible(true);   // 设置柱的透明度   plot.setForegroundAlpha(1.0f);   // 给柱图添加呈现器   plot.setRenderer(renderer);   // 没有数据的时候显示的内容   plot.setNoDataMessage("找不到可用数据...");   return chart;   }   /**  *   * @param data  * @param title  * @param x  * @param y  * @param width  * @param heigth  * @param request  * @return  */  public static boolean generateBarChart(List<Object[]> data, String title,   String x, String y, int width, int heigth,boolean is3D,   HttpServletRequest request) {   boolean returnValue = false;   DefaultCategoryDataset dataset = new DefaultCategoryDataset();   for (Iterator<Object[]> iterator = data.iterator(); iterator.hasNext();) {   Object[] o = (Object[]) iterator.next();   dataset.setValue(((Integer) o[1]).intValue(), o[0] + ":" + o[1],   o[2].toString());   }   JFreeChart chart = createBarChart(dataset, title, x, y,is3D);   returnValue = drawToOutputStream(request.getSession()   .getServletContext().getRealPath("/")   + "/images/itv/statistical.jpg", chart, width, heigth);   return returnValue;   }   /**  * step3: 输出图表到指定的磁盘  *   * @param destPath  * @param chart  */  private static boolean drawToOutputStream(String destPath,   JFreeChart chart, int width, int heigth) {   FileOutputStream fos = null;   boolean returnValue = true;   try {   fos = new FileOutputStream(destPath);   ChartUtilities.writeChartAsPNG(fos, // 指定目标输出流   chart, // 图表对象   width, // 宽   heigth, // 高   null); // ChartRenderingInfo信息   } catch (IOException e) {   e.printStackTrace();   returnValue = false;   } finally {   try {   fos.close();   } catch (IOException e) {   e.printStackTrace();   }   }   return returnValue;   }   /**  * @param args  */  public static void main(String[] args) {   CategoryDataset  dataset = createBarDataSet2();   JFreeChart chart=createBarChart(dataset, "111111111111111", "2222222", "2222222",true);   drawToOutputStream("D:\\mybook-pie.png", chart, 640, 480);   }   private static DefaultPieDataset createPieDataSet1() {   DefaultPieDataset dataset = new DefaultPieDataset();   dataset.setValue("java程序设计语言", 10000);   dataset.setValue("JSP基础与案例开发详解", 20000);   dataset.setValue("struts基础与案例开发详解", 30000);   dataset.setValue("精通JSF", 40000);   return dataset;   }   private static DefaultPieDataset createPieDataSet2() {   DefaultPieDataset dataset = new DefaultPieDataset();   dataset.setValue(" 市场前期", new Double(10));   dataset.setValue(" 立项", new Double(15));   dataset.setValue(" 计划", new Double(10));   dataset.setValue(" 需求与设计", new Double(10));   dataset.setValue(" 执行控制", new Double(35));   dataset.setValue(" 收尾", new Double(10));   dataset.setValue(" 运维", new Double(10));   return dataset;   }   /**  * step1:创建 简单数据集对象  *   * @return  */  private static CategoryDataset createBarDataSet1() {   DefaultCategoryDataset dataset = new DefaultCategoryDataset();   dataset.setValue(10000, "", "Corejava");   dataset.setValue(20000, "", "JavaWeb");   dataset.setValue(30000, "", "易用struts");   dataset.setValue(40000, "", "精通JSF");   return dataset;   }   /**  * 组合数据集对象  *   * @return  */  private static CategoryDataset createBarDataSet2() {   DefaultCategoryDataset dataset = new DefaultCategoryDataset();   dataset.setValue(5000, "北京", "Corejava");   dataset.setValue(3000, "上海", "Corejava");   dataset.setValue(2000, "广州", "Corejava");   dataset.setValue(10000, "北京", "JavaWeb");   dataset.setValue(6000, "上海", "JavaWeb");   dataset.setValue(4000, "广州", "JavaWeb");   dataset.setValue(15000, "北京", "易用struts");   dataset.setValue(5000, "上海", "易用struts");   dataset.setValue(10000, "广州", "易用struts");   dataset.setValue(20000, "北京", "精通JSF");   dataset.setValue(10000, "上海", "精通JSF");   dataset.setValue(10000, "广州", "精通JSF");   return dataset;   }   }  

这篇关于图表jfreechart的简介的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1060963

相关文章

rust 中的 EBNF简介举例

《rust中的EBNF简介举例》:本文主要介绍rust中的EBNF简介举例,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录1. 什么是 EBNF?2. 核心概念3. EBNF 语法符号详解4. 如何阅读 EBNF 规则5. 示例示例 1:简单的电子邮件地址

Python 异步编程 asyncio简介及基本用法

《Python异步编程asyncio简介及基本用法》asyncio是Python的一个库,用于编写并发代码,使用协程、任务和Futures来处理I/O密集型和高延迟操作,本文给大家介绍Python... 目录1、asyncio是什么IO密集型任务特征2、怎么用1、基本用法2、关键字 async1、async

Android Mainline基础简介

《AndroidMainline基础简介》AndroidMainline是通过模块化更新Android核心组件的框架,可能提高安全性,本文给大家介绍AndroidMainline基础简介,感兴趣的朋... 目录关键要点什么是 android Mainline?Android Mainline 的工作原理关键

Python如何在Word中生成多种不同类型的图表

《Python如何在Word中生成多种不同类型的图表》Word文档中插入图表不仅能直观呈现数据,还能提升文档的可读性和专业性,本文将介绍如何使用Python在Word文档中创建和自定义各种图表,需要的... 目录在Word中创建柱形图在Word中创建条形图在Word中创建折线图在Word中创建饼图在Word

Java实战之利用POI生成Excel图表

《Java实战之利用POI生成Excel图表》ApachePOI是Java生态中处理Office文档的核心工具,这篇文章主要为大家详细介绍了如何在Excel中创建折线图,柱状图,饼图等常见图表,需要的... 目录一、环境配置与依赖管理二、数据源准备与工作表构建三、图表生成核心步骤1. 折线图(Line Ch

Java使用POI-TL和JFreeChart动态生成Word报告

《Java使用POI-TL和JFreeChart动态生成Word报告》本文介绍了使用POI-TL和JFreeChart生成包含动态数据和图表的Word报告的方法,并分享了实际开发中的踩坑经验,通过代码... 目录前言一、需求背景二、方案分析三、 POI-TL + JFreeChart 实现3.1 Maven

Golang的CSP模型简介(最新推荐)

《Golang的CSP模型简介(最新推荐)》Golang采用了CSP(CommunicatingSequentialProcesses,通信顺序进程)并发模型,通过goroutine和channe... 目录前言一、介绍1. 什么是 CSP 模型2. Goroutine3. Channel4. Channe

Java中的Opencv简介与开发环境部署方法

《Java中的Opencv简介与开发环境部署方法》OpenCV是一个开源的计算机视觉和图像处理库,提供了丰富的图像处理算法和工具,它支持多种图像处理和计算机视觉算法,可以用于物体识别与跟踪、图像分割与... 目录1.Opencv简介Opencv的应用2.Java使用OpenCV进行图像操作opencv安装j

详解Java中如何使用JFreeChart生成甘特图

《详解Java中如何使用JFreeChart生成甘特图》甘特图是一种流行的项目管理工具,用于显示项目的进度和任务分配,在Java开发中,JFreeChart是一个强大的开源图表库,能够生成各种类型的图... 目录引言一、JFreeChart简介二、准备工作三、创建甘特图1. 定义数据集2. 创建甘特图3.

C#图表开发之Chart详解

《C#图表开发之Chart详解》C#中的Chart控件用于开发图表功能,具有Series和ChartArea两个重要属性,Series属性是SeriesCollection类型,包含多个Series对... 目录OverviChina编程ewSeries类总结OverviewC#中,开发图表功能的控件是Char