JavaでCSVを解析しグラフ出力する方法【JFreeChart入門】

はじめに

JavaでCSVファイルからデータを読み取り、それをグラフとして可視化したい場合、JFreeChartというライブラリが非常に便利です。本記事では、以下の内容をサンプル付きで解説します。

  • CSVファイルの読み取り(OpenCSV使用)
  • データの集計と整形
  • JFreeChartを使ったグラフ描画(折れ線・棒グラフなど)
  • グラフ画像の保存

必要なライブラリ

Maven依存関係

<!-- OpenCSV -->
<dependency>
  <groupId>com.opencsv</groupId>
  <artifactId>opencsv</artifactId>
  <version>5.7.1</version>
</dependency>

<!-- JFreeChart -->
<dependency>
  <groupId>org.jfree</groupId>
  <artifactId>jfreechart</artifactId>
  <version>1.5.4</version>
</dependency>

サンプルCSV(sample.csv)

日付,売上
2024-06-01,1200
2024-06-02,1500
2024-06-03,1800
2024-06-04,1400

CSVを読み込んでデータセットに変換

import com.opencsv.CSVReader;
import org.jfree.data.category.DefaultCategoryDataset;

import java.io.FileReader;

public class CSVLoader {
    public static DefaultCategoryDataset loadDataset(String path) throws Exception {
        DefaultCategoryDataset dataset = new DefaultCategoryDataset();
        try (CSVReader reader = new CSVReader(new FileReader(path))) {
            String[] line;
            reader.readNext(); // ヘッダーをスキップ
            while ((line = reader.readNext()) != null) {
                String date = line[0];
                int value = Integer.parseInt(line[1]);
                dataset.addValue(value, "売上", date);
            }
        }
        return dataset;
    }
}

グラフを作成して保存(折れ線グラフ)

import org.jfree.chart.ChartFactory;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.ChartUtils;
import org.jfree.data.category.CategoryDataset;

import java.io.File;

public class GraphExporter {
    public static void exportLineChart(CategoryDataset dataset, String outputPath) throws Exception {
        JFreeChart chart = ChartFactory.createLineChart(
                "売上推移", "日付", "金額",
                dataset
        );
        ChartUtils.saveChartAsPNG(new File(outputPath), chart, 800, 600);
        System.out.println("グラフ画像を保存しました:" + outputPath);
    }
}

実行クラス

public class Main {
    public static void main(String[] args) throws Exception {
        String csvPath = "sample.csv";
        String outputPath = "sales_chart.png";

        var dataset = CSVLoader.loadDataset(csvPath);
        GraphExporter.exportLineChart(dataset, outputPath);
    }
}

実行結果

  • 「sales_chart.png」が出力され、CSVの売上推移をグラフとして確認できます。
  • グラフの種類を棒グラフや円グラフに切り替えることも可能です(ChartFactory.createBarChartなど)。

応用例

  • 月別売上のグルーピング
  • 複数系列の比較(部門別、地域別など)
  • SwingやWebアプリへのグラフ埋め込み

まとめ

CSVファイルを使ったグラフ生成は、データ可視化やレポート出力の自動化に非常に有効です。JavaでもOpenCSVとJFreeChartを組み合わせることで、簡単かつ柔軟に実現可能です。業務システムの可視化やレポート出力など、幅広い活用が期待できます。

タイトルとURLをコピーしました