转载自   JfreeChart实现甘特图

一、甘特图简介

甘特图(Gantt chart)又称为横道图、条状图(Bar chart)。以提出者亨利·L·甘特先生的名字命名。

甘特图内在思想简单,即以图示的方式通过活动列表和时间刻度形象地表示出任何特定项目的活动顺序与持续时间。基本是一条线条图,横轴表示时间,纵轴表示活动(项目),线条表示在整个期间上计划和实际的活动完成情况。它直观地表明任务计划在什么时候进行,及实际进展与计划要求的对比。

二、实例

package com.test.Gannt;import java.awt.Font;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.FileOutputStream;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;import javax.swing.JFrame;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.axis.DateAxis;
import org.jfree.chart.axis.ValueAxis;
import org.jfree.chart.plot.CategoryPlot;
import org.jfree.data.category.IntervalCategoryDataset;
import org.jfree.data.gantt.Task;
import org.jfree.data.gantt.TaskSeries;
import org.jfree.data.gantt.TaskSeriesCollection;/**
* @author Danny
*
* TODO To change the template for this generated type comment go to
* Window - Preferences - Java - Code Style - Code Templates
*/
public class GanttChart{public static void main(String[] args) {IntervalCategoryDataset dataset = createSampleDataset();JFreeChart chart = ChartFactory.createGanttChart("任务管理系统", "任务各阶段详细实施计划", "任务周期", dataset,false, false, false);CategoryPlot plot=chart.getCategoryPlot();chart.getTitle().setFont(new Font("新宋体",Font.BOLD,20));CategoryAxis domainAxis=plot.getDomainAxis();//水平底部列表domainAxis.setLabelFont(new Font("新宋体",Font.BOLD,14));//水平底部标题domainAxis.setTickLabelFont(new Font("新宋体",Font.BOLD,12));//垂直标题ValueAxis rangeAxis = plot.getRangeAxis();rangeAxis.setLabelFont(new Font("新宋体",Font.BOLD,16));//用来控制时间轴的显示,防止乱码DateAxis da = (DateAxis)plot.getRangeAxis(0);da.setDateFormatOverride(new SimpleDateFormat("yyyy-MM-dd"));FileOutputStream fop = null;try{System.out.println("Danny>> begin.");fop = new FileOutputStream("D:\\gantt.jpg");ChartUtilities.writeChartAsJPEG(fop,1f, chart, 800, 600,null);System.out.println("Danny>> end..");System.out.println("Danny>> successful...");} catch (IOException e){e.printStackTrace();} finally{try{fop.close();} catch (IOException e){e.printStackTrace();}}}/** *//*** Utility method for creating <code>Date</code> objects.** @param day 日* @param month 月* @param year 年** @return a date.*/private static Date date(final int day, final int month, final int year){final Calendar calendar = Calendar.getInstance();calendar.set(year, month, day);final Date result = calendar.getTime();return result;}/** ** @return The dataset.*/private static IntervalCategoryDataset createSampleDataset() {final TaskSeries s1 = new TaskSeries("SCHEDULE");final Task t1 = new Task("任务1", date(1, Calendar.JANUARY, 2001), date(5, Calendar.APRIL, 2001));t1.setPercentComplete(0.8);s1.add(t1);// 创建一个任务并插入两个子任务final Task t3 = new Task("任务2", date(10, Calendar.APRIL, 2001), date(5, Calendar.MAY, 2001));final Task st31 = new Task("需求1", date(10, Calendar.APRIL, 2001), date(25, Calendar.APRIL, 2001));st31.setPercentComplete(0.50);final Task st32 = new Task("需求2", date(1, Calendar.MAY, 2001), date(5, Calendar.MAY, 2001));st32.setPercentComplete(1.0);t3.addSubtask(st31);t3.addSubtask(st32);s1.add(t3);final Task t5 = new Task( "任务3", date(2, Calendar.JUNE, 2001), date(2, Calendar.JUNE, 2001)); s1.add(t5);final Task t6 = new Task("任务4", date(3, Calendar.MARCH, 2001), date(31, Calendar.JULY, 2001));t6.setPercentComplete(0.60);s1.add(t6);final Task t8 = new Task("任务结束", date(10, Calendar.AUGUST, 2001), date(10, Calendar.AUGUST, 2001));t8.setPercentComplete(0.0);s1.add(t8);final Task t9 = new Task("任务试用", date(12, Calendar.AUGUST, 2001), date(12, Calendar.SEPTEMBER, 2001));t9.setPercentComplete(0.0);s1.add(t9);final Task t10 = new Task("任务测试", date(13, Calendar.SEPTEMBER, 2001), date(31, Calendar.OCTOBER, 2001));t10.setPercentComplete(0.2);s1.add(t10);final Task t12 = new Task("全部结束", date(28, Calendar.NOVEMBER, 2001), date(30, Calendar.NOVEMBER, 2001));t12.setPercentComplete(0.0);s1.add(t12);final TaskSeriesCollection collection = new TaskSeriesCollection();collection.add(s1);return collection;}
}

JfreeChart(八)之甘特图相关推荐

  1. 项目管理工具dhtmlxGantt甘特图入门教程(八):数据加载(二)

