gnuplotで背景に色を付ける

時系列データの品質管理をするときに特定の範囲内に収まっているかどうかを視覚的に分かりやすくできないかと思って調べたときのメモ。実際には別の人が実装してくださったので、ここで紹介する方法は実行されなかったわけだが、サンプルとしてスクリプトを残しておく。以下のスクリプトをたとえば sample.plt として保存する。

set multiplot layout 3,1
set sample 1000
set xrange [-10:10]
set yrange [-2:2]
set title "test of gnuplot script"

# --- Figure.1 --- #
set object 1 rect from -5,-0.5 to 5,0.5 back fillcolor rgb 'green' fillstyle solid 0.3 noborder
plot sin(x) lt rgb 'red'

# --- Figure.2 --- #
set object 1 rect from graph 0, first -0.5 to graph 1, first 0.5 back fillcolor rgb 'green' fillstyle solid 0.3 noborder
plot cos(x) lt rgb 'blue'

# --- Figure.3 --- #
set object 1 rect from -5,-2.5 to 5,2.5 back fillcolor rgb 'green' fillstyle solid 0.3 noborder
plot sin(5*x)+sin(x) lt rgb 'black'
unset multiplot
pause -1

ターミナル上で、

$ gnuplot sample.plt

として実行してもらえれば、以下の画像のような結果が得られる。

なお、相対座標 (graph x, graph y) と絶対座標 (first x, first y) は混在して表記することができるので、そのような例も記載している。x/y軸の最大、最小がわからないときに端まで塗りつぶす際に使えるかと思う。Figure. 3の例では、set yrange [-2:2] としている中で矩形の領域指定をはみ出した場合でも、枠内にきちんと収まることを確認している。なお、実行環境(gnuplotのバージョン)は以下のとおり。

$ gnuplot -V
gnuplot 5.2 patchlevel 6