Excelシートなどで記録している日々の数字をPythonでグラフにしてみませんか?
Pythonにはグラフを作成するための便利なツール(matplotlibというライブラリ)があります。
目次
matplotlibでExcelからグラフを作成する手順
![](https://totonoubiz.com/wp-content/uploads/2023/12/exceltograph.webp)
以下の手順でグラフを作成していきます。
- x軸、y軸に入れるデータをExcelから自動で取得する
- matplotlibというライブラリでグラフを作成する
- グラフの見やすさを調整(必要な場合)
1.Excelシートからデータを取得する
![](https://totonoubiz.com/wp-content/uploads/2023/12/exceldata.webp)
毎日来場者数をカウントしていると仮定して、4月、5月、6月の3か月分をグラフにしてみます。
Excelに入っている合計は、SUM関数を使用。
グラフのx軸とy軸に入れる値をリストにします。
x軸に入れるのは月(Excelでは1行目のBからD列)、y軸に入れるのは来場者数(Excelでは2行目のBからD列)です。
import openpyxl
wb=openpyxl.load_workbook("集計.xlsx", data_only=True)
ws=wb["来場者数"]
number=[]
month=[]
for i in range(2,5):
month_row=ws.cell(1,i).value
total_row=ws.cell(2,i).value
number.append(total_row)
month.append(month_row)
print(number)
print(month)
x,y軸にはリストの値を渡すため、空っぽのリストにfor文で値を入れていくというプログラムを作成しました。
[15879, 15980, 15956]
['4月', '5月', '6月']
3か月分のリストが自動で取得完了!
8行目のfor i in range(2,5):は、BからD列の範囲を指定しています。
今回は3か月分だけなので、手動でリストを入力しても全く問題ありませんが、自動でExcelの値を取ってくるという仕様にしました。
2.matplotlibでグラフを作成する
リストをmatplotlibというライブラリでグラフにします。
ライブラリがまだインストールされていない場合は!pip install matplotlibでインストールしてください。
import openpyxl
import matplotlib.pyplot as plt
#日本語表示できるように設定
plt.rcParams["font.family"]="MS Gothic"
wb=openpyxl.load_workbook("集計.xlsx", data_only=True)
ws=wb["来場者数"]
number=[]
month=[]
for i in range(2,5):
month_row=ws.cell(1,i).value
total_row=ws.cell(2,i).value
number.append(total_row)
month.append(month_row)
plt.plot(month,number)
日本語の表示が文字化けしてしまうため、下記のようにフォントを指定して修正しました。
![](https://totonoubiz.com/wp-content/uploads/2023/12/correction_garbedtext.webp)
MS Gothic、MS Mincho、Yu Gothic、Yu Minchoなど、お好みで調整してください。
また、このような棒グラフにすることもできます。
![](https://totonoubiz.com/wp-content/uploads/2023/12/bargraph.webp)
plt.plot(month,number)が折れ線グラフだったのを、plt.bar(month,number)に変えるだけです。
3.見やすさを調整する
必要に応じてグラフの見やすさを調整してください。
今回の場合は、このような調整を行いました。
日本語のフォントを表示させる:plt.rcParams[“font.family”]=”MS Gothic”
グラフのy軸のメモリを調整:plt.ylim(最小値, 最大値) (x軸ならplt.xlim(最小値,最大値))
棒グラフの幅を調整:widthを追加
他にもグラフの色を変えたり、色々な設定ができます!
プログラムのまとめ
上記プログラムをまとめてみました。
それぞれ折れ線グラフ、棒グラフです。
#折れ線グラフ
import openpyxl
import matplotlib.pyplot as plt
#日本語表示できるように設定
plt.rcParams["font.family"]="MS Gothic"
wb=openpyxl.load_workbook("集計.xlsx", data_only=True)
ws=wb["来場者数"]
number=[]
month=[]
for i in range(2,5):
month_row=ws.cell(1,i).value
total_row=ws.cell(2,i).value
number.append(total_row)
month.append(month_row)
plt.plot(month,number)
#棒グラフ
import openpyxl
import matplotlib.pyplot as plt
plt.rcParams["font.family"]="MS Gothic"
wb=openpyxl.load_workbook("集計.xlsx", data_only=True)
ws=wb["来場者数"]
number=[]
month=[]
for i in range(2,5):
month_row=ws.cell(1,i).value
total_row=ws.cell(2,i).value
number.append(total_row)
month.append(month_row)
plt.ylim(15600, 16000)
plt.bar(month,number,width=0.5)
グラフを保存したいときは
グラフを出力して保存したいというときには下記を最終行に追加してください。
今回プログラムを作成した場所に保存されます。
pngで保存する場合:
plt.savefig("ファイル名.png")
pdfで保存する場合:
plt.savefig("ファイル名.pdf")
ぜひ使ってみてください!