    这篇文章给大家讲解如何利用dhtmlxGantt加载任务日期. 点击获DhtmlxGantt官方正式版 加载任务日期 设置任务计划 可以通过三种方式为数据馈送中的任务定义计划: 开始日期 + 持续时间 ...

  2. 项目管理工具dhtmlxGantt甘特图入门教程(八):数据加载(三)

    这篇文章给大家讲解如何利用 dhtmlxGantt正确保存和显示任务的结束日期,本节将给你一个明确答案. 点击获DhtmlxGantt官方正式版 首先,让我们考虑一下在处理任务日期时可能会遇到的两种情 ...

  3. 如何使用excel画甘特图

    甘特图小伙伴们都非常的熟悉,首先小编简单的向各位小伙伴介绍一下什么是甘特图,甘特图内在思想简单,即以图示的方式通过活动列表和时间刻度形象地表示出任何特定项目的活动顺序与持续时间.基本是一条线条图,横轴 ...

  4. 甘特图是什么?如何快速搭建?

    甘特图是什么? 甘特图是一种条状图,直观展示项目进展随时间的走势及联系.其中,项目时间由横轴表示,项目活动由纵轴表示.整体线条表示整个项目期间内,计划和实际的活动完成情况.甘特图起初用于美国胡佛水坝和 ...

  5. Excel技巧:如何绘制一份优秀的甘特图(项目管理)

    作者:秦路,天善智能特约专家.资深数据分析师,数据化运营专家.擅长结合运营和数据,建立数据化运营体系. 个人公众号:秦路(微信ID:tracykanc) 今天我给大家分享的内容是如何利用Excel绘制 ...

  6. java折线图_Java系列:JFreeChart在线制作折线图

    一.概述: JFreeChart是JAVA平台上的一个开放的图表绘制类库.它完全使用JAVA语言编写,是为applications, applets, servlets 以及JSP等使用所设计.JFr ...

  7. 跳出任务管理的泥沼,拥抱甘特图的怀抱(完整版)

    跳出任务管理的泥沼,拥抱甘特图的怀抱(完整版) 写这篇文章,我不是要黑任何一个任务管理类的App或者方法论.相反,我是一个工具控,在试用各种任务管理类App上总是不遗余力.常见的Things 3,To ...

  8. 使用Typora画 流程图、时序图、顺序图、甘特图、等图详解

    目录 概述 一.流程图 二.UML时序图 三.甘特图 四.类图 五.状态图 六.饼图 七.导出 八.总结 概述 Typora是一款轻便简洁的Markdown编辑器,支持即时渲染技术,这也是与其他Mar ...

  9. 一个简单漂亮好用的甘特图软件

    一个简单漂亮好用的甘特图软件 知竹 - 一个甘特图项目计划管理协作平台 项目demo 一.添加任务 点击任务标题变成可编辑格式 按回车键即在当前任务下添加一个任务 二.设置为子任务 选中一行任务 (按 ...

最新文章

  1. 华为不做黑寡妇,开源编译器,与友商共建安卓性能
  2. 视图数据共享之SESSION/CACHE
  3. 《跨界杂谈》商业模式(三):黑帮
  4. 最新小浣熊5.0漫画CMS精仿土豪漫画系统源码
  5. 华为笔试题——去除重复的数字
  6. 服务器共享文档只读不可复制,局域网共享文件只读不能复制的设置方法
  7. 概率论————思维导图(上岸必备)(一维随机变量及其分布)
  8. 使用Pano2VR实现客厅VR效果
  9. 【IoT】 产品设计之拆机报告:天猫精灵之万能红外遥控器
  10. linux deploy安装kali和磁盘扩容
  11. 解决 rsync: failed to connect to xxx.xxx.xxx.85 (xxx.xxx.xxx.85): No route to host (113) 问题
  12. 项目三 奖学金名单
  13. 01【Web】基础-HTML
  14. centos6.6 cobber 安装
  15. java多态优化多个if_脑壳疼!代码中那么多“烦人”的if else
  16. 让Linux使用XP下的宋体字符
  17. 靶机Hacknos-2.1
  18. 深度学习下的人脸识别技术:从“后真相”到“无隐私”
  19. 自动化测试框架Pytest使用mark和参数化固定装置、测试函数
  20. 使用fetch轻松解决JS跨域请求问题——无需CORS,jsonp

热门文章

  1. 广西高考成绩查询2021,2021年广西高考个人排名怎么查询,广西高考成绩排名查询方法...
  2. [JavaWeb-MySQL]多表查询(内连接,外连接,子查询)
  3. [C++11]弱引用智能指针weak_ptr初始化和相关的操作函数
  4. [蓝桥杯][算法提高VIP]夺宝奇兵-递推+记忆化搜索
  5. python目标跟踪精度曲线图_Python+opencv3.4+Kalman滤波在视频中跟踪绘制运动目标,Pythonopencv34kalman,卡尔曼滤波,实现,物体,追踪,和,轨迹...
  6. Java Socket编程详解
  7. Boltzmann Machine 入门(1)
  8. Gauss高斯消元——模板
  9. E:Tree Queries(假树链剖分写法)
  10. P3810 【模板】三维偏序(陌上花开)