多重描画グラフ (multiplot) の仕組みは、複数の plot, splot コマンドの出
力を一つのページ、あるいは一つの画面に結合するのに使います。この仕組み
は、gnuplot 6 で大幅に改修されています。バージョン 6.0.5 からは結合さ
れた画面のパネル毎に対話型マウスを使うことが可能になり、また既に存在す
るコマンド replot か新しいコマンド remultiplot による multiplot 全
体の再描画も可能になっています。多重描画グラフモードは、コマンド
set multiplot で開始し、unset multiplot でそれを閉じるまで続きます。
- コマンド set multiplot は現在の描画設定の状態を新しいデータブロッ
ク $GPVAL_PRE_MULTIPLOT に保存し、引き続くコマンドの新しいデータブロ
ック $GPVAL_LAST_MULTIPLOT への記録を開始します。
- plot, splot コマンドそれぞれは、多重描画グラフ内に新しいパネルを
作ります。各パネルの位置、サイズ、軸の範囲、その他の属性を、後での利
用のために保存します。
- unset multiplot 後に、上記の 2 つのコマンドデータブロックとパネル
毎のデータが完結します。それらの内容は、その後の gnuplot のコマンド
では影響を受けません。対話型セッションではこの時点で多重描画グラフ全
体をスクリーンに表示します。マウス操作では、保存したデータを使い、可
能ならばパネル毎に適切な座標と視角を報告します。
- コマンド replot は $GPVAL_LAST_MULTIPLOT のコマンドを再実行します。
それは、元の描画設定の状態を再構成しようとはせず、よってその結果
は元の図を完全に復元したものにはならない可能性があります。これは、単
一グラフに対して replot を使用するのと同様で、replot コマンドを
発行する前に、例えば塗りつぶしスタイルや軸範囲の位置などをあえて変更
することで、その新しい設定が再描画される図に影響を与えるようにできま
す。
- コマンド remultiplot は違います。これは $GPVAL_PRE_MULTIPLOT に保
存したコマンドを読み込むことで、最初に元の描画設定の状態を再構成し、
その次に保存した multiplot コマンド列を再実行します。これにより、例
えば違う出力形式への出力でも、元の図を再現できるようになります。
replot とは違い、元の multiplot と remultiplot の間に行われた画面
設定はほぼすべて失われます。
- replot, remultiplot のいずれの仕様もあなたが気にいらない場合は、
以下のようなカスタマイズしたコマンド列を使用することも可能です。
load $GPVAL_PRE_MULTIPLOT # 元の描画設定を復帰
set style fill transparent # 設定を一つ変更
load #GPVAL_LAST_MULTIPLOT # multiplot コマンド列を再実行
[試験段階] 詳細は変更の可能性あり。現時点でいくつかの制限あり。
- 保存コマンドのうち再実行の際に問題になりそうなある種のコマンド、例え
ば reset, pause, 新しいデータブロックの定義などは、再実行しませ
ん。
- パネル毎に保存するデータは、非線形軸割り当てを解釈するには不十分です
ので、そのグラフは正しく表示されますが、マウス操作では座標を正しく表
示できません。
- 一つの multiplot に対し最大 16 のパネルでマウス操作できます。
multiplot のパネル数が 16 より多い場合、追加パネルは正しく表示されま
すが、マウス操作は正しく行えません。
この制限は、今後改善されるでしょう。
- multiplot のグラフに関しては、コマンドラインからの描画のオン/オフの
トグルスイッチは効きません。
- コマンド "set terminal" と "set output" は、multiplot モード内では受
け付けません。
- ファイルを '-' として入力する plot コマンドのインラインデータは保存
しないので、replot やマウス操作は失敗します。インラインデータを描画、
保存するには、名前付きデータブロックとしてください。例は以下。
$DATA << EOD
1 2 3
4 5 6
EOD
set multiplot
plot $DATA using 1:2 with points pt 5
plot $DATA using 1:3 with points pt 6
unset multiplot
竹野茂治@新潟工科大学
2026-08-21