Javaグラフとチャート:データの可視化

この記事では、Javaでグラフやチャートを描画し、データを可視化する方法について解説します。ここでは、Javaで有名なグラフライブラリ JFreeChart を使用します。

目次

  1. JFreeChartの導入
  2. 折れ線グラフの作成
  3. 円グラフの作成
  4. 棒グラフの作成

JFreeChartの導入

JFreeChart ライブラリを使用するには、まずライブラリをプロジェクトに追加する必要があります。MavenやGradleを使っている場合は、依存関係を追加することができます。

Maven

<dependency>
  <groupId>org.jfree</groupId>
  <artifactId>jfreechart</artifactId>
  <version>1.5.3</version>
</dependency>

Gradle

implementation 'org.jfree:jfreechart:1.5.3'

折れ線グラフの作成

import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartPanel;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.plot.PlotOrientation;
import org.jfree.data.category.CategoryDataset;
import org.jfree.data.category.DefaultCategoryDataset;
import org.jfree.ui.ApplicationFrame;
import org.jfree.ui.RefineryUtilities;

public class LineChartExample extends ApplicationFrame {

  public LineChartExample(String applicationTitle) {
    super(applicationTitle);
    JFreeChart lineChart = ChartFactory.createLineChart(
        "Monthly Sales Data",
        "Month",
        "Sales",
        createDataset(),
        PlotOrientation.VERTICAL,
        true,
        true,
        false
    );

    ChartPanel chartPanel = new ChartPanel(lineChart);
    chartPanel.setPreferredSize(new java.awt.Dimension(560, 367));
    setContentPane(chartPanel);
  }

  private CategoryDataset createDataset() {
    final String productA = "Product A";
    final String productB = "Product B";

    final String january = "January";
    final String february = "February";
    final String march = "March";

    final DefaultCategoryDataset dataset = new DefaultCategoryDataset();

    dataset.addValue(100, productA, january);
    dataset.addValue(150, productA, february);
    dataset.addValue(200, productA, march);

    dataset.addValue(50, productB, january);
    dataset.addValue(80, productB, february);
    dataset.addValue(150, productB, march);

    return dataset;
  }

  public static void main(String[] args) {
    LineChartExample chart = new LineChartExample("Monthly Sales Data");
    chart.pack();
    RefineryUtilities.centerFrameOnScreen(chart);
    chart.setVisible(true);
  }
}

円グラフの作成

import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartPanel;
import org.jfree.chart.JFreeChart;
import org.jfree.data.general.DefaultPieDataset;
import org.jfree.ui.ApplicationFrame;
import org.jfree.ui.RefineryUtilities;

public class PieChartExample extends ApplicationFrame {

  public PieChartExample(String title) {
    super(title);
    DefaultPieDataset dataset = createDataset();
    JFreeChart chart = ChartFactory.createPieChart(
        "Market Share",
        dataset,
        true,
        true,
        false
    );

    ChartPanel chartPanel = new ChartPanel(chart);
    setContentPane(chartPanel);
  }

  private DefaultPieDataset createDataset() {
    DefaultPieDataset dataset = new DefaultPieDataset();
    dataset.setValue("Product A", 30);
    dataset.setValue("Product B", 20);
    dataset.setValue("Product C", 50);
    return dataset;
  }

  public static void main(String[] args) {
    PieChartExample chart = new PieChartExample("Market Share");
    chart.pack();
    RefineryUtilities.centerFrameOnScreen(chart);
    chart.setVisible(true);
  }
}

棒グラフの作成

import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartPanel;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.plot.PlotOrientation;
import org.jfree.data.category.CategoryDataset;
import org.jfree.data.category.DefaultCategoryDataset;
import org.jfree.ui.ApplicationFrame;
import org.jfree.ui.RefineryUtilities;

public class BarChartExample extends ApplicationFrame {

  public BarChartExample(String title) {
    super(title);
    JFreeChart barChart = ChartFactory.createBarChart(
        "Yearly Sales",
        "Year",
        "Sales",
        createDataset(),
        PlotOrientation.VERTICAL,
        true,
        true,
        false
    );

    ChartPanel chartPanel = new ChartPanel(barChart);
    chartPanel.setPreferredSize(new java.awt.Dimension(560, 367));
    setContentPane(chartPanel);
  }

  private CategoryDataset createDataset() {
    final String productA = "Product A";
    final String productB = "Product B";

    final String year2015 = "2015";
    final String year2016 = "2016";
    final String year2017 = "2017";

    final DefaultCategoryDataset dataset = new DefaultCategoryDataset();

    dataset.addValue(100, productA, year2015);
    dataset.addValue(150, productA, year2016);
    dataset.addValue(200, productA, year2017);

    dataset.addValue(50, productB, year2015);
    dataset.addValue(80, productB, year2016);
    dataset.addValue(150, productB, year2017);

    return dataset;
  }

  public static void main(String[] args) {
    BarChartExample chart = new BarChartExample("Yearly Sales");
    chart.pack();
    RefineryUtilities.centerFrameOnScreen(chart);
    chart.setVisible(true);
  }
}

この記事を参考にして、Javaでグラフやチャートを描画してデータを可視化してみましょう。それでは、Happy coding!