【Python】エクセルワークシートにグラフを作成する方法

この記事では、必要なライブラリのインストールから、エクセルファイルの作成、データの入力、グラフの作成と配置、そしてファイルの保存まで、初心者でもわかりやすくステップバイステップで解説します。

さらに、よくあるエラーの対処法やデバッグのポイントも紹介しますので、安心して取り組むことができます。

目次から探す

必要なライブラリのインストールとインポート

Pythonでエクセルワークシートにグラフを作成するためには、いくつかのライブラリが必要です。

ここでは、主に使用する openpyxlmatplotlib のインストール方法とインポート方法について説明します。

ライブラリのインストール

まずは、必要なライブラリをインストールしましょう。

Pythonのパッケージ管理ツールであるpipを使用してインストールします。

openpyxl

openpyxlは、Pythonでエクセルファイルを操作するためのライブラリです。

エクセルファイルの読み書きや編集が可能です。

インストールコマンド:

pip install openpyxl

matplotlib

matplotlibは、Pythonでグラフを作成するためのライブラリです。

多様なグラフを簡単に作成することができます。

インストールコマンド:

pip install matplotlib

ライブラリのインポート

ライブラリをインストールしたら、次にPythonスクリプト内でこれらのライブラリをインポートします。

必要なモジュールのインポート方法

以下のコードは、openpyxlmatplotlibの必要なモジュールをインポートする方法を示しています。

# openpyxlのインポート
from openpyxl import Workbook
from openpyxl.chart import LineChart, Reference
# matplotlibのインポート
import matplotlib.pyplot as plt

openpyxlからは、エクセルワークブックを作成するためのWorkbookクラスと、グラフを作成するためのLineChartクラス、データ範囲を指定するためのReferenceクラスをインポートします。

matplotlibからは、グラフを描画するためのpyplotモジュールをインポートします。

これで、エクセルワークシートにグラフを作成するための準備が整いました。

次のステップでは、エクセルファイルの作成とデータの入力方法について説明します。

エクセルファイルの作成とデータの入力

Pythonを使ってエクセルファイルを作成し、データを入力する方法について解説します。

ここでは、openpyxlライブラリを使用します。

エクセルワークブックの作成

まずは、新しいエクセルワークブックを作成し、ワークシートを追加する方法を見ていきましょう。

新しいワークブックの作成方法

新しいエクセルワークブックを作成するには、openpyxl.Workbookクラスを使用します。

以下のコード例を参考にしてください。

from openpyxl import Workbook
# 新しいワークブックを作成
wb = Workbook()

このコードを実行すると、空のエクセルワークブックが作成されます。

ワークシートの追加方法

次に、ワークシートを追加する方法を見ていきます。

デフォルトでは、新しいワークブックには1つのワークシートが含まれていますが、追加でワークシートを作成することも可能です。

# デフォルトのワークシートを取得
ws1 = wb.active
ws1.title = "Sheet1"
# 新しいワークシートを追加
ws2 = wb.create_sheet(title="Sheet2")

このコードでは、デフォルトのワークシートの名前をSheet1に変更し、新しいワークシートSheet2を追加しています。

データの入力

次に、エクセルシートにデータを入力する方法を見ていきます。

セルへのデータの書き込み方法

セルにデータを書き込むには、セルのアドレスを指定して値を代入します。

以下のコード例を参考にしてください。

# デフォルトのワークシートにデータを入力
ws1['A1'] = "名前"
ws1['B1'] = "年齢"
ws1['A2'] = "太郎"
ws1['B2'] = 25
ws1['A3'] = "花子"
ws1['B3'] = 30

このコードでは、Sheet1のセルに名前と年齢のデータを入力しています。

データの例

具体的なデータの例を以下に示します。

このデータを使って、後でグラフを作成します。

# サンプルデータの入力
data = [
    ["月", "売上"],
    ["1月", 100],
    ["2月", 150],
    ["3月", 200],
    ["4月", 250],
    ["5月", 300],
]
# データをワークシートに書き込む
for row in data:
    ws1.append(row)

このコードでは、Sheet1に月ごとの売上データを入力しています。

ws1.append(row)を使うことで、リスト形式のデータを一行ずつ追加することができます。

以上で、エクセルファイルの作成とデータの入力方法についての解説は終了です。

