デキる人は知っているgnuplotの使い方
gnuplotを初めて使ったのでそのログ
はじめに
最近、おすすめの記事とかに「ショートカットを使いこなして仕事爆速!」とか
「デキる人は使ってる仕事術!」みたいなのがあって
記事を呼んでみると
Windowsはショートカットキーを使って時短!
とか
Excel、wordでおすすめのショートカットはこちら!ctrl+v!!
みたいなのばっかりで面白いので
似たタイトルにしてみた。
仕事だとデータ解析とかその結果はExcelが好まれるので
仕事で使う機会はあまりなかったけど
使えるようになりたいので勉強してみた。
やりたいこと
温度と湿度のデータがあるので、それを1つのグラフにしたい。
データはここに無限に上がってくるこれを使う。
1. 入力データの整理
入力データの形式はJSONもどきで、文字列が含まれるため
このままプロットできない。
ワンライナーを書いた。
cat ./202105_Temp_Humidi_Sensor_Data.json | sed -e 's/: /,/g' | sed -e 's/ /,/g' | sed -e 's/[\{\|\}\|"\]//g' | awk -F "," ' $2 == "2021/05/28" { print $3","$5","$6 }' > temp.log
ワンライナーでやってること
sed -e 's/: /,/g'
keyとvalueの区切りが:
になっているので,
にする。
sed -e 's/ /,/g'
日時データの日付と時間の間のスペースを,
にする。
sed -e 's/[\{\|\}\|"\]//g'
行の両端の{}
を消す。
awk -F "," ' $2 == "2021/05/28" { print $3","$5","$6 }'
区切り記号を,
として、
日付を指定して時刻、温度、湿度のデータだけ抽出する。
2. gnuplotでグラフ作成
gnuplotがなければインストールする。
$ sudo apt install gnuplot
gnuplotで設定して、グラフを作る。
$ gnuplot gnuplot> set timefmt "%H:%M:%S" // 入力データの時間のフォーマット設定 gnuplot> set datafile separator "," // 入力データの区切り記号を設定 gnuplot> set title "2021/05/29" // グラフのタイトル設定 gnuplot> set xdata time // x軸を時間に設定 gnuplot> set format x "%H" // x軸のフォーマット設定 gnuplot> set xlabel "time" // x軸のラベル設定 gnuplot> set yrange [0:40] // y軸のレンジ設定(0~40) gnuplot> set ylabel "temp" // y軸のラベル設定 gnuplot> set ytics nomirror // y軸のメモリを片側表示に設定 gnuplot> set y2label "humidi" // y2軸のラベル設定 gnuplot> set y2range [0:100] // y2軸のレンジ設定(0~100) gnuplot> set y2tics nomirror // y2軸のメモリを片側表示に設定 gnuplot> set my2tics 10 // y2軸のメモリの数を設定(10) gnuplot> set terminal png // グラフの出力設定(png) // 出力ファイルの名前設定 gnuplot> set output "20210528_plot.png" // グラフの作成(グラフ1の指定、グラフ2の指定) // グラフ1: 入力ファイル、使うデータ、出力グラフ、グラフのプロット方法 // グラフ2: 入力ファイル、使うデータ、出力グラフ、グラフのプロット方法 gnuplot> plot "./temp.log" using 1:2 axis x1y1 with line title "temp", "./temp.log" using 1:3 axis x1y2 with line title "humidi"
これで出力したファイルがこれ
3. シェル化
作った。
measurementData/graph-make.sh at master · Kyokko-OB-Team/measurementData · GitHub
使い方
./graph-make.sh <任意の日付>_Temp_Humidi_Sensor_Data.json YYYY/MM/DD