0
0

More than 1 year has passed since last update.

JavaでExcelの円グラフを作成する方法

Last updated at Posted at 2022-07-21

円グラフは、サークルチャートとも呼ばれ、各成分の全体的な比率を直接グラフ化することができます。円グラフは、抽象的なデータをより素早く、直感的に分析するのに役立ちます。この記事では、Javaで円グラフを作成する方法を紹介します。

本記事では、以下の4点を中心に解説します。

【依存関係の追加】

この方法は、無償のFree Spire.XLS for Javaが必要ですので、先にjarファイルをインポートしてください。

1. Maven

Maven を使用している場合、プロジェクトの pom.xml ファイルに以下のコードを追加することで、簡単にアプリケーションに JAR ファイルをインポートすることができます。

<repositories>
    <repository>
        <id>com.e-iceblue</id>
        <name>e-iceblue</name>
        <url>https://repo.e-iceblue.com/nexus/content/groups/public/</url>
    </repository>
</repositories>
<dependencies>
    <dependency>
        <groupId>e-iceblue</groupId>
        <artifactId>spire.xls.free</artifactId>
        <version>5.1.0</version>
    </dependency>
</dependencies>

2. 公式サイトよりJarファイルをダウンロード

まず、Free Spire.XLS for Java の公式サイトよりzipファイルをダウンロードします。zipファイルを解凍し、libフォルダの下にあるSpire.Xls.jarファイルを依存関係としてプロジェクトにインポートしてください。

円グラフを作成する

円グラフは通常の円グラフで、1つのデータ系列を円型に表示し、グラフの各部分が異なる項目を表すのに使われます。Spire.XLS for Javaでは、Excelワークシートに円グラフを追加するために、Worksheet.getCharts().add(ExcelChartType.Pie) メソッドを提供しています。

以下は、円グラフを作成するための詳細な手順です。

  • Workbookのインスタンスを作成します。
  • 指定したワークシートを取得するには、Workbook.getWorksheets().get(sheetIndex) メソッドを使用します。
  • ワークシートにデータを追加し、Excelのセルの値、スタイル、数値フォーマットを設定します。
  • Worksheet.getCharts().add(ExcelChartType.Pie) メソッドを使用して、ワークシートに円グラフを追加します。
  • Chart.setDataRange() メソッドで、チャートのデータ範囲を設定します。
  • チャートの位置とタイトルを設定します。
  • Workbook.saveToFile() メソッドで表ファイルを保存します。
import com.spire.xls.*;
import com.spire.xls.charts.ChartSerie;
import java.awt.*;

public class pieChart {

    public static void main(String[] args) throws Exception {
        //Workbookを作成する
        Workbook workbook = new Workbook();

        //最初のシートを取得し、その名前を設定する
        Worksheet sheet = workbook.getWorksheets().get(0);
        sheet.setName("円グラフ");

        //指定したセルの値を設定する
        sheet.getCellRange("A1").setValue("オペレーティングシステム");
        sheet.getCellRange("A2").setValue("Linux");
        sheet.getCellRange("A3").setValue("Mac OS");
        sheet.getCellRange("A4").setValue("Windows");
        sheet.getCellRange("A5").setValue("Unix");

        sheet.getCellRange("B1").setValue("ユーザー占有率");
        sheet.getCellRange("B2").setNumberValue(0.08);
        sheet.getCellRange("B3").setNumberValue(0.15);
        sheet.getCellRange("B4").setNumberValue(0.75);
        sheet.getCellRange("B5").setNumberValue(0.02);

        //セルのスタイルを設定する
        sheet.getCellRange("A1:B1").setRowHeight(15);
        sheet.getCellRange("A1").setColumnWidth(28);
        sheet.getCellRange("B1").setColumnWidth(20);
        sheet.getCellRange("A1:B1").getCellStyle().setColor(Color.darkGray);
        sheet.getCellRange("A1:B1").getCellStyle().getExcelFont().setColor(Color.white);
        sheet.getCellRange("A1:B1").getCellStyle().setVerticalAlignment(VerticalAlignType.Center);
        sheet.getCellRange("A1:B1").getCellStyle().setHorizontalAlignment(HorizontalAlignType.Center);

        //セルの数値フォーマットを設定する
        sheet.getCellRange("B2:C5").getCellStyle().setNumberFormat("0%");

        //円グラフを追加する
        Chart piechart = sheet.getCharts().add(ExcelChartType.Pie);

        //チャートのデータ範囲を設定する
        piechart.setDataRange(sheet.getCellRange("B2:B5"));
        piechart.setSeriesDataFromRange(false);

        //チャートの位置を設定する
        piechart.setLeftColumn(4);
        piechart.setTopRow(1);
        piechart.setRightColumn(10);
        piechart.setBottomRow(20);

        //グラフのタイトルを追加し、タイルのフォーマットを設定する
        piechart.setChartTitle("オペレーティングシステムのユーザー分布");
        piechart.getChartTitleArea().isBold(true);
        piechart.getChartTitleArea().setSize(12);

        ChartSerie cs = piechart.getSeries().get(0);
        cs.setCategoryLabels(sheet.getCellRange("A2:A5"));
        cs.setValues(sheet.getCellRange("B2:B5"));
        cs.getDataPoints().getDefaultDataPoint().getDataLabels().hasValue(true);
        piechart.getPlotArea().getFill().setVisible(false);

        //結果のファイルを保存する
        workbook.saveToFile("円グラフ.xlsx", ExcelVersion.Version2016);
        workbook.dispose();

    }
}

