gnuplotで複数のグラフを載せる

gnuplotで複数の図を載せたい時はmultiplotを使います。

うまくmultiplotを使いこなすポイントは、
・1つ1つの図の上下左右の絶対位置を指定する
・eps画像のサイズを決定する
・トライ&エラー
です。

multiplotとは


multiplotとは、その名の通り複数の図を同時にgnuplot上で表示させることです。
これを使うと、図同士の比較が出来たり、insetを入れることが出来るようになります。

さて、gnuplotには標準で横2行×縦3列など決まったレイアウトのmultiplotが出来る

set multiplot layout 2,3

というコマンドが存在しますが、ここではlayoutは使いません。
なぜなら、グラフの細かい調整が出来ないからです。例えば、2つの図でx軸を共有させたい場合がありますがこれはlayoutを使うと出来ません。なので、これに頼らない方法を紹介します。

2枚の図を同時に表示させたいとします。
この時、2枚の図の位置を、

set lmargin screen 0.3
set rmargin screen 0.9
set tmargin screen 0.9
set bmargin screen 0.7

のように指定します。lmarginなどは↓の図位置の長さを指定しています。

座標は絶対位置で、左下を座標(x,y)=(0,0)にとり、右上を(x,y)=(1,1)として考えます。

座標(1,1)は出力形式で設定したサイズを表しています。
例えば、サイズを横3インチ、縦5インチに設定した場合、座標(0.5,0.5)は横1.5インチ、縦2.5インチの座標を表しています。

これは重要なことです。
今、完成した画像を完全な正方形のグラフにしたいとします。
この時、座標を縦横0.5のサイズを持つようにとったとしても、出力形式のサイズが正方形でない限り完成した図が正方形になることはないことを意味しています。

x軸を共有したい場合


x軸を共有したい場合、
1枚目の画像(青線)のbmargin

2枚目の画像(緑線)のtmargin
を一致させ、lmarginとrmarginを一致させると良いでしょう。
この場合↓の図のように考えます。

実例がこちら。

コードの中身はこんな感じ。

清書

上の図を少し綺麗にしてみました。
書式やticsは引き継がれるので、各々のplotの前にできる限り記述をしたほうが良いでしょう。

縦軸と横軸を共通に


縦軸と横軸を共通にしたい場合はこんな感じにとれば良いです。

実例

コードの中身はこんな感じ。

insetを入れる


注意する点は、2番目のグラフが1番目のグラフの上に来る、ということです。

また、insetは背景を白くするために白色のオブジェクト

set object 1 rect behind from screen 0.3,0.2 to screen 0.6,0.5 fc rgb "#ffffff" fillstyle solid 1.0

を入れています。デフォルトでは透過してしまうためです。

Note


アイキャッチのフォントは “Commune-Round”を用いています。 http://www.gebsite.org/