めっちゃかんたんなので、おすすめです。
JFreeChartの入手
mavenを使って入手
pom.xmlは、こんな感じ。
1 2 3 4 5 6 | <!-- https://mvnrepository.com/artifact/org.jfree/jfreechart --> <dependency> <groupId>org.jfree</groupId> <artifactId>jfreechart</artifactId> <version>1.5.4</version> </dependency> |
手動で入手
手動で入手するのであれば、以下のjarを入手しましょう。
依存関係が無いので、ここで探しても良いかもです。
- jfreechart-1.5.4.jar
※2024年5月現在です。
Java JFreeChartを使って、棒グラフの画像を出力するサンプル
JFreeChartを使って、棒グラフの画像ファイル(PNG形式)を出力します。
データは2系列です。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 | import java.awt.Font; import java.io.File; import java.io.IOException; import org.jfree.chart.ChartFactory; import org.jfree.chart.ChartUtils; import org.jfree.chart.JFreeChart; import org.jfree.data.category.DefaultCategoryDataset; public class JFreeChartTest { public static void main(String[] args) throws IOException { //タイトルのフォントを指定 Font font = new Font("MS Pゴシック", Font.BOLD, 18); //データセットの作成 DefaultCategoryDataset dataset = new DefaultCategoryDataset(); dataset.addValue(1.0, "系列1", "A"); dataset.addValue(2.0, "系列1", "B"); dataset.addValue(3.0, "系列1", "C"); dataset.addValue(4.0, "系列1", "D"); dataset.addValue(5.0, "系列1", "E"); dataset.addValue(5.0, "系列2", "A"); dataset.addValue(4.0, "系列2", "B"); dataset.addValue(3.0, "系列2", "C"); dataset.addValue(2.0, "系列2", "D"); dataset.addValue(1.0, "系列2", "E"); //グラフの作成 JFreeChart chart = ChartFactory.createBarChart( "折れ線グラフのサンプル", "X軸", "Y軸", dataset ); chart.getTitle().setFont(font); chart.getCategoryPlot().getDomainAxis().setLabelFont(font); chart.getCategoryPlot().getRangeAxis().setLabelFont(font); chart.getLegend().setItemFont(font); //グラフを画像ファイルに出力 ChartUtils.saveChartAsPNG(new File("D:\\work\\JFreeChartTest.png"), chart, 800, 600); } } |
実行結果
こんな画像ファイルが出力されます。
サンプルの解説
ChartFactory.createBarChart(String,String,String,CategoryDataset)で、チャートが作れます。
第1~第3引数が、タイトルとラベル、第4引数がデータセットです。
また、フォントを必ずセットしておきましょう。セットしないと日本語は出ません。
あとは、ChartUtils.saveChartAsPNG(File,JFreeChart,int,int)で、画像ファイルに出力だけですね。
PNGまたはJPEG形式で出力できます。