次は、これらのデータを使ってグラフを作成する方法について見ていきましょう。

グラフの作成

エクセルワークシートにデータを入力したら、次はそのデータを基にグラフを作成します。

Pythonを使ってエクセルにグラフを追加するには、openpyxlmatplotlibのライブラリを活用します。

グラフの種類と選択

利用可能なグラフの種類

openpyxlを使ってエクセルに追加できるグラフの種類は多岐にわたります。

  • 折れ線グラフ(Line Chart)
  • 棒グラフ(Bar Chart)
  • 円グラフ(Pie Chart)
  • 散布図(Scatter Chart)
  • 面グラフ(Area Chart)

適切なグラフの選び方

データの特性や目的に応じて適切なグラフを選ぶことが重要です。

例えば、時間の経過に伴うデータの変化を示す場合は折れ線グラフが適しています。

一方、カテゴリごとの比較を行う場合は棒グラフが有効です。

グラフのデータ範囲の指定

データ範囲の設定方法

グラフを作成するためには、どのデータを使用するかを指定する必要があります。

openpyxlでは、Referenceオブジェクトを使ってデータ範囲を指定します。

from openpyxl.chart import Reference
# データ範囲の指定
data = Reference(worksheet, min_col=2, min_row=1, max_col=2, max_row=10)

データ範囲の例

例えば、以下のようなデータがエクセルシートに入力されているとします:

日付売上
2023-01-01100
2023-01-02150
2023-01-03200
2023-01-04250
2023-01-05300

このデータを基に折れ線グラフを作成する場合、データ範囲は次のように指定します:

data = Reference(worksheet, min_col=2, min_row=2, max_col=2, max_row=6)

グラフのスタイル設定

グラフのタイトル、軸ラベル、色などの設定方法

グラフの見栄えを良くするために、タイトルや軸ラベル、色などを設定します。

以下はその具体例です:

from openpyxl.chart import LineChart
# グラフオブジェクトの作成
chart = LineChart()
# データの追加
chart.add_data(data, titles_from_data=True)
# グラフのタイトル設定
chart.title = "売上の推移"
# X軸とY軸のタイトル設定
chart.x_axis.title = "日付"
chart.y_axis.title = "売上"
# グラフの色設定(例:青色)
chart.series[0].graphicalProperties.line.solidFill = "0000FF"
# グラフの追加
worksheet.add_chart(chart, "E5")

このようにして、エクセルワークシートに見やすいグラフを追加することができます。

次のステップでは、作成したグラフをエクセルファイルに保存する方法について説明します。

グラフのエクセルワークシートへの追加

エクセルワークシートにグラフを追加するためには、まずグラフオブジェクトを作成し、それをワークシートに配置する必要があります。

以下では、その具体的な方法について解説します。

グラフオブジェクトの作成

グラフオブジェクトの生成方法

グラフオブジェクトを生成するためには、openpyxl.chartモジュールを使用します。

以下に、基本的なグラフオブジェクトの生成方法を示します。

from openpyxl.chart import LineChart, Reference
# グラフオブジェクトの生成
chart = LineChart()

この例では、LineChartクラスを使用して折れ線グラフのオブジェクトを生成しています。

他の種類のグラフを作成する場合は、BarChartPieChartなどのクラスを使用します。

グラフの配置

グラフの配置方法

生成したグラフオブジェクトをエクセルワークシートに配置するためには、add_chartメソッドを使用します。

以下にその具体的な方法を示します。

# ワークシートにグラフを追加
ws.add_chart(chart, "E5")

この例では、グラフオブジェクトchartをワークシートwsのセルE5に配置しています。

配置位置の指定方法

グラフの配置位置は、セルのアドレスで指定します。

例えば、E5はエクセルのE列5行目を指します。

以下に、具体的な例を示します。

from openpyxl import Workbook
from openpyxl.chart import LineChart, Reference
# ワークブックとワークシートの作成
wb = Workbook()
ws = wb.active
# データの入力
data = [
    ["Month", "Sales"],
    ["Jan", 30],
    ["Feb", 40],
    ["Mar", 50],
    ["Apr", 60],
    ["May", 70],
]
for row in data:
    ws.append(row)
