gnuplotでCSVファイルをプロットする方法

  • このエントリーをはてなブックマークに追加
  • Pocket

AndroidWearの加速度センサーで取得した加速度をグラフ表示します。

加速度は時系列データです。

CSVファイルとして保存した加速度データを用い、読み込みます。

CSVは「hh:mm:ssssss,X-axis,Y-axis,Z-axis」というフォーマットにしました。

final DateFormat df = new SimpleDateFormat("HH:mm:ssSSS");
final Date date = new Date(System.currentTimeMillis());
String SEND_DATA = df.format(date)+","+x+","+y+","+z+","+sum+"\n";

CSVファイルの一部

13:30:08167,-0.016460137,0.24540567,9.58803
13:30:08210,-0.016460137,0.24540567,9.58803
13:30:08254,-0.02124854,0.20949265,9.621549
13:30:08272,-0.014065935,0.20470424,9.568876
13:30:08316,-0.009277532,0.25498247,9.657461
13:30:08353,-0.057161566,0.23343466,9.532963
13:30:08393,-0.042796355,0.23582886,9.674221
13:30:08433,-0.03561375,0.21906945,9.568876
13:30:08476,-0.028431145,0.25737667,9.607183
13:30:08518,-0.028431145,0.25737667,9.607183
13:30:08553,-0.07152677,0.19752164,9.621549
13:30:08593,-0.047584757,0.2669535,9.509021
13:30:08633,-0.016460137,0.22146365,9.645491

時間フォーマットを設定する.

加速度センサーの値をグラフにしたいため、Y軸は加速度,X軸は時間になります。

gnuplotはそのままでは時間データを扱えないため、gnuplotにX軸を時間として扱う設定をします。

#時間フォーマットの設定
set xdata time
set timefmt "%H:%M:%s"
set format x "%H:%M:%s"
#秒のときは%S,エポックミリ秒のときは%sです.

扱える日付フォーマットはリファレンスを参考にしてください。

CSVフォーマットを設定する

今度はCSV形式のファイルが読み込めるように設定します。

#csvフォーマットの設定
set datafile separator ","

カンマ<“,”>以外にもタブ<“\t”>や任意の文字で区切ることができます。
ちなみにデフォルトはスペース<” “>区切りが設定されているようです。

プロットする

これで加速度データが入ったCSVファイルをグラフにプロットする準備ができました。

file_name="sensor.csv"
plot file_name using 1:2 with linespoints, file_name using 1:3 with linespoints, file_name using 1:4 with linespoints;

実行すると加速度センサーのグラフが表示されました。

スマートウォッチを装着した状態で歩行したところ、綺麗に歩行ステップが検出できていることがわかります。(4歩分)
実際に加速度を使うときは高周波数域を取り除くローパスフィルターを用いることがります。

参考にしたサイト

[gnuplot] エポックミリ秒を軸にしてグラフを書く|ihirokyの日記

gnuplot でデータをプロットしてみるNPM LOG

Gnuplot公式リファレンス

  • このエントリーをはてなブックマークに追加
  • Pocket

SNSでもご購読できます。

コメントを残す

*