Webサイト制作コースのお申し込みはこちら Webサイト制作コースのお申し込みはこちら

Javaでのプログラミング学習を始めたばかりの方は、グラフ描画の処理なんて難しそうで自分には出来ないだろうと思っている方も多いのではないでしょうか。

本記事では、Java初心者の方でも簡単にグラフ描画処理を実現出来る「JFreeChart」の使い方をご紹介していきます。

JFreeChartについて


JFreeChartは、円グラフや棒グラフをはじめ、様々なグラフを描画する機能がまとまったJava用のライブラリです。

JFreeChartの機能

JFreeChartでは、グラフとして表示するデータをライブラリの機能に渡すことで、簡単にグラフ描画の処理を実施してくれる機能が提供されています。

グラフはJavaのSwingで画面上に表示する以外にも、JPEGやPNGといった画像形式で出力することも可能です。

JFreeChartのダウンロード

JFreeChartのGitHubページにアクセスすると、ソースコードが公開されているため、自由にダウンロードして利用することが可能です。

他にもSOURCEFORGEなどからzipファイルとしてダウンロードし、jarファイルのみを利用することも出来ます。

円グラフを描画するJavaサンプルプログラム


まずはグラフの中でも利用されることの多い「円グラフ」をJFreeChartで描画してみましょう。

サンプルコード

package chart;

import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartFrame;
import org.jfree.chart.JFreeChart;
import org.jfree.data.general.DefaultPieDataset;

public class Main {
	public static void main(String args[]) {
		
        DefaultPieDataset dpd = new DefaultPieDataset();
        dpd.setValue("関東", 45);
        dpd.setValue("関西", 23);
        dpd.setValue("東北", 12);
        dpd.setValue("中国・四国", 7);
        dpd.setValue("九州", 13);

        JFreeChart chart=ChartFactory.createPieChart3D("イベント参加者比率", dpd, true, false, false);

        ChartFrame ch = new ChartFrame("円グラフサンプル", chart);
        ch.setVisible(true);
        ch.setSize(800, 600);
	}

}

実行すると下記画像のように円グラフが表示されます。

解説

円グラフ用のデータセットは11行目でインスタンス化を実施している「DefaultPieDataset」を利用します。

12~16行目ではsetValueメソッドを使用して、表示名と何%割り振るのかを決めています。

3Dの円グラフを描画するには18行目で記述しているように「createPieChart3D」メソッドを利用することで描画可能です。

20行目が実際にフレームに表示するためのオブジェクトを作成している部分で、18行目で作成したグラフ情報を設定することで、フレーム上にグラフが表示出来るようになります。

棒グラフを描画するJavaサンプルプログラム


続いて同じく利用される機会の多い「棒グラフ」をJFreeChartで描画していきます。

サンプルコード

package chart;

import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartFrame;
import org.jfree.chart.JFreeChart;
import org.jfree.data.category.DefaultCategoryDataset;

public class Main {
	public static void main(String args[]) {
		
        DefaultCategoryDataset dcd = new DefaultCategoryDataset();
        dcd.addValue(1000, "北海道支社", "2018");
        dcd.addValue(400, "北海道支社", "2019");
        dcd.addValue(600, "北海道支社", "2020");
        dcd.addValue(800, "兵庫支社", "2018");
        dcd.addValue(900, "兵庫支社", "2019");
        dcd.addValue(500, "兵庫支社", "2020");

        JFreeChart chart=ChartFactory.createBarChart3D("年度別売上", "年度", "万円", dcd);

        ChartFrame ch = new ChartFrame("棒グラフサンプル", chart);
        ch.setVisible(true);
        ch.setSize(800, 600);
	}

}

実行結果が下記です。

解説

棒グラフ用のデータセットには11行目で指定している「DefaultCategoryDataset」を利用します。

12~17行目の値の設定方法も、DefaultCategoryDatasetでは「addValue」メソッドを使用します。

19行目が棒グラフを指定する部分で「createBarChart3D」メソッドを利用することで描画することが可能です。

ガントチャートを描画するJavaサンプルプログラム


スケジュール管理で利用するガントチャートをグラフとして表示したいという要望も多いので、「ガントチャート」もJFreeChartで描画してみましょう。

サンプルコード

package chart;