# グラフオブジェクトの生成
chart = LineChart()
# データ範囲の指定
data = Reference(ws, min_col=2, min_row=1, max_col=2, max_row=6)
chart.add_data(data, titles_from_data=True)
# グラフの配置
ws.add_chart(chart, "E5")
# エクセルファイルの保存
wb.save("sample_chart.xlsx")

このコードでは、まずワークブックとワークシートを作成し、データを入力しています。

その後、折れ線グラフのオブジェクトを生成し、データ範囲を指定してグラフに追加しています。

最後に、グラフをワークシートのセルE5に配置し、エクセルファイルを保存しています。

以上で、エクセルワークシートにグラフを追加する方法についての解説を終わります。

次は、エクセルファイルの保存方法について解説します。

エクセルファイルの保存

エクセルファイルにデータやグラフを追加した後は、ファイルを保存する必要があります。

ここでは、保存するファイル名の指定方法とエクセルファイルの保存方法について詳しく説明します。

ファイル名の指定

エクセルファイルを保存する際には、保存するファイル名を指定する必要があります。

ファイル名は任意の文字列で構いませんが、拡張子は .xlsx とする必要があります。

保存するファイル名の指定方法

以下のコード例では、保存するファイル名を example.xlsx と指定しています。

# 保存するファイル名を指定
file_name = "example.xlsx"

ファイルの保存

ファイル名を指定したら、次にエクセルファイルを保存します。

openpyxlライブラリを使用してエクセルファイルを保存する方法を説明します。

エクセルファイルの保存方法

エクセルファイルを保存するには、Workbookオブジェクトのsaveメソッドを使用します。

以下のコード例では、先ほど指定したファイル名でエクセルファイルを保存しています。

from openpyxl import Workbook
# 新しいワークブックを作成
wb = Workbook()
# 保存するファイル名を指定
file_name = "example.xlsx"
# エクセルファイルを保存
wb.save(file_name)

このコードを実行すると、現在のディレクトリに example.xlsx という名前のエクセルファイルが保存されます。

以上で、エクセルファイルの保存方法についての説明は終了です。

次に、実際にデータやグラフを追加したエクセルファイルを保存する方法についても見ていきましょう。

from openpyxl import Workbook
from openpyxl.chart import LineChart, Reference
# 新しいワークブックを作成
wb = Workbook()
ws = wb.active
# データの入力
data = [
    ["Month", "Sales"],
    ["January", 30],
    ["February", 40],
    ["March", 50],
    ["April", 60],
    ["May", 70],
]
for row in data:
    ws.append(row)
# グラフの作成
chart = LineChart()
data = Reference(ws, min_col=2, min_row=1, max_col=2, max_row=6)
chart.add_data(data, titles_from_data=True)
ws.add_chart(chart, "E5")
# 保存するファイル名を指定
file_name = "sales_chart.xlsx"
# エクセルファイルを保存
wb.save(file_name)

このコードを実行すると、 sales_chart.xlsx という名前のエクセルファイルが作成され、データとグラフが含まれています。

これで、エクセルファイルの保存方法についての説明は完了です。

実践例

ここでは、実際にPythonを使ってエクセルワークシートにグラフを作成する手順を具体的に示します。

以下の手順に従って、サンプルデータを作成し、グラフを生成してエクセルファイルに保存します。

サンプルデータの作成

まず、エクセルワークシートに入力するサンプルデータを作成します。

ここでは、月ごとの売上データを例にします。

サンプルデータの具体例

以下のようなデータをエクセルに入力します。

売上
1月100
2月150
3月200
4月250
5月300
6月350
7月400
8月450
9月500
10月550
11月600
12月650

サンプルコードの実行

次に、上記のデータをエクセルに入力し、グラフを作成するPythonコードを示します。

サンプルコードの全体像

以下のコードを実行することで、エクセルファイルにデータを入力し、グラフを作成して保存します。

# 必要なライブラリのインポート
from openpyxl import Workbook
from openpyxl.chart import LineChart, Reference
# 新しいワークブックの作成
wb = Workbook()
ws = wb.active
ws.title = "売上データ"
# サンプルデータの入力
data = [
    ["月", "売上"],
    ["1月", 100],
    ["2月", 150],
    ["3月", 200],
    ["4月", 250],
    ["5月", 300],
    ["6月", 350],
    ["7月", 400],
    ["8月", 450],
    ["9月", 500],
    ["10月", 550],
    ["11月", 600],
    ["12月", 650],
]
for row in data:
    ws.append(row)