効果のイメージ図

2022-07-21_145334.png

分離型円グラフを作成する

分離型円グラフは、円グラフからすべてのスライスを取り出して、セクターを別々に表示するために使用されます。

分解型円グラフを作成する主な手順は次のとおりです。

  • Workbookのインスタンスを作成します。
  • Workbook.getWorksheets().get(sheetIndex) メソッドで、指定したワークシートを取得する。
  • ワークシートにデータを追加し、Excelのセルの値、スタイル、数値フォーマットを設定します。
  • Worksheet.getCharts().add(ExcelChartType.PieExploded) メソッドを使って、ワークシートに分離型円グラフを追加しています。
  • Chart.setDataRange() メソッドでチャートのデータ範囲を設定します。
  • チャートの位置とタイトルを設定する。
  • Workbook.saveToFile() メソッドでファイルを保存します。
import com.spire.xls.*;
import com.spire.xls.charts.ChartSerie;
import java.awt.*;

public class separatedPieChart {

    public static void main(String[] args) throws Exception {
        //Workbookを作成する
        Workbook workbook = new Workbook();

        //最初のシートを取得し、その名前を設定する
        Worksheet sheet = workbook.getWorksheets().get(0);
        sheet.setName("円グラフ");

        //指定したセルの値を設定する
        sheet.getCellRange("A1").setValue("オペレーティングシステム");
        sheet.getCellRange("A2").setValue("Linux");
        sheet.getCellRange("A3").setValue("Mac OS");
        sheet.getCellRange("A4").setValue("Windows");
        sheet.getCellRange("A5").setValue("Unix");

        sheet.getCellRange("B1").setValue("ユーザー占有率");
        sheet.getCellRange("B2").setNumberValue(0.08);
        sheet.getCellRange("B3").setNumberValue(0.15);
        sheet.getCellRange("B4").setNumberValue(0.75);
        sheet.getCellRange("B5").setNumberValue(0.02);

        //セルのスタイルを設定する
        sheet.getCellRange("A1:B1").setRowHeight(15);
        sheet.getCellRange("A1").setColumnWidth(28);
        sheet.getCellRange("B1").setColumnWidth(20);
        sheet.getCellRange("A1:B1").getCellStyle().setColor(Color.darkGray);
        sheet.getCellRange("A1:B1").getCellStyle().getExcelFont().setColor(Color.white);
        sheet.getCellRange("A1:B1").getCellStyle().setVerticalAlignment(VerticalAlignType.Center);
        sheet.getCellRange("A1:B1").getCellStyle().setHorizontalAlignment(HorizontalAlignType.Center);

        //セルの数値フォーマットを設定する
        sheet.getCellRange("B2:C5").getCellStyle().setNumberFormat("0%");

        //分離型円グラフを追加する
        Chart piechart = sheet.getCharts().add(ExcelChartType.PieExploded);

        //チャートのデータ範囲を設定する
        piechart.setDataRange(sheet.getCellRange("B2:B5"));
        piechart.setSeriesDataFromRange(false);

        //チャートの位置を設定する
        piechart.setLeftColumn(4);
        piechart.setTopRow(1);
        piechart.setRightColumn(10);
        piechart.setBottomRow(20);

        //グラフのタイトルを追加し、タイルのフォーマットを設定する
        piechart.setChartTitle("オペレーティングシステムのユーザー分布");
        piechart.getChartTitleArea().isBold(true);
        piechart.getChartTitleArea().setSize(12);

        ChartSerie cs = piechart.getSeries().get(0);
        cs.setCategoryLabels(sheet.getCellRange("A2:A5"));
        cs.setValues(sheet.getCellRange("B2:B5"));
        cs.getDataPoints().getDefaultDataPoint().getDataLabels().hasValue(true);
        piechart.getPlotArea().getFill().setVisible(false);

        //結果のファイルを保存する
        workbook.saveToFile("分離型円グラフ.xlsx", ExcelVersion.Version2016);
        workbook.dispose();
    }
}

効果のイメージ図

2022-07-21_145418.png

1つのスライスを分離した円グラフを作成する

このようなグラフを作るには、円グラフから1つのスライスを切り離すだけでよいのです。

ここでは、その詳しい手順をご紹介します。

  • Workbookのインスタンスを作成します。
  • Workbook.getWorksheets().get(sheetIndex) メソッドで、指定したワークシートを取得します。
  • ワークシートにデータを追加し、Excelセルの値、スタイル、数値フォーマットを設定します。
  • Worksheet.getCharts().add(ExcelChartType.Pie) メソッドを使ってワークシートに円グラフを追加します。
  • Chart.setDataRange() メソッドでチャートのデータ範囲を設定します。
  • チャートの位置とタイトルを設定。
  • Chart.getSeries().get(0).getDataPoints().get(1).getDataFormat().setPercent(20) メソッドで円グラフから特定の1つのスライスを切り離す。
  • Workbook.saveToFile() メソッドでファイルを保存します。
import com.spire.xls.*;
import com.spire.xls.charts.ChartSerie;
import java.awt.*;

public class pieChartWithOneSeparatedSlice {

    public static void main(String[] args) throws Exception {
        //Workbookを作成する
        Workbook workbook = new Workbook();

        //最初のシートを取得し、その名前を設定する
        Worksheet sheet = workbook.getWorksheets().get(0);
        sheet.setName("円グラフ");

        //指定したセルの値を設定する
        sheet.getCellRange("A1").setValue("オペレーティングシステム");
        sheet.getCellRange("A2").setValue("Linux");
        sheet.getCellRange("A3").setValue("Mac OS");
        sheet.getCellRange("A4").setValue("Windows");
        sheet.getCellRange("A5").setValue("Unix");

        sheet.getCellRange("B1").setValue("ユーザー占有率");
        sheet.getCellRange("B2").setNumberValue(0.08);
        sheet.getCellRange("B3").setNumberValue(0.15);
        sheet.getCellRange("B4").setNumberValue(0.75);
        sheet.getCellRange("B5").setNumberValue(0.02);

        //セルのスタイルを設定する
        sheet.getCellRange("A1:B1").setRowHeight(15);
        sheet.getCellRange("A1").setColumnWidth(28);
        sheet.getCellRange("B1").setColumnWidth(20);
        sheet.getCellRange("A1:B1").getCellStyle().setColor(Color.darkGray);
        sheet.getCellRange("A1:B1").getCellStyle().getExcelFont().setColor(Color.white);
        sheet.getCellRange("A1:B1").getCellStyle().setVerticalAlignment(VerticalAlignType.Center);
        sheet.getCellRange("A1:B1").getCellStyle().setHorizontalAlignment(HorizontalAlignType.Center);

        //セルの数値フォーマットを設定する
        sheet.getCellRange("B2:C5").getCellStyle().setNumberFormat("0%");

        //円グラフを追加する
        Chart piechart = sheet.getCharts().add(ExcelChartType.Pie);

        //チャートのデータ範囲を設定する
        piechart.setDataRange(sheet.getCellRange("B2:B5"));
        piechart.setSeriesDataFromRange(false);

        //チャートの位置を設定する
        piechart.setLeftColumn(4);
        piechart.setTopRow(1);
        piechart.setRightColumn(10);
        piechart.setBottomRow(20);

        //グラフのタイトルを追加し、タイルのフォーマットを設定する
        piechart.setChartTitle("オペレーティングシステムのユーザー分布");
        piechart.getChartTitleArea().isBold(true);
        piechart.getChartTitleArea().setSize(12);

        ChartSerie cs = piechart.getSeries().get(0);
        cs.setCategoryLabels(sheet.getCellRange("A2:A5"));
        cs.setValues(sheet.getCellRange("B2:B5"));
        cs.getDataPoints().getDefaultDataPoint().getDataLabels().hasValue(true);
        piechart.getPlotArea().getFill().setVisible(false);

        //円グラフから1つのスライスを切り離す
        piechart.getSeries().get(0).getDataPoints().get(1).getDataFormat().setPercent(20);

        //結果のファイルを保存する
        workbook.saveToFile("1つのスライスを分離した分離型円グラフ.xlsx", ExcelVersion.Version2016);
        workbook.dispose();
    }
}

