gnuplotで複数のグラフを1つにまとめて出力する方法(multiplot)

multiplotとは

gnuplotでは普通にプロットすると1つのグラフのみが出力されます。複数のグラフを同時に扱いたい、例えばグラフの中に説明用に小さなグラフを載せたい場合や、複数のグラフを並べたものを作りたい場合もあるでしょう。そういった場合、一度画像ファイルとして出力してから何かしらの画像エディタで編集して作り上げてもいいのですが、それだとやや作業が煩雑になってしまいます。

gnuplotにはmultiplotモードという機能が用意されていて、これを用いることで一つのキャンバスに複数のグラフ出力が出来るようになります。multiplotを使う場合、細かく配置を指定するには個々のグラフ領域の扱いなどやや考慮すべきことが多いのですが、簡単に使う分にはそれほど難しくはないです。

multiplotモードの解説

multiplotモードを以下のような簡単な例を用いて説明していきます。
set multiplot
set size 1,1
set origin 0,0
plot x
set size 0.4,0.3
set origin 0.5,0.6
clear
plot sin(x) linecolor 'red'
set size 0.4,0.3
set origin 0.5,0.1
clear
plot x**2 linecolor 'green'
unset multiplot



基本としては「set multiplot」でmultiplotモードに切り替え、個々のグラフ領域など設定しつつ複数のグラフをプロット。最後に「unset multiplot」でmultiplotモードを終了させます。終了させることでインタラクティブモードでは通常のgnuplotのモードに戻ります。
「set size」、「set origin」で個々のグラフ領域の大きさや配置する箇所を決めています。

multiplotモードで使うclearコマンド

さて上のコマンド例で「clear」コマンドを用いていますが、このコマンドは指定した領域を削除するというものです。multiplotモードでグラフの中にグラフをプロット場合、そのままプロットすると2つのプロットが重なって見づらくなる場合もあります。なのでプロットする前に「clear」コマンドでその領域を消しておけば見やすいグラフを描くことが出来ます。消した方がいいかどうかは状況によるので、必要に応じて使い分けるといいでしょう。

自動でグラフ領域を割り当てる - multiplot layout

multiplotモードに入るとき「layout」オプションを用いると、複数のグラフを並べて配置するのが便利になります。上の例のように個々のグラフ領域を計算して割り当てても並べて配置出来ますが、それだとどこにどう配置するかを考える必要が出てきてしまいます。その点「layout」オプションを用いると、指定した縦横のグラフ数で自動で配置を割り当てさせることが出来ます。

例えば縦横2x2の4つグラフをプロットしたい場合、以下のように簡単に済ませることが出来ます。
set multiplot layout 2,2
plot x
plot x**2
plot sin(x)
plot cos(x)
unset multiplot



細かいレイアウトやグラフ領域の設定には「margines」や「spacing」などで調整する必要がありますが、今回の解説ではそこまでは踏み込みません。その他に縦横上下のどこからプロットするかの設定もあります。必要に応じてドキュメントやヘルプを参照して下さい。

プロットする箇所を飛ばしたり戻したり - multiplot next, previous

multiplot layoutで並べてグラフをプロットするとき、
set multiplot next
とすることで一つグラフ領域を飛ばせます。これでプロットすれば一つグラフ領域が空の状態でプロットすることが出来ます。

また
set multiplot previous
とすることで、一つ前のグラフ領域に戻ります。そのままではグラフ領域にグラフが描かれているので「clear」コマンドでその領域を消します。ただ「clear」コマンドを用いると一つグラフ領域が飛ばされるようなので、その場にプロットするには「clear」コマンドの後で再び「set multiplot previous」を実行する必要があります。


最後に注意点

multiplotモードで複数のグラフをプロット出来ますが、きっちりグラフ領域の大きさを決めるには何かと把握しておくべきことが多いです。個々のグラフのタイトルや軸ラベルなどの設定でグラフが描画される領域が変わってくるため、きっちりと決めたい場合には注意が必要となります。以前書いた以下のブログ記事も参考にしてみて下さい。


gnuplot関連のブログ記事

コメント

スポンサーリンク


このブログの人気の投稿

gnuplotでプロットなどの色をcolornameの指定で変更する

catコマンドの出力を行番号付きにするためのコマンドラインオプション(-n, -b)

Ubuntu Softwareが起動しないのでいろいろと調べてみる(Ubuntu 20.04.1 LTS)

gnuplot : グラフにグリッド線を描く方法(set grid)

gnuplot : プロット画像のサイズ指定について(set sizeとの違い)