tomyamaのブログ

日記・雑記。

gnuplotでグラフを描いてみる

数字を可視化するのに図やグラフはとても判り易いツールだと思います。

 

グラフを描くにはexcelなどの表計算ソフトがとても便利ですが、入力となる数値データのフォーマットが変わらないのであれば、gnuplotでグラフを出力できるようにしておいた方が瞬時に仕事が片付けられます。

 

以下はvmstatコマンドの出力データをgnuplotでグラフ化する例です。

 

vmstatコマンドでCPU使用率のデータを取得する

$ vmstat 2 10 | awk 'NR<=2{printf("##  %s\n",$0)}NR>2{printf("%2d  %s\n",++C,$0)}' > vmstat.dat
$

以下のようなファイルが出力されているはずです。もしくはvmstatコマンドを使えない環境であれば、下記ファイルをテキストエディタなどで作成して下さい。

[vmstat.dat]

##  procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
##   r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st
 1   0  0 545800 10349896      0      0  836   70    13     1    3    6  8  3 90  0  0
 2   1  0 545800 10346152      0      0    0    0     0     0 4097 8322  6  6 88  0  0
 3   0  0 545800 10343020      0      0    0    0     0     0 8063 12487  5 14 80  0  0
 4   1  0 545800 10343644      0      0  256    0     4     0 10196 16629 10 18 72  0  0
 5   0  0 545800 10306084      0      0   32    0     1     0 10222 17455 14 23 62  0  0
 6   0  0 545800 10302096      0      0    0    0     0     0 9162 14138  6 14 80  0  0
 7   1  0 545800 10307220      0      0    0    0     0     0 9108 13804  5 16 79  0  0
 8   0  0 545800 10311808      0      0  544    0     9     0 7263 11452 11 14 75  0  0
 9   0  0 545800 10303176      0      0  512    0     8     0 7728 12024 10 13 77  0  0
10   0  0 545800 10305812      0      0 1024    0    16     0 6705 10676  7 12 81  0  0

 

グラフ描画の命令を記述する

[vmstat.plt]

set style fill pattern border
set xrange[0:11]
set yrange[0:100]
set xtics 0,1,10    # 0から10まで1刻みで目盛りを表示
set ytics 0,10,100    # 0から100まで10刻みで目盛りを表示
set grid
#show grid
set xlabel "[time]"
set ylabel "[%]"
set key                 # 凡例を表示させるために必要
#unset key
TITLE = "VMSTAT"
set title TITLE offset char 0, char 0
#show label
#show offsets
set boxwidth 0.8 relative
## tiny  : 5x8  ピクセルのフォント
## small : 6x12 〃
## medium: 7x13 〃
## large : 8x16 〃
## giant : 9x15 〃
set term png small size 640,480 background '#ffffff'
set out 'vmstat.png'
plot 'vmstat.dat' using 1:($14+$15+$17) with boxes linetype 3 title 'user',\
     "" using 1:($15+$17) with boxes linetype 1 title "sys",\
     "" using 1:($17) with boxes linetype 2 title "wio"

 

gnuplotでグラフを生成する

$ gnuplot vmstat.plt
$

 

以下のようなpngファイルが生成されているはずです。

vmstatのCPU使用率をgnuplotでグラフ化

vmstatのCPU使用率をgnuplotでグラフ化

 

gnuplotは棒グラフだけでなく、様々なグラフを描画する事ができます。

日々の何等かの数字を可視化してみると、新しく見えてくるものがあるかもしれません。

 

こんなツールが在ると知っておくだけでも、いずれ役に立つかも。

 

www.gnuplot.info

 

ちなみに自分は最近gnuplotを使っていません。というのも、Windowsばかり触っているので、グラフはExcelで描く事が多く、この処理をgnuplotで書き直すよりも、Excelの操作ルーチンを別のツールで書いてしまった方が楽に作れるからというのが理由です。毎度、グラフを出力する度に「Excelを使わないように変えたいなぁ」と思うものの、作り直すのは面倒なので放置してしまっています。