- Home ›
- JFreeChartを使ったグラフ作成 ›
- ガントチャート(GanttChart) ›
- HERE
複数の系列のデータ
広告
ガントチャートの場合は複数の系列のデータを取り扱う事が可能です。
ここでは例として次のようなデータを元にグラフを作成します。
系列:計画
タスク名 | 開始時期 | 終了時期 |
---|---|---|
要件定義 | 2007/3/4 | 2007/3/12 |
設計 | 2007/3/12 | 2007/3/25 |
開発 | 2007/4/2 | 2007/4/30 |
テスト | 2007/5/1 | 2007/5/10 |
系列:実績
タスク名 | 開始時期 | 終了時期 |
---|---|---|
要件定義 | 2007/3/4 | 2007/3/14 |
設計 | 2007/3/14 | 2007/4/3 |
開発 | 2007/4/5 | 2007/5/10 |
テスト | 2007/5/11 | 2007/5/18 |
系列を表すTaskSeriesクラスのオブジェクトを作成し、それぞれの系列にデータを登録していきます。
実際には次のように記述します。
TaskSeriesCollection data = new TaskSeriesCollection(); String[] taskname = {"要件定義", "設計", "開発", "テスト"}; TaskSeries series1 = new TaskSeries("計画"); TaskSeries series2 = new TaskSeries("実績"); Calendar calendar = Calendar.getInstance(); calendar.set(2007, 3, 4); Date start = calendar.getTime(); calendar.set(2007, 3, 12); Date end = calendar.getTime(); Task task11 = new Task("要件定義", start, end); series1.add(task11); /* タスクの数だけ繰り返す */ calendar.set(2007, 3, 4); Date start = calendar.getTime(); calendar.set(2007, 3, 14); Date end = calendar.getTime(); Task task21 = new Task("設計", start, end); series2.add(task21); /* タスクの数だけ繰り返す */ data.add(series1); data.add(series2);
サンプルプログラム
では簡単なサンプルを作成して試してみます。
import org.jfree.chart.JFreeChart; import org.jfree.chart.ChartFactory; import org.jfree.data.gantt.TaskSeriesCollection; import org.jfree.data.gantt.TaskSeries; import org.jfree.data.gantt.Task; import java.util.Date; import java.util.Calendar; import javax.swing.JFrame; import java.awt.BorderLayout; import org.jfree.chart.ChartPanel; public class Test3_1 extends JFrame{ public static void main(String[] args) { Test3_1 frame = new Test3_1(); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setBounds(10, 10, 500, 500); frame.setTitle("グラフサンプル"); frame.setVisible(true); } Test3_1(){ JFreeChart chart = ChartFactory.createGanttChart("プロジェクト管理", "項目", "日程", createData(), true, false, false); ChartPanel cpanel = new ChartPanel(chart); getContentPane().add(cpanel, BorderLayout.CENTER); } private TaskSeriesCollection createData(){ TaskSeriesCollection data = new TaskSeriesCollection(); String[] taskname = {"要件定義", "設計", "開発", "テスト"}; TaskSeries series1 = new TaskSeries("計画"); TaskSeries series2 = new TaskSeries("実績"); Task task11 = new Task(taskname[0], createData(2007, 3, 4), createData(2007, 3, 12)); Task task12 = new Task(taskname[1], createData(2007, 3, 12), createData(2007, 3, 25)); Task task13 = new Task(taskname[2], createData(2007, 4, 2), createData(2007, 4, 30)); Task task14 = new Task(taskname[3], createData(2007, 5, 1), createData(2007, 5, 10)); series1.add(task11); series1.add(task12); series1.add(task13); series1.add(task14); Task task21 = new Task(taskname[0], createData(2007, 3, 4), createData(2007, 3, 14)); Task task22 = new Task(taskname[1], createData(2007, 3, 14), createData(2007, 4, 3)); Task task23 = new Task(taskname[2], createData(2007, 4, 5), createData(2007, 5, 10)); Task task24 = new Task(taskname[3], createData(2007, 5, 11), createData(2007, 5, 18)); series2.add(task21); series2.add(task22); series2.add(task23); series2.add(task24); data.add(series1); data.add(series2); return data; } private Date createData(int year, int month, int date){ Calendar calendar = Calendar.getInstance(); calendar.set(year, month - 1, date); return calendar.getTime(); } }
上記をコンパイルした後で実行すると次のようにJavaアプリケーションが起動します。
( Written by Tatsuo Ikura )