GNUPLOT

- not so Frequently Asked Questions -

update 2004/12/14

2次元プロットのあれこれ (その5)

1 | 2 | 3 | 4 | 5 | 6 | 7

図の中に図を描きたい

グラフ中の空いた部分に,別の小さな図を描いてみましょう.よくあるの は,図の込み入った部分の拡大図を作るものです.複数の図を同時に描くので, ここではmultiplotを使います.全体の図の サイズを1としたときに,図中の図の縦横を0.5にしたものを作ります. multiplotに入った後,まず全体の図を描きます.

gnuplot> set xrange [ 0 : 20 ]
gnuplot> set yrange [ 0 : 6 ]
gnuplot> set xtics 5
gnuplot> set ytics 1
gnuplot> set multiplot
multiplot> set origin 0.0,0.0
multiplot> set size 1.0,1.0
multiplot> plot "file.dat" u 1:2:3 notitle with yerrorbars,\
>               "file.cal" u 1:2   notitle with lines

図の原点を空いた部分(0.45,0.1)に移動した後,縮小したグラフを描きます. XとYのレンジは,拡大したい部分を指定します.拡大窓にプロットするの は,レンジが違う以外は上の全体のものと同じですので,replot を使うことができます.

multiplot> set origin 0.45,0.1
multiplot> set size 0.5,0.5
multiplot> set xrange [ 1 : 5 ]
multiplot> set yrange [ 2.4 : 3.0 ]
multiplot> set ytics 0.5
multiplot> replot
multiplot> set nomultiplot
gnuplot>
fig/sample5.14

Xの小さい部分が拡大されて見やすくなっていませんか.ここでは,拡大 窓の位置をうまく設定して,両方の図が重ならないようにしていますが,全体 図中の線や点が拡大図の中に入ってしまうと,両者は重なって表示されてしま います.gnuplotで,このような部分を消すことはできません.

軸名を入れる場合は全体の図だけにしておき,小さい方の図には付けないほ うが良いでしょう.また,全体を縮小するEPSを作る場合は,全体の大きさ を決めるset size は multiplotモードに入る前に定義しないと いけません.multiplotに入った後でサイズを定義しても,Postscriptファ イルに書き込まれるBoundingBoxは画面全体になってしまいます.完成品が ぷろっとぎゃらりぃ にありますので参 考にしてください.

up

簡単な棒グラフ.

スタイル一覧にあるように, gnuplotが描く棒グラフ with boxes は中空の矩形になります.内 部の塗りつぶしはver.3.6以前のgnuplotはできませんが,ver.3.8から可能に なりました.

Postscriptに出力するなら,非常に太い線を使って with implusesで描くのが簡単です.下の例では,1番の線種の幅を50倍に しています.

gnuplot> set term postscript eps enhanced color
gnuplot> set linestyle 1 lt 1 lw 50
gnuplot> # for gnuplot ver.4
gnuplot> # set style line 1 lt 1 lw 50
gnuplot> plot "test.dat" using 1:2 with imp ls 1
fig/sample5.15

up

[ver.4] ONLY !

Ver.4以降では,box styleでの矩形を塗りつぶすオプションが追加されてい ます. with boxes fs [pattern | solid] (fillstyle)のオプションを付けて作画します. set style fill を用いて,塗りつぶすパターンを別に設定することもできます.

with boxes fs pattern の場合は,使用するパターンを番号で 指定します. solid の場合は,0から1までの塗りつぶしの濃さを 指定します.

下の例では,棒の幅は3とし,これを(3)で与えています.

gnuplot> plot "test.dat" usi 1:2:(3)      w boxes fs pattern 1,\
gnuplot>      "test.dat" usi ($1+5):2:(3) w boxes fs solid 0.7
fig/sample5.15b
up