87.34 凡例 (key)

コマンド set key は、描画領域内の各グラフに対するタイトルとサンプル (線、点、箱) を持つ凡例 (または表題) を有効にします。凡例の機能は、 set key offunset key で無効にできます。凡例の個々の項目につい ては、対応する plot コマンドでキーワード notitle を使用することで無 効にできます。凡例のタイトル文字列は、オプション set key autotitle や、個々の plotsplot コマンド上の title キーワードで制御でき ます。詳細は以下参照: plot title (77.11)

書式:

     set key {on|off} {default}
           {{inside | outside} | {lmargin | rmargin | tmargin | bmargin}
             | {at <position>}}
           {left | right | center} {top | bottom | center}
           {vertical | horizontal} {Left | Right}
           {{no}opaque}
           {{no}reverse} {{no}invert}
           {samplen <sample_length>} {spacing <vertical_spacing>}
           {width <width_increment>} {height <height_increment>}
           {{no}autotitle {columnheader}}
           {title "<text>"} {{no}enhanced}
           {font "<face>,<size>"} {textcolor <colorspec>}
           {{no}box {linestyle <style> | linetype <type> | linewidth <width>}}
           {maxcols {<max no. of columns> | auto}}
           {maxrows {<max no. of rows> | auto}}
     unset key
     show key

キー内の各要素は vertical (縦) または horizontal (横) に従って重ね られます。vertical の場合、凡例は可能ならば 2,3 個の縦の列を使います。 すなわち、各要素は垂直スペースがなくなるまでは 1 つの列に整列されます が、そこから新しい列が開始されます。垂直スペースは、maxrows を使って 制限できます。horizontal の場合は、凡例は横の行をできるだけ少なく使 おうとします。水平方向のスペースは maxcols により制限できます。

デフォルトでは、凡例はグラフ領域の内側の右上の角に置かれます。キーワー ド left, right, top, bottom, center, inside, outside, lmargin, rmargin, tmargin, bmargin (, above, over, below, under) は、グラフ領域の他の場所への自動的な配置のために使用します。 凡例の描画をどこに置くかをより詳しく指示するための at < position> も あります。この場合、キーワード left, right, top, bottom, center が同様の基準点合わせの設定の目的で使われます。 より詳しくは、以下参照: key placement (87.34.1)

グラフのタイトルの行揃えは Left, Right (デフォルト) で指示し ます。ラベル文字列と曲線のサンプルは左右入れ替えることができます (reverse) し、 全体を枠で囲むこともできます (box {...})。その枠の 線は、線種 (linetype), 線幅 (linewidth)、あるいは定義済のラインス タイル (linestyle) を指定することもできます。

デフォルトでは、凡例は一つのグラフと同時に作られます。すなわち、凡例の 記号とタイトルは、それに対応するグラフと同時に描かれます。それは、新し いグラフが時には凡例の上に要素をかぶせて配置しうることを意味します。 set key opaque は、凡例をすべてのグラフの描画が終った後に生成させま す。この場合、凡例の領域は背景色で塗りつぶされて凡例の記号とタイトルが 描かれます。よって、凡例自身はいくつかの描画要素を覆い隠してしまい得る ことになります。set key noopaque でデフォルトに復帰できます。

デフォルトでは、最初の描画のラベルが凡例の一番上に現われ、それに続くラ ベルがその下に並んで行きます。オプション invert は、最初のラベルを凡 例の一番下に置き、それに続くラベルをその上に並べて行きます。このオプシ ョンは、凡例のラベルの縦の並びの順番を、積み上げ形式のヒストグラム (histograms) の箱の順番に合わせるときに便利でしょう。

< height_increment> は、凡例の箱の高さに加えたり減らしたりする高さ (何 文字分か) を表す数値です。これは主に、凡例の回りに箱を描く場合で、凡例 の並びの回りの境界線をより大きくしたい場合のものです。

plotsplot で描画される全ての曲線は、デフォルトのオプション autotitles に従ってタイトルがつけられます。タイトルの自動生成は、 noautotaitle で抑制できますがその場合、(s)plot ... title ... で明 示的に指定されたタイトルのみが描かれることになります。

コマンド set key autotitle columnheader は、各入力データの先頭行の各 列のエントリをテキスト文字列と解釈し、対応する描画グラフのタイトルとし て使用します。描画される量が、複数の列データの関数である場合は、 gnuplot はどの列をタイトルの描画に使えばいいのかわかりませんので、その ような場合、plot コマンド上で、例えば以下のように明示的にタイトルの列を指定する必要があります。


     plot "datafile" using (($2+$3)/$4) title columnhead(3) with lines

全体に渡るタイトルを凡例の上につけることもできます (title "< text> ")。 単一引用符 (') と二重引用符 (") の違いについては、以下も参照: syntax (27)。 凡例のタイトルの行揃えは、グラフのタイトルの行揃えと同じものが使われま す。

set key のデフォルトは、on, right, top, vertical, Right, noreverse, noinvert, samplen 4, spacing 1.25, title "", nobox です。凡例の枠の線種はデフォルトではグラフ描画の外枠と同じもの が使われます。set key default とするとデフォルトの設定に戻ります。

凡例は、1 行に 1 曲線分ずつの数行のまとまりとして書かれます。各行の右 側には (reverse を使っていれば左側には) その曲線と同じ種類の直線のサ ンプルが引かれ、他の側には plot コマンドから得られる文字列 (title) が置かれます。これらの行は、架空の直線が凡例の左側と右側を分けるかのよ うに垂直に整列されます。コマンド set key で指定する座標はこの架空の 線分の上の端の座標です。plot では直線の位置を指定するために x と y だけが使われ、splot では、x, y, z の値全てを使い、グラフを 2 次元面 へ投影するのと同じ方法を使って、架空の直線の 2 次元画面での位置を生成 します。

TeX や、整形情報が文字列に埋め込まれる出力を使う場合は、gnuplot は凡 例の位置合わせのための文字列の幅を正しく評価することしかできません。よ って凡例を左に置く場合は set key left Left reverse という組合せを使 うのがいいでしょう。

splot で等高線を書く場合、デフォルトでは凡例に等高線のラベルも表示し ます。その表示は set cntrlabel format で調整できます。

例:

以下はデフォルトの位置に凡例を表示します:

     set key default

以下は凡例を表示しなくします:

     unset key

以下はデフォルトの (第一の) 座標系での (2,3.5,2) の位置に凡例を表示 します:

     set key at 2,3.5,2

以下は凡例をグラフの下に表示します:

     set key below

以下は凡例を左下角に表示し、テキストは左に行揃えで、タイトルをつけ、線種 3 の外枠を書きます:

     set key left bottom Left title 'Legend' box 3



Subsections
竹野茂治@新潟工科大学
2015年1月5日