エクセルファイルを新規作成、データを入力しグラフを作成する
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'が保存されます。