# グラフの作成
chart = LineChart()
chart.title = "月別売上"
chart.style = 10
chart.y_axis.title = '売上'
chart.x_axis.title = '月'
# データ範囲の指定
data = Reference(ws, min_col=2, min_row=1, max_col=2, max_row=13)
categories = Reference(ws, min_col=1, min_row=2, max_row=13)
chart.add_data(data, titles_from_data=True)
chart.set_categories(categories)
# グラフの配置
ws.add_chart(chart, "E5")
# エクセルファイルの保存
wb.save("sales_data.xlsx")

実行結果の確認方法

上記のコードを実行すると、sales_data.xlsx という名前のエクセルファイルが作成されます。

このファイルを開くと、以下のような内容が確認できます。

  1. データの入力: A1セルからB13セルにかけて、月別の売上データが入力されています。
  2. グラフの作成: E5セルの位置に、月別売上を示す折れ線グラフが配置されています。

エクセルファイルを開いて、データとグラフが正しく表示されていることを確認してください。

これで、Pythonを使ってエクセルワークシートにグラフを作成する方法が理解できたと思います。

トラブルシューティング

Pythonでエクセルワークシートにグラフを作成する際には、いくつかのトラブルが発生することがあります。

ここでは、よくあるエラーとその対処法、そしてデバッグのポイントについて解説します。

よくあるエラーと対処法

インポートエラー

インポートエラーは、必要なライブラリがインストールされていない場合や、インポート文に誤りがある場合に発生します。

エラーメッセージの例
ModuleNotFoundError: No module named 'openpyxl'
対処法
  1. ライブラリがインストールされているか確認します。

インストールされていない場合は、以下のコマンドでインストールします。

pip install openpyxl
   pip install matplotlib
  1. インポート文が正しいか確認します。

例えば、import openpyxlimport matplotlib.pyplot as pltが正しい形式です。

データ範囲の指定エラー

データ範囲の指定エラーは、グラフに使用するデータの範囲が正しく指定されていない場合に発生します。

エラーメッセージの例
ValueError: Invalid cell range
対処法
  1. データ範囲が正しく指定されているか確認します。

例えば、ws['A1:B10']のように範囲を指定します。

  1. データが実際にその範囲内に存在するか確認します。

データが存在しない範囲を指定するとエラーが発生します。

グラフの表示エラー

グラフの表示エラーは、グラフの設定やデータの指定に問題がある場合に発生します。

エラーメッセージの例:

TypeError: 'NoneType' object is not subscriptable
対処法
  1. グラフの設定が正しいか確認します。

例えば、chart.title = "Sample Chartのように設定します。

  1. データの指定が正しいか確認します。

例えば、chart.add_data(data, titles_from_data=True)のように指定します。

デバッグのポイント

デバッグの基本的な方法

デバッグは、コードの問題を特定し修正するための重要なプロセスです。

以下の基本的な方法を試してみてください。

  1. エラーメッセージを読む: エラーメッセージは問題の原因を示しています。

まずはエラーメッセージをよく読み、どの部分でエラーが発生しているかを特定します。

  1. print文を使う: コードの途中にprint文を挿入して、変数の値や処理の進行状況を確認します。

これにより、どの部分で問題が発生しているかを特定しやすくなります。

  1. デバッガを使う: Pythonにはpdbというデバッガがあり、ステップごとにコードを実行しながら問題を特定できます。

import pdb; pdb.set_trace()を使ってデバッグを開始します。

エラーメッセージの読み方

エラーメッセージは、問題の原因を特定するための重要な手がかりです。

以下のポイントに注意して読みましょう。

  1. エラーの種類: エラーメッセージの最初に表示されるエラーの種類(例: ValueError, TypeError)は、問題の性質を示しています。
  2. エラーの詳細: エラーメッセージの詳細部分には、具体的な問題の内容が記載されています。

例えば、Invalid cell rangeNo module named 'openpyxl'などです。

  1. トレースバック: エラーメッセージの最後に表示されるトレースバックは、エラーが発生した箇所を示しています。

これを確認することで、どの部分のコードに問題があるかを特定できます。

以上のポイントを押さえて、トラブルシューティングを行いましょう。

エラーが発生した場合でも、冷静に対処することで問題を解決できます。

目次から探す