びぼうろく

北海道の人。適当にもっさりまったり書きます。さくら荘のましろが好きです。アニメとかパソコンとか

デキる人は知っている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"

これで出力したファイルがこれ
f:id:gari30:20210530010416p:plain

3. シェル化

作った。
measurementData/graph-make.sh at master · Kyokko-OB-Team/measurementData · GitHub

使い方

./graph-make.sh <任意の日付>_Temp_Humidi_Sensor_Data.json YYYY/MM/DD