マルチプロット色々(その1)

gnuplotで複数のグラフを一つの画像ファイルに入れるにはmultiplot機能を使います。しかし、multiplotには難しい面も多く、上手く使いこなすにはそれなりの工夫が必要です。ここではmultiplotの上手な使い方について紹介していきたいと思います。

いちばん簡単な例 - layoutを用いた自動配置

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

自動配置の順番

グラフを並べる順番はcolumnsfirstrowsfirstおよびupwardsdownwardsというキーワードで指定できます。columsfirstはグラフを縦に先に並べますがrowsfirstはグラフを横に先に並べます。また、upwardsは下からグラフを並べていきますが、downwardsは上から下に並べていきます。デフォルトはrowsfirst downwardsです。

以下はcolumsfirst downwardsにした場合の例です。

以下はrowsfirst upwardsにした場合の例です。グラフの並ぶ順番に着目してください。