はじめに
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を組み合わせることで、簡単かつ柔軟に実現可能です。業務システムの可視化やレポート出力など、幅広い活用が期待できます。