IphoneのアプリでpythonでIhoneで動かせるアプリが作れる「pythonista3」というものがあります。今回は、前回作った体重記録アプリの体重データをグラフにしてみました。
体重データの推移を折れ線グラフにする
前回の記事で作った体重記録アプリで記録された体重の推移をグラフにしてみました。
前回の記事はこちら。→【pythonista3で作ってみた】体重記録アプリ
CSVファイルに記録日時と体重が記録されているのでそれを読み込んで、matplotlibを使ってグラフにしました。
matplotlibを使えば簡単にグラフが作成できました。
完成版のコードです
全コードは以下の25行です。
本当に簡単にグラフ化できます。
import matplotlib.pyplot as plt import csv from datetime import datetime as dt #datacsv読み込み with open('data.csv', 'r') as f: reader = csv.reader(f) data = [x for x in reader] #文字列をdatetimeデータに変換する関数 def s_to_d(d_str): d_format = '%Y%m%d-%H%M' date =dt.strptime(d_str,d_format) return date #横軸データのリスト作成 date_list =[s_to_d(row[0]) for row in data] #縦軸データのリスト作成 weight_list = [float(row[1]) for row in data] #折れ線グラフを作成して表示 plt.plot(date_list, weight_list, marker='o') plt.title('Weight trends') plt.show()
コードのざっとした説明
プログラムの構成
大雑把には以下のような構成になっています。
- 使うモジュールをimport(1行目~)
- CSVファイルを読み込んでリストに格納(6行目~)
- 部品的な関数を定義。(今回は文字列をdatetimeデータに変換する関数)(10行目~)
- グラフにするデータを横軸データのリストと縦軸データのリストとして用意(16行目~)
- matplotlibでグラフを作成して表示(22行目~)
ちょっとした説明
文字列datetimeデータに変換
10行目からのs_to_dという関数で、datetimeの「datetime.datetime.strptime(文字列, フォーマット)」を使って文字列を日付データに変換しています。
体重管理アプリで、日付を文字列に変換した際のフォーマット「’%Y%m%d-%H%M’」を使って文字列を日付に変換しています。
リスト内包表記
17行目で横軸のデータを作る際に[s_to_d(row[0]) for row in data]とリスト内包表示でリストを作成しています。
2次元データのdateの各行の一つ目の項目に体重記録の日時が文字列で格納されているので、それをrow[0]で取り出して、s_to_d関数でdatetimeデータに変換して、date_listに格納しています。
20行目でも同じように、体重データが文字列で記録されているものを数値データにfloatを使って変換してリストに格納しています。
matplotlibでグラフを作成して表示
matplotlibのpyplotでグラフが作成できます。
1行目でmatplotlib.pyplotをpltとしてインポートしています。
折れ線グラフの作成(plot)
plt.plotで折れ線グラフが作成できます。
plt.plot(横軸データ,縦軸データ) でグラフが作成できます。
今回はさらに「marker=’o’」のオプションで各測定値にマル印のマーカーをつけています。
「marker=’x’」にするとバツ印のマーカーにできます。
グラフのタイトル(title)
グラフのタイトルは、plt.title(グラフタイトル)で表示できます。
また、
plt.xlabel(横軸のラベル名)
plt.ylabel(縦軸のラベル名)
で横軸、縦軸のラベル名を表示させることもできます。
グラフを表示する(show)
最後にshow()でグラフをコンソールに表示させます。
簡単にグラフ化できました。
今回は、体重記録アプリで記録したデータをグラフにしてみました。
次は体重記録アプリからグラフを表示できるようにしてみようと思います。
コメント