グラフに文字を書く場合はset label
コマンドを使用します。label
というキーワードに倣って、このページでは表示する文字を「ラベル」と呼ぶことにします。
まず、簡単な例を示します。
set label 1 at graph 0.5,0.5 "label 1"
plot sin(x)
上の例では"label 1"
という文字列のラベルを表示させています。set label
コマンドではまずラベルのインデックスを整数で指定します。このインデックスは、後でラベルを書き換えたり削除したりするときに必要です。
ラベルを表示する場所はat **,**
で指定します。場所の指定には幾つかの方法があり、graph **,**
という指定方法ではグラフの左下を(0,0)、右上を(1,1)とする座標に対してラベルの位置を指定します。他に、描画領域の左下を(0,0)、右上を(1,1)とする座標系に対して指定するscreen **,**
という方法や、プロットされている関数/データのx,y座標に対して指定するfirst **,**
、同じくx2,y2座標に対して指定するsecond **,**
があります。
具体的には以下の例をご覧下さい。位置の指定方法によってラベルの位置が異なるのがお分かりいただけると思います。なお、label 5
の例のようにxとyで別々の指定方法を適用することもできます。
set tmargin 5
set bmargin 5
set rmargin 8
set lmargin 8
set xrange [-1:1]
set yrange [-1:1]
set x2range [0.0:0.15]
set y2range [0.0:0.15]
set xtics nomirror
set x2tics nomirror
set ytics nomirror
set y2tics nomirror
set label 1 at graph 0.1,0.1 "+ at graph 0.1,0.1"
set label 2 at screen 0.1,0.1 "+ at screen 0.1,0.1"
set label 3 at first 0.1,0.1 "+ at first 0.1,0.1"
set label 4 at second 0.1,0.1 "+ at second 0.1,0.1"
set label 5 at graph 0.1,first 0.1 "+ at graph 0.1, first 0.1"
plot 1/0 notitle
これらの座標指定方法の上手な使い方に関しては「上手なラベル配置のコツ」をご覧下さい。
at ***
で指定した場所にラベルのどの位置を合わせるかは、キーワードleft
/center
/right
で指定します。left
はラベルの左端をat ***
で指定した位置にあわせます。同様に、center
はラベルの中央を、right
はラベルの右端をそれぞれあわせます。
具体的には、以下の例をご覧下さい。以下の3つのグラフはいずれも横位置がgraph 0.5
ですが、基準位置のキーワードが異なるため、ラベルの位置も左右に異なっています。
set xrange [-1:1]
set yrange [-1:1]
set label 1 left at graph 0.5,0.2 "+ left at graph 0.5,0.2"
set label 2 center at graph 0.5,0.5 "center at gr+aph 0.5,0.5"
set label 3 right at graph 0.5,0.8 "right at graph 0.5,0.8 +"
plot 1/0 notitle
これらの上手な使い方に関しては「上手なラベル配置のコツ」をご覧下さい。
ラベルは回転させることも出来ます。回転させるにはrotate by **
を使います。**
には角度を入れます。下図のように、回転は基準位置を中心に行われます。
set xrange [-1:1]
set yrange [-1:1]
set label 1 left at graph 0.2,0.5 "+ left rotate by 90" rotate by 90
set label 2 center at graph 0.5,0.5 "center rot+ate by 180" rotate by 180
set label 3 right at graph 0.8,0.5 "right rotete by 270 +" rotate by 270
plot 1/0 notitle
また、ラベルの文字に色をつけたり、データ用のポイントを表示させたりすることも出来ます。フォントを変えることもできます。以下の例のように、色をつける場合はtextcolor ***
を使います。***
にはデータ用の線の色と同じ色を使うlinetype **
(lt **
と省略可)、色名を指定できるrgb ***
、palette
を用いる方法等があります。データ用のポイントはpoint ***
で表示可能ですが、そのままだと文字列と重なってしまうので、label 5
のようにoffset **
と併用するほうが良いかもしれません。フォントはfont ***
で変更します。
set xrange [-1:1]
set yrange [-1:1]
set palette model HSV functions gray,1,1 # HSV color space
unset colorbox
set label 1 left at graph 0.1,0.8 "textcolor linetype 1" textcolor lt 1
set label 2 left at graph 0.4,0.8 "textcolor rgb \"blue\"" textcolor rgb "blue"
set label 3 left at graph 0.7,0.8 "textcolor pallette frac 0.5" textcolor palette frac 0.5
set label 4 left at graph 0.1,0.5 "point pointtype 5 pointsize 2" point pt 5 ps 2
set label 5 left at graph 0.5,0.5 "point pointtype 5 pointsize 2 offset 1" point pt 5 ps 2 offset 1
set label 6 left at graph 0.1,0.2 "font \"Times,30\"" font "Times,30"
plot 1/0 notitle
座標の指定やラベル基準位置の指定を上手く使うことでラベルの配置は格段に楽になります。first
やsecond
はデータや関数に対してラベル位置が固定されるので、個々のデータの説明などを表示するのに適しています。一方、graph
やscreen
はグラフに対してラベル位置が固定されるので、グラフ全体の情報を表示する場合などに適しています。また、ラベルの基準位置も適宜工夫するのが良いでしょう。
例えば、以下の例では1から3のラベルはx位置はピークの位置に対して固定しy位置はグラフに対して固定したいため、at first **,graph **
という指定方法をしています。また、ピークとラベルの中央をそろえるため、中央ぞろえ(center
)にしています。4番目のラベルはグラフの右上に表示したいため、右詰(right
)にして、座標はgraph
で指定しています。5番目のラベルは描画域の真ん中上部に置きたいので、screen
座標系を使い、中央ぞろえにしています。
set samples 1000
set xrange [0:100]
set yrange [-1:21]
gauss(x,x0,A,s)=A*exp(-((x-x0)/s)**2)
set tmargin 5
set label 1 center at first 10,graph 1.05 "peak1"
set label 2 center at first 40,graph 1.05 "peak2"
set label 3 center at first 80,graph 1.05 "peak3"
set label 4 right at graph 0.99,0.9 "simulation 2009/xx/xx"
set label 5 center at screen 0.5,0.9 "result"
plot gauss(x,10,10,1)+gauss(x,40,20,1)+gauss(x,80,3,1) notitle
このようにしておくと、例えばxrange
を変更しても、下のように関数/データに関係する部分だけが動いて、意図通りに表示されます。
set samples 1000
set xrange [0:150]
set yrange [-1:21]
gauss(x,x0,A,s)=A*exp(-((x-x0)/s)**2)
set tmargin 5
set label 1 center at first 10,graph 1.05 "peak1"
set label 2 center at first 40,graph 1.05 "peak2"
set label 3 center at first 80,graph 1.05 "peak3"
set label 4 right at graph 0.99,0.9 "simulation 2009/xx/xx"
set label 5 center at screen 0.5,0.9 "result"
plot gauss(x,10,10,1)+gauss(x,40,20,1)+gauss(x,80,3,1) notitle