効果のイメージ図

2022-07-21_145453.png

リンググラフを作成する

リンググラフとは、ドーナツのように中心が空洞になっているグラフのことです。リンググラフは、円グラフとは少し異なる方法でデータを表示します。

ここでは、リンググラフの詳しい作成手順をご紹介します。

  • Workbookのインスタンスを作成します。
  • Workbook.getWorksheets().get(sheetIndex) メソッドで、指定したワークシートを取得します。
  • ワークシートにデータを追加し、Excelのセルの値、スタイル、数値フォーマットを設定する。
  • Worksheet.getCharts().add(ExcelChartType.Doughnut) メソッドでワークシートにリンググラフを追加します。
  • Chart.setDataRange() メソッドでチャートのデータ範囲を設定します。
  • チャートの位置を設定し、タイトルを追加します。
  • Workbook.saveToFile() メソッドでファイルを保存します。
import com.spire.xls.*;
import com.spire.xls.charts.ChartSerie;
import java.awt.*;

public class ringChart {

    public static void main(String[] args) throws Exception {
        //Workbookを作成する
        Workbook workbook = new Workbook();

        //最初のシートを取得し、その名前を設定する
        Worksheet sheet = workbook.getWorksheets().get(0);
        sheet.setName("リンググラフ");

        //指定したセルの値を設定する
        sheet.getCellRange("A1").setValue("オペレーティングシステム");
        sheet.getCellRange("A2").setValue("Linux");
        sheet.getCellRange("A3").setValue("Mac OS");
        sheet.getCellRange("A4").setValue("Windows");
        sheet.getCellRange("A5").setValue("Unix");

        sheet.getCellRange("B1").setValue("ユーザー占有率");
        sheet.getCellRange("B2").setNumberValue(0.08);
        sheet.getCellRange("B3").setNumberValue(0.15);
        sheet.getCellRange("B4").setNumberValue(0.75);
        sheet.getCellRange("B5").setNumberValue(0.02);

        //セルのスタイルを設定する
        sheet.getCellRange("A1:B1").setRowHeight(15);
        sheet.getCellRange("A1").setColumnWidth(28);
        sheet.getCellRange("B1").setColumnWidth(20);
        sheet.getCellRange("A1:B1").getCellStyle().setColor(Color.darkGray);
        sheet.getCellRange("A1:B1").getCellStyle().getExcelFont().setColor(Color.white);
        sheet.getCellRange("A1:B1").getCellStyle().setVerticalAlignment(VerticalAlignType.Center);
        sheet.getCellRange("A1:B1").getCellStyle().setHorizontalAlignment(HorizontalAlignType.Center);

        //セルの数値フォーマットを設定する
        sheet.getCellRange("B2:C5").getCellStyle().setNumberFormat("0%");

        //リンググラフを追加する
        Chart piechart = sheet.getCharts().add(ExcelChartType.Doughnut);

        //チャートのデータ範囲を設定する
        piechart.setDataRange(sheet.getCellRange("B2:B5"));
        piechart.setSeriesDataFromRange(false);

        //チャートの位置を設定する
        piechart.setLeftColumn(4);
        piechart.setTopRow(1);
        piechart.setRightColumn(10);
        piechart.setBottomRow(20);

        //グラフのタイトルを追加し、タイルのフォーマットを設定する
        piechart.setChartTitle("オペレーティングシステムのユーザー分布");
        piechart.getChartTitleArea().isBold(true);
        piechart.getChartTitleArea().setSize(12);

        ChartSerie cs = piechart.getSeries().get(0);
        cs.setCategoryLabels(sheet.getCellRange("A2:A5"));
        cs.setValues(sheet.getCellRange("B2:B5"));
        cs.getDataPoints().getDefaultDataPoint().getDataLabels().hasValue(true);
        piechart.getPlotArea().getFill().setVisible(false);

        //結果のファイルを保存する
        workbook.saveToFile("リンググラフ.xlsx", ExcelVersion.Version2016);
        workbook.dispose();
    }
}

効果のイメージ図

2022-07-21_145632.png

【暖かいヒント】

Spire.XLS for Javaは、棒グラフ、散布図、折れ線グラフの作成もサポートしています。より多くの機能については、Excelフォーラムを参照してください。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0