pythonで、matplotlibで作成したグラフをExcelに貼り付ける方法について紹介します。
本記事では、下記内容を紹介しています。
この記事で分かること
■matplotlibで作成したグラフをExcelに貼り付ける方法
- グラフを画像として保存した後に、Excelに貼り付ける方法
- グラフを画像として保存せず、PCメモリに保持して、Excelに貼り付ける方法
スポンサーリンク
matplotlibで作成したグラフをExcelに貼り付ける方法
matplotlibで作成したグラフをExcelに貼り付ける方法について紹介します。
以下の2つの方法について、サンプルコードを交えながら順番に紹介します。
- グラフを画像として保存した後に、Excelに貼り付ける方法
- グラフを画像として保存せず、PCメモリに保持して、Excelに貼り付け
グラフを画像として保存した後に、Excelに貼り付け
はじめに、matplotlibで作成したグラフを画像として保存した後に、
Excel操作用のライブラリである「openpyxl」を使用して、Excelに貼り付ける方法を紹介します。
以下、サンプルコードです。
### matplotlibで作成したグラフをExcelに貼り付け
import matplotlib.pyplot as plt
import openpyxl
path_fig = r'test\test.png'
path_excel = r'test\test.xlsx'
# -------------------- グラフを作成 ------------------- #
data_x = [1,2,3,4,5]
data_y = [x*x for x in data_x]
fig, ax = plt.subplots(figsize = (5,5), facecolor='lightblue')
ax.plot(data_x, data_y, linestyle='solid', marker='o')
ax.set_xlabel('x')
ax.set_ylabel('y')
plt.show()
fig.savefig(path_fig)
# --- 既存のExcelファイルを開き、グラフを貼り付け --- #
wb = openpyxl.load_workbook(path_excel)
sh = wb.create_sheet('graph')
img = openpyxl.drawing.image.Image(path_fig)
sh.add_image(img, 'B2')
wb.save(path_excel)
wb.close()
コードを実行すると、下図のようにExcelにグラフが貼り付けられます。
前半部では、matplotlibでグラフを作成し、savefigメソッドで図として保存しています。
後半部分で、openpyxlを用いて、グラフをExcelに貼り付けています。
> wb = openpyxl.load_workbook(path_excel)
> sh = wb.create_sheet('graph')
既存のExcelファイルを開き、新しいsheetを作成しています。
> img = openpyxl.drawing.image.Image(path_fig)
> sh.add_image(img, 'B2')
openpyxlで図を読み込み、先ほど作成したsheetの "B2セル" に貼り付けています。
スポンサーリンク
【補足】グラフを画像として保存せず、PCメモリに保持して、Excelに貼り付け
次に、matplotlibで作成したグラフをPCのメモリに保持し、
Excel操作用のライブラリである「openpyxl」を使用して、Excelに貼り付ける方法を紹介します。
以下、サンプルコードです。
### matplotlibで作成したグラフをExcelに貼り付け
import matplotlib.pyplot as plt
import openpyxl
import io
path_excel = r'test\test.xlsx'
# -------------------- グラフを作成 ------------------- #
data_x = [1,2,3,4,5]
data_y = [x*x for x in data_x]
fig, ax = plt.subplots(figsize = (5,5), facecolor='lightblue')
ax.plot(data_x, data_y, linestyle='solid', marker='o')
ax.set_xlabel('x')
ax.set_ylabel('y')
plt.show()
# --- 既存のExcelファイルを開き、グラフを貼り付け --- #
wb = openpyxl.load_workbook(path_excel)
sh = wb.create_sheet('graph')
img_data = io.BytesIO()
fig.savefig(img_data, format='png')
img = openpyxl.drawing.image.Image(img_data)
sh.add_image(img, 'B2')
wb.save(path_excel)
wb.close()
コードの実行結果は、前述のサンプルコードと同じになります。
先ほどのコードとの違いは、1箇所だけです。
先ほどは、グラフを画像として保存してしましたが、こちらのコードでは、PCのメモリにグラフを保存しています。
> img_data = io.BytesIO()
> fig.savefig(img_data, format='png')
ioモジュールは、pythonの標準モジュールです。
BytesIOを用いることで、メモリ上でバイナリデータを扱うことができます。
savefigメソッドで、グラフをメモリに保存しています。
ioモジュールについてもっと詳しく知りたい方は、pythonの公式ドキュメントを参照してみてください。
スポンサーリンク