くしだんご

ひとまず気楽に自分らしく

Python備忘録的に…グラフの出力。図とエクセルに。

記憶を呼び起こしながら。。昔はできたはず。
※※基本的に【詳細!Python 3 入門ノート】の本の内容です。※※

研究結果の報告にグラフを使うことが大半です。
基本的に、「文章は長い」って言われちゃいます。涙(;^ω^)

忘れていけないのが画像として保存するところは外せないので忘れないように書いておきます。
ご存じの方が多いけれど、備忘録です。

【画像として保存編】
import matplotlib.pyplot as plt
import math
X = range(0, 360)
Y = [math.atan(math.radians(d)) for d in X]
plt.plot(X, Y)
plt.show()

# ※
plt.savefig("arctan.png")   
plt.show()

最後の2行の(※)を付けた部分が出力です。

エクセルに慣れている方々は、エクセルのグラフとして出力したいこともあるかなと思いますので。

【エクセルに出力編】

使うのはOpenPyXL。pandasを使うのがデータは扱いやすいのですが、今回はあえてバラバラで書きこんでいます。

from openpyxl import Workbook
import math
# エクセルワークブックの作成。
# createしているのは、Sheetが存在しないからです。
wb = Workbook()
wb.create_sheet('お団子')
ws = wb['お団子']

# データ生成。何でもいいかなと。
X = range(0, 360)
Y = [math.sin(math.radians(d)) for d in X]

# データ書き込むよ。
ColNum = 1
RowNum = 1

# RowNumには1より大きい数字を入れないとエラーが起きます。
for RowNum in X[1 : 360]:
    value = Y[RowNum]
    ws.cell(row = RowNum, column = ColNum, value = X[RowNum])
    ws.cell(row = RowNum, column = ColNum + 1, value=value)

# グラフ書き込むよ。
from openpyxl.chart import LineChart, Reference
Chart = LineChart()
Chart.title = "Sin"
Chart.style = 3
Chart.x_axis.title = "Degree: X"
Chart.y_axis.title = "Sin(X)"

# データ範囲:ここでは適当に指定します。
"""
データ範囲は関連する2列目、5行目~350行目を選択。
"""
data = Reference(ws, min_col = 2, min_row = 5, max_col = 2, max_row = 350)
Chart.add_data(data)

# グラフ張り付けます。
ws.add_chart(Chart, "F20")
wb.save("hoge.xlsx")

こんな感じです。
データの前処理とpandasの続きも書きたいです。
ありがとうございます。