gnuplotで複数のグラフを一つの画像ファイルに入れるにはmultiplot
機能を使います。しかし、multiplot
には難しい面も多く、上手く使いこなすにはそれなりの工夫が必要です。ここではmultiplot
の上手な使い方について紹介していきたいと思います。
gnuplot 4.2以降ではmultiplot
に自動でグラフを並べてくれるlayout
機能が搭載されました。これを使うと、複数の同じサイズのグラフを並べるだけの図であれば簡単に作成することができます。
以下に例を示します。この例ではmultiplot
を開始するためのset multiplot
コマンドに、オプションとしてlayout 3,1
が付け加わっています。これは、グラフを縦に3つ、横に1つ並ぶように自動配置するというオプションです。
set xrange [0:5]
set yrange [-1:1]
set multiplot layout 3,1 #multiplotの開始、縦3横1自動配置
plot cos(5.0*x)*exp(-x) title "plot 1"
plot cos(5.0*(x-0.2))*exp(-x) title "plot 2"
plot cos(5.0*(x-0.4))*exp(-x) title "plot 3"
unset multiplot #multiplotの終了
#terminalとoutputの変更(1回のみ)
if (exist("TERM")==0 || TERM eq "Default") \
pause -1 "click OK to make PS file";\
TERM = "PS";\
set out "multiplot_01.eps";\
set term postscript color "Arial" 15 enhanced portrait size 7in,10in;\
reread
#terminalとoutputのリセット
TERM = "Default"
set out
set term pop
このスクリプトを実行すると、まず以下のようなグラフウィンドウと共に、click OK to make PS file
というメッセージ付のボタン付のウインドウが出来ます。
ここでOK
をクリックすると、multiplot_01.epsというPostScriptファイルが作成されます。
このように比較的短いスクリプトで複数のグラフを一つの図に入れ込むことが出来ました。
更に横にもグラフを並べることも出来ます。下の例ではlayout 3,2
として6個のグラフを自動配置しています。
set xrange [0:5]
set yrange [-1:1]
set multiplot layout 3,2 #multiplotの開始、縦3横2自動配置
plot cos(5.0*x)*exp(-x) title "plot 1"
plot cos(5.0*(x-0.2))*exp(-x) title "plot 2"
plot cos(5.0*(x-0.4))*exp(-x) title "plot 3"
plot cos(5.0*(x-0.6))*exp(-x) title "plot 4"
plot cos(5.0*(x-0.8))*exp(-x) title "plot 5"
plot cos(5.0*(x-1.0))*exp(-x) title "plot 6"
unset multiplot
#terminalとoutputの変更(1回のみ)
if (exist("TERM")==0 || TERM eq "Default") \
pause -1 "click OK to make PS file";\
TERM = "PS";\
set out "multiplot_02.eps";\
set term postscript color "Arial" 15 enhanced portrait size 7in,10in;\
reread
#terminalとoutputのリセット
TERM = "Default"
set out
set term pop
グラフを並べる順番はcolumnsfirst
、rowsfirst
およびupwards
、downwards
というキーワードで指定できます。columsfirst
はグラフを縦に先に並べますがrowsfirst
はグラフを横に先に並べます。また、upwards
は下からグラフを並べていきますが、downwards
は上から下に並べていきます。デフォルトはrowsfirst downwards
です。
以下はcolumsfirst downwards
にした場合の例です。
以下はrowsfirst upwards
にした場合の例です。グラフの並ぶ順番に着目してください。