import java.util.Calendar;
import java.util.Date;

import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartFrame;
import org.jfree.chart.JFreeChart;
import org.jfree.data.gantt.Task;
import org.jfree.data.gantt.TaskSeries;
import org.jfree.data.gantt.TaskSeriesCollection;



public class Main {
	public static void main(String args[]) {
		
		TaskSeriesCollection data = new TaskSeriesCollection();
		
		TaskSeries series = new TaskSeries("スケジュール");
		
		Task task1 = new Task("要件定義", formatData(2021, 4, 1), formatData(2021, 6, 30));
		Task task2 = new Task("基本設計", formatData(2021, 7, 1), formatData(2021, 9, 30));
		Task task3 = new Task("詳細設計", formatData(2021, 10, 1), formatData(2022, 1, 31));
		Task task4 = new Task("開発", formatData(2022, 2, 1), formatData(2022, 6, 30));
		Task task5 = new Task("テスト", formatData(2022, 3, 1), formatData(2022, 8, 31));
		Task task6 = new Task("運用", formatData(2022, 9, 1), formatData(2023, 8, 31));
		
		series.add(task1);
		series.add(task2);
		series.add(task3);
		series.add(task4);
		series.add(task5);
		series.add(task6);
		
		data.add(series);

        JFreeChart chart=ChartFactory.createGanttChart("Sampleプロジェクト", "工程", "日程", data);

        ChartFrame ch = new ChartFrame("ガントチャートサンプル", chart);
        ch.setVisible(true);
        ch.setSize(800, 600);
	}
	
	static Date formatData(int year, int month, int date){
	    Calendar calendar = Calendar.getInstance();
	    calendar.set(year, month - 1, date);
	    return calendar.getTime();
	  }

}

実行結果が下記の画像です。

解説

ガントチャート作成には「TaskSeriesCollection」と「TaskSeries」と呼ばれる2つのデータセットを利用します。

29~36行目で実施しているように、2つのデータセットでは「add」メソッドを使用してデータの設定を実施します。

38行目がガントチャートを指定する部分で「createGanttChart」メソッドを利用することで描画することが可能です。

さいごに: Javaでグラフを描画するならライブラリを活用しよう


本記事では、Javaでグラフを描画する際に役立つ「JFreeChart」についてサンプルコードを掲載しながらご紹介してきました。

基本的な流れはグラフの種類に関わらずほとんど同じで、グラフの種類によって若干記述を修正するだけで様々なグラフを描画することが可能です。

JFreeChart以外にも様々なライブラリが提供されているので、ご自身の要望に合ったライブラリを見つけて手軽にJavaでのグラフ描画を実現してみてください。

エンジニアになりたい人に選ばれるプログラミングスクール「ポテパンキャンプ 」

ポテパンキャンプは卒業生の多くがWebエンジニアとして活躍している実践型プログラミングスクールです。 1000名以上が受講しており、その多くが上場企業、ベンチャー企業のWebエンジニアとして活躍しています。

基礎的な学習だけで満足せず、実際にプログラミングを覚えて実践で使えるレベルまで学習したいという方に人気です。 プログラミングを学習し実践で使うには様々な要素が必要です。

それがマルっと詰まっているポテパンキャンプでプログラミングを学習してみませんか?

卒業生の多くがWebエンジニアとして活躍

卒業生の多くがWeb企業で活躍しております。
実践的なカリキュラムをこなしているからこそ現場でも戦力となっております。
活躍する卒業生のインタビューもございますので是非御覧ください。

経験豊富なエンジニア陣が直接指導

実践的なカリキュラムと経験豊富なエンジニアが直接指導にあたります。
有名企業のエンジニアも多数在籍し品質高いWebアプリケーションを作れるようサポートします。

満足度高くコスパの高いプログラミングスクール「ポテパンキャンプ」

運営する株式会社ポテパンは10,000人以上のエンジニアのキャリアサポートを行ってきております。
そのノウハウを活かして実践的なカリキュラムを随時アップデートしております。

代表の宮崎もプログラミングを覚えサイトを作りポテパンを創業しました。
本気でプログラミングを身につけたいという方にコスパ良く受講していただきたいと思っておりますので、気になる方はぜひスクール詳細をのぞいてくださいませ。