現代の企業において、データに基づく意思決定の重要性はますます高まっています。販売分析から市場動向の追跡、プロジェクトのパフォーマンス評価に至るまで、分かりやすく視覚化されたデータは、分析効率を高めるだけでなく、経営層の意思決定にも自信を与えます。Excel は企業で最も一般的に使われるデータ分析ツールとして、表やグラフの機能が日常業務に欠かせません。しかし、数百件、数千件のデータを扱ったり、定期的なレポートを作成する場合、手作業でグラフを作るのは時間がかかり、ミスも起こりやすくなります。そこで Python の豊富なライブラリと強力なデータ処理能力を活用し、Excel グラフを自動生成することで、データの正確性を保ちながら作業効率を大幅に向上させることができます。
本記事では Free Spire.XLS for Python を使用して、Excel 上で棒グラフ、折れ線グラフ、円グラフ、バブルチャートを作成する方法を紹介します。実際の業務データを例に、自動化された可視化スキルを素早く習得できるように解説します。
1. 環境準備とライブラリのインストール
まずは Free Spire.XLS for Python をインストールします。
pip install spire.xls.free
インストールが完了したら、Excel ワークブックを作成し、データの準備を行います。以下は簡単な Excel ファイル作成の例です。
from spire.xls import Workbook
# 新しいワークブックを作成
wb = Workbook()
sheet = wb.Worksheets[0]
sheet.Name = "販売データ"
# 初期ファイルを保存
wb.SaveToFile("SalesData.xlsx")
wb.Dispose()
print("Excel ファイルを作成しました:SalesData.xlsx")
補足:
Workbook オブジェクトは Excel ファイル全体を表し、Worksheets[0] は最初のワークシートを取得します。ここでは「販売データ」というワークシートを作成し、後続のデータ入力やグラフ作成の準備をしています。
なお、新規作成したワークブックにはデフォルトで Sheet1、Sheet2、Sheet3 が存在します。必要に応じて編集したり、削除して再作成することも可能です。
2. Excel に業務データを書き込む
ここでは、ある四半期における地域別の販売額を分析すると仮定します。コード内で直接データを生成してみます。
from spire.xls import Workbook
wb = Workbook()
sheet = wb.Worksheets[0]
sheet.Name = "販売データ"
# ヘッダーを書き込む
headers = ["地域", "製品", "販売額(百万円)"]
for col, header in enumerate(headers, start=1):
sheet.Range[1, col].Text = header
# 日本語環境のサンプルデータを書き込む
sales_data = [
["関東", "ノートパソコン", 120],
["関東", "タブレット", 85],
["関西", "ノートパソコン", 95],
["関西", "タブレット", 70],
["九州", "ノートパソコン", 110],
["九州", "タブレット", 90],
]
for row, data in enumerate(sales_data, start=2):
for col, value in enumerate(data, start=1):
if isinstance(value, str):
sheet.Range[row, col].Value = value
else:
sheet.Range[row, col].NumberValue = value
# 列幅を自動調整
sheet.Range.AutoFitColumns()
wb.SaveToFile("SalesData.xlsx")
wb.Dispose()
print("業務データを Excel に書き込みました")
ワークシートプレビュー
補足:
ここでは、3つの地域と2種類の製品の四半期販売データを例示しています。実際の業務に近いデータを用いることで、より意味のあるグラフを作成できます。
3. 棒グラフの作成:地域別製品販売の比較
棒グラフはカテゴリ間の比較に適しています。販売額を元に棒グラフを作成します。
from spire.xls import Workbook, ExcelChartType, Color
wb = Workbook()
wb.LoadFromFile("SalesData.xlsx")
sheet = wb.Worksheets[0]
# 棒グラフを追加
chart = sheet.Charts.Add()
chart.DataRange = sheet.Range["A1:C7"] # ヘッダーとデータを含む
chart.SeriesDataFromRange = False # 列単位で系列を取得
# グラフの位置を設定
chart.LeftColumn = 1
chart.TopRow = 8
chart.RightColumn = 10
chart.BottomRow = 25
# グラフタイプを設定
chart.ChartType = ExcelChartType.ColumnClustered
chart.ChartTitle = "地域別製品販売額比較"
chart.ChartTitleArea.IsBold = True
chart.ChartTitleArea.Size = 12
# 軸のタイトルを設定
chart.PrimaryCategoryAxis.Title = "地域"
chart.PrimaryValueAxis.Title = "販売額(百万円)"
# 色とデータラベルを設定
for cs in chart.Series:
cs.Format.Options.IsVaryColor = True
cs.DataPoints.DefaultDataPoint.DataLabels.HasValue = True
wb.SaveToFile("SalesChart_Column.xlsx")
wb.Dispose()
print("棒グラフを作成しました:SalesChart_Column.xlsx")
ワークシートプレビュー
補足:
chart.DataRange でデータ範囲を指定し、chart.ChartType でグラフの種類を設定します。DataLabels を有効にすると、各データポイントの値を表示でき、グラフがより直感的になります。
4. 折れ線グラフの作成:販売トレンドの把握
折れ線グラフは、販売の推移や時間変化を可視化するのに適しています。
from spire.xls import Workbook, ExcelChartType
wb = Workbook()
wb.LoadFromFile("SalesData.xlsx")
sheet = wb.Worksheets[0]
chart_line = sheet.Charts.Add()
chart_line.DataRange = sheet.Range["A1:C7"]
chart_line.SeriesDataFromRange = False
chart_line.LeftColumn = 1
chart_line.TopRow = 9
chart_line.RightColumn = 9
chart_line.BottomRow = 29
chart_line.ChartType = ExcelChartType.Line
chart_line.ChartTitle = "販売トレンド分析"
chart_line.ChartTitleArea.IsBold = True
chart_line.ChartTitleArea.Size = 12
chart_line.PrimaryCategoryAxis.Title = "地域"
chart_line.PrimaryValueAxis.Title = "販売額(百万円)"
wb.SaveToFile("SalesChart_Line.xlsx")
wb.Dispose()
print("折れ線グラフを作成しました:SalesChart_Line.xlsx")
ワークシートプレビュー
補足:
折れ線グラフにより、地域ごとの製品販売の変化トレンドが一目で分かり、経営者はデータの動きを迅速に把握できます。
5. 円グラフの作成:製品別販売比率の表示
円グラフは、総販売額に占める各製品の割合を示すのに適しています。
from spire.xls import Workbook, ExcelChartType
wb = Workbook()
wb.LoadFromFile("SalesData.xlsx")
sheet = wb.Worksheets[0]
chart_pie = sheet.Charts.Add()
chart_pie.DataRange = sheet.Range["B2:C7"] # 製品と販売額
chart_pie.SeriesDataFromRange = False
chart_pie.LeftColumn = 1
chart_pie.TopRow = 10
chart_pie.RightColumn = 8
chart_pie.BottomRow = 30
chart_pie.ChartType = ExcelChartType.Pie
chart_pie.ChartTitle = "製品別販売比率"
chart_pie.ChartTitleArea.IsBold = True
chart_pie.ChartTitleArea.Size = 12
# カテゴリ名と割合を表示
chart_pie.Series[0].DataPoints.DefaultDataPoint.DataLabels.HasCategoryName = True
chart_pie.Series[0].DataPoints.DefaultDataPoint.DataLabels.HasPercentage = True
wb.SaveToFile("SalesChart_Pie.xlsx")
wb.Dispose()
print("円グラフを作成しました:SalesChart_Pie.xlsx")
ワークシートプレビュー
補足:
円グラフは各製品の総販売額に占める比率を直感的に示し、主力製品や市場分布の分析に役立ちます。
6. バブルチャートの作成:三次元データの可視化
バブルチャートは、地域、製品販売額、利益率など、3つの指標を同時に可視化できます。
from spire.xls import Workbook, ExcelChartType
wb = Workbook()
wb.LoadFromFile("SalesData.xlsx")
sheet = wb.Worksheets[0]
# 利益率列を追加
profit_rates = [0.15, 0.12, 0.13, 0.10, 0.14, 0.11]
for i, rate in enumerate(profit_rates, start=2):
sheet.Range[i, 4].NumberValue = rate
sheet.Range[1, 4].Text = "利益率"
chart_bubble = sheet.Charts.Add(ExcelChartType.Bubble)
chart_bubble.DataRange = sheet.Range["B1:D7"]
chart_bubble.SeriesDataFromRange = False
chart_bubble.Series[0].Bubbles = sheet.Range["D2:D7"] # バブルの大きさ
chart_bubble.LeftColumn = 1
chart_bubble.TopRow = 10
chart_bubble.RightColumn = 11
chart_bubble.BottomRow = 29
chart_bubble.ChartTitle = "販売額と利益率のバブルチャート"
chart_bubble.ChartTitleArea.IsBold = True
chart_bubble.ChartTitleArea.Size = 12
wb.SaveToFile("SalesChart_Bubble.xlsx")
wb.Dispose()
print("バブルチャートを作成しました:SalesChart_Bubble.xlsx")
ワークシートプレビュー
補足:
バブルチャートは販売額だけでなく、バブルの大きさで利益率を表すことで、多次元データの可視化を実現しています。
7. 技術的なポイントのまとめと主要クラス・メソッドの概観
これまでの章では、Free Spire.XLS for Python を使って棒グラフ、折れ線グラフ、円グラフ、バブルチャートを作成する方法を紹介しました。技術的な観点から見ると、グラフ作成の核心プロセスは以下の主要ステップに整理できます。
Python での Excel グラフ作成ステップまとめ
-
データの準備
業務データを Excel ワークシートに書き込みます。データの形式や範囲はグラフ作成の要件に沿っている必要があります。たとえば、数値列は Y 軸用、カテゴリ列は X 軸または分類用に使用します。 -
グラフオブジェクトの追加
sheet.Charts.Add()を使ってグラフオブジェクトを作成し、chart.DataRangeでデータソースを指定します。 -
グラフの種類と位置の設定
chart.ChartTypeでグラフの種類(棒グラフ、折れ線グラフ、円グラフ、バブルチャートなど)を選択し、LeftColumn、TopRow、RightColumn、BottomRowでワークシート上の位置を正確に指定します。 -
タイトルと軸情報の設定
chart.ChartTitle、PrimaryCategoryAxis.Title、PrimaryValueAxis.Titleなどのプロパティで、グラフや軸にタイトルを設定します。フォントサイズや太字も指定可能です。 -
グラフの装飾
系列の色設定cs.Format.Fill.ForeColor、データラベルDataLabels.HasValue、凡例の位置などを調整して、見やすさと視覚的な美しさを向上させます。 -
ファイルの保存
wb.SaveToFile()を使用して、作成したグラフを指定したファイルに保存します。
主要クラス・メソッド・プロパティ
| クラス / メソッド / プロパティ | 説明 |
|---|---|
Workbook |
Excel ワークブックオブジェクト。作成、読み込み、保存が可能 |
Workbook.LoadFromFile() |
ローカルファイルから Excel ワークブックを読み込む |
Workbook.SaveToFile() |
Excel ファイルを指定したパスに保存 |
Worksheet |
単一のワークシートを表す。データ操作やグラフ作成の主体オブジェクト |
sheet.Range[row, col] |
指定セルの値を取得・設定 |
sheet.Charts.Add() |
ワークシートに新しいグラフオブジェクトを作成 |
chart.DataRange |
グラフのデータソース範囲を指定 |
chart.SeriesDataFromRange |
系列データの方向を設定(行単位または列単位) |
chart.ChartType |
グラフの種類を設定(棒グラフ、折れ線グラフ、円グラフ、バブルチャートなど) |
chart.ChartTitle |
グラフタイトルを設定 |
chart.PrimaryCategoryAxis.Title |
X 軸のタイトルを設定 |
chart.PrimaryValueAxis.Title |
Y 軸のタイトルを設定 |
これらの主要クラス、メソッド、プロパティを理解することで、さまざまなタイプのグラフを柔軟に作成し、業務ニーズに応じて細かくカスタマイズできます。技術的なポイントを押さえることで、実際のプロジェクトで高品質かつ読みやすい Excel の可視化レポートを迅速に生成し、コードの簡潔性と保守性も維持できます。
まとめ
本記事では、実際の業務データを例に、Free Spire.XLS for Python を使って Excel で棒グラフ、折れ線グラフ、円グラフ、バブルチャートを作成する方法を解説しました。プログラムによるグラフ作成により、手作業の煩雑さやミスを避けつつ、大量データや複雑な分析にも対応できます。
このスキルを習得すれば、データ分析とレポート作成を完全に自動化でき、時間を節約し効率を向上させるとともに、意思決定に信頼できる可視化を提供できます。さらに、Free Spire.XLS の条件付き書式、データ検証、数式操作などの機能と組み合わせることで、より高度な Excel 自動化ワークフローを構築し、企業のデータ価値を最大限に引き出すことが可能です。Python での Excel 操作についてさらに学びたい方は、Spire.XLS for Python 公式チュートリアル をご参照ください。




