GraphtecロガーのデータをPythonで処理
GraphtecロガーデータのCSVファイルをグラフ化したかったのでぱっと書いてみた, 環境は
・Graphtec GL840を使用
・Python3.7.0
・Pythonライブラリは jupyter, pandas, matplotlib, seabornをpipで入れておく
・CSVファイルはutf-8でないといけないので、エンコードを変えておくこと, macだとnkfコマンドなどで可能
Excelでグラフ化してもよいが、データ量が数時間分あるとレコードがいっぱいになってしまうのでPythonで処理した(jupyter-notebook使った)
コードだけ書くと下記, 汎用性は低そうなので要改良
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
%matplotlib inline
plt.rcParams['font.size'] = 20
custom_style = {'axes.labelcolor': 'black',
'xtick.color': 'black',
'ytick.color': 'black',
'axes.facecolor': '#EAEAF2',
'font.size': 0
}
sns.set_style("darkgrid", rc=custom_style)
# skipするロガー設定値の入ったカラム数: 17 + 使用したch数 + 3
# 例えばGL840で15ch使用した場合
numberSkiprows = 35
# 使用する行数: 3(番号, 日付時間, ms) + ch数
N = 18
chList = list(range(0, N, 1))
# 自分で付けたいヘッダー
df = pd.read_csv('sample.csv', skiprows=numberSkiprows, header=None, usecols=chList)
# それぞれの列に付けたい名前, 先頭3つはデフォルトのまま番号、日付時間、msを入れた
# 1CH~7CH: 温度, 8CH~11CH: 電圧, 12CH~15CH: 電流 の場合
df.columns = ["番号", "日付時間", "ms",
"temperature1","temperature2","temperature3","temperature4","temperature5","temperature6","temperature7",
"Volutage1","Voltage2","Voltage3","Voltage4",
"Current1","Current2","Current3","Current4"]
# print(df.head(4))
plt.figure(figsize=(20,8))
# 温度データ(1CH ~ 7CH)のみ表示させてみる
df.iloc[0:, 3:10].plot(figsize=(20,8))
plt.ylabel('temperature', fontdict={'family': 'Arial'})
plt.xticks([])
# plt.show()
下みたいなのが表示されたら成功
この記事が気に入ったらサポートをしてみませんか?