GNUPLOT

- not so Frequently Asked Questions -

update 2004/9/5

凡例(Legend)あれこれ

でもなんで,keyなんて呼ぶんだろう....

凡例を消したい.

2つの方法があります.一つは,

gnuplot> set nokey

とする方法で,凡例は全部消えます.もう一つは,plotする際に notitle を指定する方法です.こちらでは,指定したものの凡例だけが消え ます.次の例では関数 f(x)の凡例だけが消えます.

gnuplot> plot f(x) notitle, "file.dat" title "data"
up

凡例の表示場所を変えたい.

標準では,凡例は右上に表示されます.これを変えるには set key を使います.

gnuplot> set key left bottom

とすると,左下になります.指定できるオプションは,次の通りです.

left 左側
right 右側
top 上側
bottom 下側
outside 図の右側の外
below 図の下側の外

幾つかのものは組み合わせて指定できます.outside bottomなら, 右外側の下の方に凡例が表示されます.

凡例を表示する座標を, 直接指定することもできます.

gnuplot> set key 100,100

なら,(X,Y)=(100,100)の位置に表示されます.一つ目の凡例の, 表題と点や線の真中が,このときの座標になります.この座標はプロットしている XY軸の数値と一致しています.プロットに関係なく任意の座標での位置を 与えるには,座標系の項目を参照してください.

up

凡例の中の誤差棒を消したい.

誤差付きのデータをプロットすると,凡例中の記号にも誤差棒が付きます が,Y-方向に誤差があっても凡例中ではX-方向になってしまいます.これなら 誤差棒が無い方がマシなので,これを表示させないようにします.あいにくと うまい方法が思い付かないので,次のようにしてみました.

次のデータ(test.dat)をプロットする場合を考えます.

#  X     Y     Y-error
1.0   1.2   0.2
2.0   1.8   0.3
3.0   1.6   0.2

これをプロットすると,

gnuplot> set xrange [0:4]
gnuplot> set yrange [0:3]
gnuplot> plot "test.dat" usi 1:2:3 title "data" w yerrorbars
fig/sample2.3a

この様に,凡例中の誤差棒は横向きになってしまいます.
ちょっとダサイですが

gnuplot> set xrange [0:4]
gnuplot> set yrange [0:3]
gnuplot> plot "test.dat" usi 1:2:3 notitle        w yerrorbars 1,\
"test.dat" usi 1:2     title "data" w points     1
なんてやると,誤差棒は消えます.
fig/sample2.3b
up

テキスト中にポストスクリプトの記号を使うと,表示位置がおかしくなる.

凡例の中のテキスト(plotコマンドのtitleオプションで付けられるもの) の中で,{/Symbol a}のようにポストスクリプトで記号を表示する場合,凡例 の表示位置がおかしくなる場合があります.例えば, set key left で図の左側に凡例を寄せようとしても,左に空白が出てしまいます.こ れは,凡例の表示場所を計算する際に,{/Symbol a}を "α" 一文字として数 えてくれないために起こります.凡例を左に寄せても,中のテキストは右揃え ですので,余分な文字数の分だけ右に寄ってしまいます.凡例表示の際に, 表示位置を直接指定する他には,正しい位置に持って来る 手段は無いようです.

up

行間隔を調整する.

凡例の行間隔は, set key spacing で変えられます.行間隔を1.5倍 にするには, set key spacing 1.5 とします.

up

凡例に枠を付ける.

凡例に枠を付けるには, set key box とします.枠の線種は,グラフの 枠線と同じもの(-1の線種)になります.これを変えるには,boxに続けて線種の数字を 与えます.また,次の様に,ユーザ定義の線種を与えることもできます.

gnuplot> set linestyle 1 lt 2 lw 3
gnuplot> set key box linestyle 1

gnuplot ver.4.0の場合は以下のようにします.

gnuplot> set style line 1 lt 2 lw 3
gnuplot> set key box linestyle 1
up