Pythonでいろいろやってみる

Pythonを使った画像処理や機械学習などの簡単なプログラムを載せています。

エクセルファイルを新規作成、データを入力しグラフを作成する

openpyxlはエクセルファイル操作用のライブラリで、ワークブックの生成や読み書き、データ入力、グラフ作成などの機能があります。エクセルを立ち上げずに各種操作を行うため、エクセルがインストールされていない環境でもエクセルファイルが作成できます。
ここでは新規ワークブックを作成し、A列にΘ、B列にsin(Θ)を入力、Θ vs sin(Θ)の散布図、つまりサインカーブを作成しワークブックを保存します。

環境
  • windows10 home
  • Anaconda 3/ jupyter notebook 5.6.0
  • Python 3.7.0
  • openpyxl 3.0.5

コード

Workbook()メソッドで新規ワークブック(wb)を生成、アクティブなシートを指定(ws)、A列1~100行にΘをB列1~100行にsin(Θ)を入力、それらの値から散布図を作成後ワークブックを保存しています。

from openpyxl import Workbook
from openpyxl.chart import ScatterChart, Reference, Series

# ワークブックの新規作成、ワークシートの指定
wb = Workbook()
ws = wb.active

# ワークシートへデータを入力(Θ、sin(Θ))
for i in range(100):
    theta = i/10
    y = math.sin(theta)    
    ws.cell(row=i+1, column=1, value=theta)
    ws.cell(row=i+1, column=2, value=y)

# 散布図の作成
chart = ScatterChart()
chart.title = 'sin curve'  # グラフタイトル
chart.style = 1  # 線のスタイル
chart.x_axis.title = 'theta'  # x軸ラベル
chart.y_axis.title = 'sin(theta)'  # y軸ラベル

xvalues = Reference(ws, min_col=1, min_row=1, max_row=100)
values = Reference(ws, min_col=2, min_row=1, max_row=100)
series = Series(values, xvalues) # 新規シリーズ作成
chart.series.append(series)  # シリーズをチャートに追加
ws.add_chart(chart, 'D1')  # チャートをワークシートの'D1'に追加

wb.save('glaph.xlsx')  # ワークブックの保存 
実行結果

エクセルファイル'glaph.xlsx'が保存されます。
f:id:T_A_T:20201207145715p:plain

以下のサイトを参考にさせていただきました

openpyxl公式

ブログランキングに参加しています

にほんブログ村 IT技術ブログへ
にほんブログ村