4
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

[python] Excelの散布図グラフを作成する

Last updated at Posted at 2022-09-18

はじめに

グラフの作成は範囲の指定だったり、タイトルの追加だったり、単純作業として時間がかかってしまう。
私の会社では古い機械で測定をすることが多く、エクセルのフォーマットが複雑でpandasで扱いにくい場合が多い。
openpyxlを用いて.xlsxのグラフの作成を自動化することを目標とする。

環境

python 3.7.8
window 10

Data

スクリーンショット 2022-09-18 235948.png
自分が会社で扱うデータを再現したエクセルでデータ同士が離れている。(実際はもっと複雑で前処理が必要)

Code

ファイルの開いてシートを選ぶ

import openpyxl

file_path = './excel_file.xlsx'

## .xlsxの場合
wb = openpyxl.load_workbook(file_path)
##  xlsmの場合
wb = openpyxl.load_workbook(file_path , keep_vba=True)


## 名前でシートを指定
ws = wb['Sheet1']
## indexでシートを指定
ws = wb.worksheets[0]

グラフ生成およびタイトルの指定

# create a graph
chart = openpyxl.chart.ScatterChart('marker')

# data titles
chart.title = 'Rheometer'
chart.x_axis.title = 'Time'
chart.y_axis.title = 'torque'

グラフにデータを追加

x軸はdata、y軸はtimeとしてデータを追加した。
また、散布図を目標とするので、series.graphicalProperties.line.noFill = Trueとする。

# add series
print('adding serials')
for i in range(2):

    #titleを含む範囲
    data = openpyxl.chart.Reference(ws, min_col=4 + i*2 , min_row=2, max_row=22)

    #titleを含まない範囲
    time = openpyxl.chart.Reference(ws, min_col=2, min_row=3, max_row=22)

    series = openpyxl.chart.Series(data, time, title_from_data=True)
    series.graphicalProperties.line.noFill = True
    series.marker.symbol = "circle"

    chart.series.append(series)

範囲指定とファイル保存

# 値の範囲を指定
chart.y_axis.scaling.min = 0
chart.y_axis.scaling.max = 10

chart.x_axis.scaling.min = 0
chart.x_axis.scaling.max = 20

# このセルに貼り付け
ws.add_chart(chart, 'B8')

wb.save('./excel_file isDone.xlsx')

結果

スクリーンショット 2022-09-19 001101.png

まとめ

グラフ作成は以下の手順で行われる。
ファイル読み込み → グラフ作成 → データ追加 → 保存

4
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?