IT系バンドマンの日常

備忘録やライフログなど

テキストベースの数値データをグラフにplotして視える化するまでの3つの方法

今回次のようなタブ区切りのテキストベースのデータを用いてグラフで視える化するまでに3つの方法を試しましたので紹介します

Id  Content
1   33  
2   70  
3   43  
4   60  
5   98  

なお実行環境はUbuntu16.04ですが、今回紹介する3つの方法はMacOSXWindowsでも動作すると思います。

1. Python + Pandas + Matplotlib + Jupyter

コード

import matplotlib.pyplot as plt
import pandas as pd

# データの読み込み
f = open("test.txt", "r")
hoge = pd.read_table(f, index_col='Id')
f.close()

hoge.plot()

出力結果

f:id:kaoru6strings:20160909092015p:plain

所感

  • 実際コードにしてみるとそんなに長くないけど、いろいろ試してうまくいくまでに結構時間がかかった
  • 複雑なデータ解析をするときは役にたちそうだけど、軽いデータを取り扱うには重めの環境だと感じた
  • もしかしてPandas使わなくてももっと簡単にプロットできたのかもしれない・・・
  • Jupyterの保存形式でまるまる作業内容を保存できるのは嬉しい!

2. R + Rstudio

コード

# headerがあるときはheader=Tで認識してくれるらしい
x <- read.table("~/Desktop/test.txt", header=T)
# type="l"で折れ線グラフで表示させる
plot(x, type="l")

出力結果

f:id:kaoru6strings:20160909092936p:plain

所感

  • に、二行だと!!手軽に自分でデータを確認したいときにピッタリじゃないか!?
  • あと細かいデータを確認したいとき、Rstudioのウィンドウを引っ張ってぐいっと引き伸ばすとグラフもぐいっと引き伸ばされるのは個人的に嬉しい機能でした

3. gnuplot

データの前処理

予めヘッダ行をコメントアウトしておきます

# Id  Content
1   33  
2   70  
3   43  
4   60  
5   98  

コード(というかコマンド)

gnuplot
plot "test.txt" with line


# 画像を保存する場合はこちら(20161209追記)
set terminal png # 保存形式を指定
set output 'test.png' # 保存するファイル名を指定
plot "test.txt" with line

出力結果

f:id:kaoru6strings:20160909095454p:plain

所感

  • gnuplot内部のコマンドでもある程度はデータ整形できるけど、いったんlinuxのコマンドで中間ファイル作ってからグラフを描画するほうがやりやすそう?
  • Linuxのコマンドと親和性が高いので個人的にテンションあがりました!

まとめ

今回は素早く数値データのプロットをして視える化するのが出口だったので、Rstudioがベストプラクティスでした。

取り組む作業の出口によってベストな解法は変わると思いますので、いろいろなツールをかじっておくといいことがあるかもと思いました。

今日のひとこと

自分で作業していて、なんだかもやもやするときグラフにプロットしてみると以外な発見があるかも!

それではまた!