Help us understand the problem. What is going on with this article?

gnuplotとgrepの速攻グラフ作成

More than 3 years have passed since last update.

今までグラフを描くときにIPythonばかり使っていたのですが、
「ログファイルから該当箇所だけ抜き出して即グラフ化して状況把握したい。3秒で!」ということが仕事上多くなってきました。
IPythonだと、IPython起動して、データファイルをオープンしてグラフ表示するまでに4,5行のコードが要りますよね。
gnuplotとgrepコマンドの組み合わせでもっとサクッとやる方法のメモです。
gnuplotのインストールは apt-get で問題ありません。

ここで使うデータファイル

適当なのが見つからなかったので、top > top.txt してしばらく放置したものをデータとします。
firefoxのCPU利用率とメモリ利用率をプロットすることにします。
以下のようなデータが一定時間分あるのが top.txt と思ってください。
Screenshot at 2017-06-18 12-24-41.png
grep で firefox のところだけ抜きだすとこんな感じ。
でもgrepしたものをいちいち別ファイルにするのは手間だからやりたくない。
Screenshot at 2017-06-18 12-31-54.png

プロット手順

基本的には以下のみです。
1. gnuplotの対話モードに入る(1行)
2. プロットする(1行)

gnuplot の対話モードに入る(1行)

terminal上で gnuplot と入力するのみです。IPythonで言うなら ipython -i と同じようなモードに入ります。
Screenshot at 2017-06-18 12-40-34.png

プロットする(1行)

plot '< grep firefox top.txt' using 10 w l

で以下のグラフが表示されます。

  • < はリダイレクト的なものです。 > は要らないので注意。' 'の中に直接Linuxコマンドが書けます。
  • using 10 の 10 はプロットする列です。using 1:2 などとすれば x軸に1列目、y軸に2列目でやってくれる。
  • w l は with line の意味です。w lp とやれば linepointsになる。

sample1.png

複数列プロットしたいならば、カンマで続けて書く。凡例は title で付けられます。

plot '< grep firefox top.txt' using 10 w lp title 'CPU', '< grep firefox top.txt' using 11 w l title 'MEMORY'

sample2.png

備考

対話モードに入らずとも、terminal上から直接やることも可能です。

terminal$ gnuplot -p -e 'plot "< grep firefox top.txt" using 10'

といった感じで。
オプションが要らず覚えやすいという意味でこの方法を記載しました。
私もgnuplot初心者なので、より良い方法があればご教示いただけると幸いです。

おわり

shino_312
三十路前半のソフトエンジニアです。センシング、ロボット系の仕事を4年ほど続けています。 その前の仕事は所謂パワポエンジニアだったため、まだまだ勉強中の身です。 最近はブログの方をメインで書いています。
https://shino-tec.com
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした