Gnuplotでボード線図を描く

Gnuplotを初めてまともに使いました.
これでも一応,情報系の学生なのでこのくらいできないと…
@xmmmに怒られます!

Gnuplotとは

Gnuplotとは2次元もしくは3次元のグラフを作成するためのコマンドラインアプリケーションソフトウェアのことです.

from wikipedia

つまり,Excelでグラフ描きたくない人がグラフを描くようなものです(ぇ

本題

どんなグラフを描くかというと,こんな感じ.

解説

まず,x軸の設定を行う.凡例は表示させないようにし、x軸の範囲は0〜100でLogスケール表示にする.
それから,余白の設定を行う.

set xrange [ 0.01 : 100 ]
unset key
set log x
set xtics 10
set mxtics 10
set lmargin 10
set rmargin 2

今回は,2つのグラフを一緒に表示させたいのでmultiplotを使う.
グラフは下のほうから描かれるので位相に関するデータから設定を行う.
表示範囲は0〜-90°、グリッド表示.
ちなみにデータの書式は、入力周波数、ゲイン、位相になっている.

set multiplot
set yrange [ -90 : 0 ]
set grid
set ylabel "Angle [degree]"
set size 1,0.4
set xlabel "w [rad/s]"
set origin 0.0,0.0
set bmargin 3
set tmargin 0
plot "d:/data.dat" u 1:3 with lp lt -1 lw 1 pt 7 ps 1

ゲインのほうも同じように設定する.

set log x
set yrange [ -40 : 20 ]
set grid
set ylabel "Gain [dB]"
set size 1,0.6
set origin 0.0,0.4
set bmargin 1
set tmargin 1
set format x ""
set xlabel ""
plot "d:/data.dat" u 1:2 with lp lt -1 lw 1 pt 6 ps 1
unset multiplot

最後に

もっとかける方法とかないかねぇー?

使ったデータ(d:/data.dat)

0.01 19.98261083 -3.6
0.02 19.93023344 -7.2
0.04 19.72647554 -14.1
0.08 19.01702918 -26.7
0.10 18.55766821 -32.1
0.20 15.88976093 -51.5
0.40 11.36403448 -68.3
0.80 5.800692227 -78.7
1.00 3.917993048 -80.9
2.00 -2.047458174 -85.5
4.00 -7.958800173 -87.7
8.00 -14.42492798 -88.9
10.00 -15.91760035 -89.1
100.00 -33.97940009 -89.9