JFreeChart入門 - JFreeChartでガントチャートの作成
2008/03/10 22:42Update
JFreeChartでガントチャートの作成について解説します。
はじめに
JFreeChartとは:JFreeChart - Javaで書かれたフリーで使える高機能なチャート作成ライブラリ

JFreeChart入門 - JFreeChartのインストール及びJFreeChartデモの実行

今回はJFreeChartを使ってガントチャートを作成してみます。
今回のテスト環境
OS :WindowsXP
Java:jdk1.5.0_06
JFreeChart:1.0.9(2008年3月 最新版)
※JFreeChartはJavaで書かれたライブラリなので、Windows以外のOSでも正常に動きます。
JFreeChartでガントチャート(Gantt Chart)の作成
JFreeChartでガントチャートを作成するには、次のようなステップに従えば、非常に簡単に行えます。
ステップ1:IntervalCategoryDataset(TaskSeries)オブジェクトの作成
ステップ2:DatasetからJFreeChartオブジェクトを作成、設定
ステップ3:ファイルやサーブレットに出力
Javaソース:
CreateJFreeChartGantt.javapackage com.syboos.demo.jfreechart;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.Calendar;
import java.util.Date;
import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartUtilities;
import org.jfree.chart.JFreeChart;
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;
import org.jfree.data.time.SimpleTimePeriod;
//JFreeChartでガントチャートを作成 サンプル
public class CreateJFreeChartGantt {
/**
* JFreeChartでガントチャートを作成
*/
public static void main(String[] args) {
//ステップ1:Datasetオブジェクトの作成
IntervalCategoryDataset dataset = createDataset();
//ステップ2:DatasetからJFreeChartオブジェクトを作成、及び設定
JFreeChart freeChart = createChart(dataset);
//ファイルや、Servletに出力
saveAsFile(freeChart, "c:\\jfreechart\\gantt.png", 500, 400);
}
//ファイルに保存する
public static void saveAsFile(JFreeChart chart, String outputPath, int weight, int height) {
FileOutputStream out = null;
try {
File outFile = new File(outputPath);
if (!outFile.getParentFile().exists()) {
outFile.getParentFile().mkdirs();
}
out = new FileOutputStream(outputPath);
//PNGイメージファイルに保存する
ChartUtilities.writeChartAsPNG(out, chart, 300, 200);
//JPEGイメージファイルに保存する
//ChartUtilities.writeChartAsJPEG(out, chart, 500, 400);
out.flush();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
if (out != null) {
try {
out.close();
} catch (IOException e) {
//do nothing
}
}
}
}
//IntervalCategoryDatasetからJFreeChartを作成
public static JFreeChart createChart(IntervalCategoryDataset dataset) {
//ガントチャートを作成するためのJFreeChartオブジェクトの生成:ChartFactory.createGanttChart
JFreeChart jfreechart = ChartFactory.createGanttChart("Gantt Chart Demo", //タイトル
"タスク", //categoryAxisLabel (縦軸、Y軸のラベル)
"日付", //valueAxisLabel(横軸、X軸のラベル)
dataset, // dataset
true, // legend
false, //Tooltips
false //URLs
);
//以下の設定は省略しても構いません。
//出力される円グラフの透明度、境界線の色/有無などの設定を行う:クラスPlot(ガントチャートはCategoryPlot)
CategoryPlot plot = (CategoryPlot) jfreechart.getPlot();
//背景色 透明度
plot.setBackgroundAlpha(0.5f);
//前景色 透明度
plot.setForegroundAlpha(0.5f);
//その他設定は XYPlotを参照
return jfreechart;
}
/**
* IntervalCategoryDatasetオブジェクトの作成。
*
* ガントチャートを作成するために、IntervalCategoryDatasetを用意します。
* IntervalCategoryDataset: OpenHighLowClose
*/
public static IntervalCategoryDataset createDataset() {
//日付
TaskSeries preTaskSeries = new TaskSeries("予定");
TaskSeries realTaskSeries = new TaskSeries("実績");
//予定タスク
Task preTask1 = new Task("設計",
new SimpleTimePeriod(getDate(2008, 1, 1), getDate(2008, 2, 1)));
preTaskSeries.add(preTask1);
Task preTask2 = new Task("開発",
new SimpleTimePeriod(getDate(2008, 2, 2), getDate(2008, 4, 1)));
preTaskSeries.add(preTask2);
//実績
Task realTask1 = new Task("設計",
new SimpleTimePeriod(getDate(2008, 1, 1), getDate(2008, 1, 25)));
realTaskSeries.add(realTask1);
Task realTask2 = new Task("開発",
new SimpleTimePeriod(getDate(2008, 1, 26), getDate(2008, 4, 15)));
realTaskSeries.add(realTask2);
TaskSeriesCollection taskSeriesCollec = new TaskSeriesCollection();
taskSeriesCollec.add(preTaskSeries);
taskSeriesCollec.add(realTaskSeries);
return taskSeriesCollec;
}
//日付取得用
private static Date getDate(int year, int month, int day) {
Calendar cal = Calendar.getInstance();
cal.set(year, month, day);
return cal.getTime();
}
}
コンパイル及び実行
次のようなコマンドでコンパイル及び実行を行います。
C:\Work\Download\JFreeChart\demos>javac -classpath .;jcommon-1.0.12.jar;jfreechart-1.0.9.jar com/syboos/demo/jfreechart/CreateJFreeChartGantt.java
C:\Work\Download\JFreeChart\demos>java -classpath .;jcommon-1.0.12.jar;jfreechart-1.0.9.jar com.syboos.demo.jfreechart.CreateJFreeChartGantt
C:\Work\Download\JFreeChart\demos>
C:\Work\Download\JFreeChart\demos>java -classpath .;jcommon-1.0.12.jar;jfreechart-1.0.9.jar com.syboos.demo.jfreechart.CreateJFreeChartGantt
C:\Work\Download\JFreeChart\demos>
※C:\Work\Download\JFreeChart\demosの構成は次のようになります:
jcommon-1.0.12.jar
jfreechart-1.0.9.jar
com\
syboos\
demo\
jfreechart\
CreateJFreeChartGantt.java
ファイルC:\jfreechart\gantt.pngが作成されます。
≪図1≫
Sponsored Link
- Relative Articles
- SourceForge.netコミュニティ 2009年 受賞作発表 - (2009/07/31 13:42)
- XAMPP チュートリアル - 動画で解説 - (2008/11/23 23:48)
- PHP開発環境を10分で構築するチュートリアル - (2008/11/23 23:28)
- FireBugを使いこなす - その2 – FireBugを使ってみる - (2008/11/22 12:21)
- FireBugを使いこなす - その1 - FireBugのインストール - (2008/11/22 12:20)
- 動画で学ぶExt JSデザイナーの使い方 - (2008/11/12 23:23)
- Google Chromeを使ってみる – 図解Google Chrome - (2008/09/04 16:21)
- サンプルから学ぶHttpUnitの使い方 - (2008/05/08 16:51)
- WEBアプリケーションテストフレームワークHttpUnitのインストール及びHttpUnit基本 - (2008/05/08 14:56)
- HttpUnitでJavascriptを無効するには - (2008/05/08 14:27)
- DWR入門 - Hello World DWR - (2008/04/29 23:16)
- DWRを利用してAjaxで特定な画面のみタイムアウトをさせない - (2008/04/23 21:41)
- DWR+JSONでクライアントとサーバ側間でJSON形式のデータ変換処理 - (2008/03/28 23:50)
- JSON入門 - JavaScriptでJSONデータを評価する - (2008/03/28 00:07)
- JSON入門 - JSONの基本的な形式例 - (2008/03/27 23:49)