JfreeChart(八)之甘特图
生活随笔
收集整理的這篇文章主要介紹了
JfreeChart(八)之甘特图
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
轉載自? ?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(八)之甘特图的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 怎么样用路由器设置代理如何用路由器搭设代
- 下一篇: 怎么把音频文件转换成mp4怎么把音频文件