43.89 Xtics

x 軸の (見出しのつく) 大目盛りは コマンド set xtics で制御できます。 目盛りは unset xtics で消え、set xtics で (デフォルトの状態の) 目 盛りがつきます。y,z,x2,y2 軸の大目盛りの制御を行なう同様のコマンドがあ ります。

書式:

     set xtics {axis | border} {{no}mirror}
               {in | out} {scale {default | <major> {,<minor>}}}
               {{no}rotate {by <ang>}} {offset <offset> | nooffset}
               {add}
               {  autofreq
                | <incr>
                | <start>, <incr> {,<end>}
                | ({"<label>"} <pos> {<level>} {,{"<label>"}...) }
               { font "name{,<size>}" }
               { textcolor <colorspec> }
     unset xtics
     show xtics

同じ書式が ytics, ztics, x2tics, y2tics, cbtics にも適用され ます。

axisbordergnuplot に目盛り (目盛りの刻自身とその見出し) を、それぞれ軸につけるのか、境界につけるのかを指示します。軸が境界にと ても近い場合、axis を使用すると目盛りの見出し文字を境界の外に出して しまうでしょう。この場合自動的なレイアウトアルゴリズムによる余白設定は 大抵よくないものとなってしまいます。

mirrorgnuplot に反対側の境界の同じ位置に、見出しのない目盛りを 出力するよう指示します。nomirror は、あなたが想像している通りのこと を行ないます。

inout は目盛りの刻みを内側に描くか外側に描くかを切り変えます。

目盛りの刻みのサイズは scale で調整できます。< minor> の指定が省略さ れた場合は、それは 0.5*< major> になります。デフォルトのサイズは、大目 盛りが 1.0 で小目盛りが 0.5 で、これは scale default で呼びだせます。

rotate は、文字列を 90 度回転させて出力させようとします。これは、文 字列の回転をサポートしている出力ドライバ (terminal) では実行されます。 norotate はこれをキャンセルします。rotate by < ang> は角度 < ang> の 回転を行ないますが、これはいくつかの出力形式 (terminal) でサポートされ ています。

x と y 軸の大目盛りのデフォルトは border mirror norotate で、x2, y2 軸は border nomirror norotate がデフォルトです。z 軸には、 {axis | border} オプションは無効で、デフォルトは nomirror です。z 軸の目盛りをミラー化したいなら、多分 set border でそのための空間をあ ける必要があるでしょう。

< offset> は x,y かまたは x,y,z の形式で指定しますが、それに座標系を選 択して、その前に first, second, graph, screen, character の いずれかをつけることもできます。< offset> は刻み文字のデフォルトの位置 からのずれを表し、デフォルトの座標系は character です。詳細は coordinates を参照してください。nooffset はずらしを無効にします。

例:

xtics をより描画に近づける:

     set xtics offset 0,graph 0.05

オプションなしで set xtics を実行すると、目盛りが表示される状態であ れば、それはデフォルトの境界、または軸を復元し、そうでなければ何もしま せん。その前に指定した目盛りの間隔、位置 (と見出し) は保持されます。

目盛りの位置は、デフォルト、またはオプション autofreq が指定されてい れば自動的に計算されます。そうでなければ、次の 2 つの形式で指定されま す:

暗示的な < start> , < incr> , < end> 形式は、目盛りの列を < start> から < end> の間を < incr> の間隔で表示します。< end> を指定しなければ、それは無限大 とみなされます。< incr> は負の値も可能です。< start> < end> の両方が指 定されていない場合、< start> は -∞、< end> は +∞とみなされ、目盛りは < incr> の整数倍の位置に表示されます。軸が対数軸の場合、目盛りの間隔 (増分) は、積因子として使用されます。

負の < start> < incr> を、数値の後ろに指定すると (例えば rotate by < angle> とか offset < offset> の後ろ)、gnuplot の構文解析 器は、その値からその負の < start> < incr> の値の引き算を行おうとする 間違いを犯します。これを回避するには、そのような場合は、0-< start> 0-< incr> のように指定してください。

例:

     set xtics border offset 0,0.5 -5,1,5

最後の ',' のところで失敗します。
     set xtics border offset 0,0.5 0-5,1,5


     set xtics offset 0,0.5 border -5,1,5

ならば、ちゃんと指示通りに、目盛りを境界に、目盛り見出し文字列を 0,0.5 文字分だけずらして、start, increment, end をそれぞれ -5,1,5 に設定しま す。

set grid のオプション 'front', 'back', 'layerdefault' も、x 軸の目盛 りの描画の順序に影響します。

例:

目盛りを 0, 0.5, 1, 1.5, ..., 9.5, 10 の位置に生成

     set xtics 0,.5,10

目盛りを ..., -10, -5, 0, 5, 10, ... に生成

     set xtics 5

目盛りを 1, 100, 1e4, 1e6, 1e8 に生成

     set logscale x; set xtics 1,100,1e8

明示的な ("< label> " < pos> < level> , ...) の形式は、任意の目盛りの位置、 あるいは数字でない見出しの生成も可能にします。この形式では、目盛りは位 置の数字の順に与える必要はありません。各目盛りは位置 (pos) と見出し (label) を持ちますが、見出しは必須ではありません。見出しは二重引用符で 囲まれた文字列であることに注意してください。それは、"hello" のような固 定文字列でも構いませんし、"%3f clients" のようにその位置を数字に変換す る書式文字列を含んでも構いませんし、空文字列 "" でも構いません。より詳 しい情報については set format を参照してください。もし、文字列が与え られなければ、デフォルトの数字の見出しが使用されます。

明示的な形式では 3 つ目のパラメータとして "レベル" (level) を与えるこ とができます。デフォルトのレベルは 0 で、これは大目盛りを意味し、レベ ルが 1 の場合小目盛りが生成されます。レベルを指定する場合はラベルも必 ず指定する必要があります。

例:

     set xtics ("low" 0, "medium" 50, "high" 100)
     set xtics (1,2,4,8,16,32,64,128,256,512,1024)
     set ytics ("bottom" 0, "" 10, "top" 20)
     set ytics ("bottom" 0, "" 10 1, "top" 20)

2 番目の例では、全ての目盛りが見出し付けされます。3 番目の例では、端の ものだけが見出し付けされます。4 番目の例の、見出しのない目盛りは小目盛 りになります。

通常明示的な (手動の) 目盛り位置が与えられた場合、自動的に生成される目 盛りは使われません。逆に、set xtics auto のようなものが指定された場 合は、以前に手動で設定した目盛りは消されてしまします。この手動の目盛り と自動的な目盛りを共存させるにはキーワード add を使用してください。 これは追加する目盛りのスタイルの前に書かなければいけません。

例:

     set xtics 0,.5,10
     set xtics add ("Pi" 3.14159)

これは自動的に目盛りの刻みを x 軸に 0.5 間隔でつけますが、πのところに 明示的な見出しも追加します。

しかし指定しても、表示されるのはあくまで描画範囲のものだけです。

目盛りの見出しの書式 (または省略) は set format で制御されます。ただ しそれは set xtics (< label> ) の形式の明示的な見出し文字列が含まれ ていない場合だけです。

(見出し付けされない) 小目盛りは、set mxtics コマンドで自動的に追加す るか、または位置を手動で set xtics ("" < pos> 1, ...) の形式で与える こともできます。

時系列データの場合、位置の値は timefmt の書式にしたがった日付、また は時刻を引用符で囲んで与えなければいけません。< start> , < incr> , < end> 形式を使う場合、< start> < end> timefmt に従って与えますが、 < incr> は秒単位で与える必要があります。その時刻は実際には set format で与えた書式に従って表示されます。

例:

     set xdata time
     set timefmt "%d/%m"
     set format x "%b %d"
     set xrange ["01/12":"06/12"]
     set xtics "01/12", 172800, "05/12"


     set xdata time
     set timefmt "%d/%m"
     set format x "%b %d"
     set xrange ["01/12":"06/12"]
     set xtics ("01/12", "" "03/12", "05/12")

これらは両方とも "Dec 1", "Dec 3", "Dec 5", の目盛りを生成しますが、2 番目の例 "Dec 3" の目盛りは見出し付けされません。

竹野茂治@新潟工科大学
2007年8月27日