43.2 Arrow

set arrow コマンドを使うことにより、グラフ上の任意の位置に矢印を表示 することができます。

書式:

     set arrow {<tag>} {from <position>} {to|rto <position>}
               { {arrowstyle | as <arrow_style>}
                 | { {nohead | head | backhead | heads}
                     {size <length>,<angle>{,<backangle>}}
                     {filled | empty | nofilled}
                     {front | back}
                     { {linestyle | ls <line_style>}
                       | {linetype | lt <line_type>}
                         {linewidth | lw <line_width} } } }


     unset arrow {<tag>}
     show arrow {<tag>}

タグ < tag> は各矢印を識別する整数です。タグを指定しない場合は、その 時点で未使用の最も小さい数が自動的に割り当てられます。タグを使うこと で、特定の矢印を変更したり、削除したりできます。既に存在する矢印の属性を 変更する場合は、タグを明示した set arrow コマンドで変更箇所を指定して ください。

< position> は x,y あるいは x,y,z で指定します。そしてその前に座標系を 選択するために first, second, graph, screen, character を置 くことができます。座標を指定しなければデフォルトでは 0 と見なされます。 矢印の端点は、5 つの座標系、すなわち firstsecond の軸、あるい は graph, screen, character のうちの 1 つを選択して指定できます。 詳細は、以下参照: coordinates (p. [*])"from" の場所の座標系指定子は、"to" の場所に影響を及ぼすことはありません。グラフの枠をはみ出る矢印を書くこ ともできますが、出力端末によってはエラーを生ずることがあります。終点が "to" の代わりに "rto" で指定されている場合、始点からの相対的な位置に描 かれます。この場合、線形軸 (非対数軸)、および graph, screen 座標に 対しては、始点と終点の距離が与えられた相対的な値に対応します。一方、対 数軸に対しては、与えられた相対的な値は、始点から終点への積因子 (比) に 対応します。よって、対数軸の場合、相対的な値として 0 や負の値を与える ことは許されません。

nohead を指定することで、矢先のない矢、すなわち線分を書くこともでき ます。これは描画の上に線分を描く別な方法を与えます。デフォルトでは 1 つの矢は 1 つの矢先をその終端に持っています。backhead は始点に矢先を 描き、heads は線分の両端に矢先を描きます。全ての出力形式が両端の矢先 の描画をサポートしているわけではありません。

矢先の大きさは size < length> ,< angle> または size < length> ,< angle> ,< backangle> で制御できます。< length> は矢先 の各枝の長さで、< angle> は矢先の枝と矢軸がなす角度 (単位は度) です。 < length> の単位は x 軸と同じですが、それは < length> の前に first, second, graph, screen, character をつけることで変更で きます。詳細は、以下参照: coordinates (p. [*])< backangle> は、filled か または empty がともに使われた場合のみ効力を持ち、その場合、 < backangle> は矢先の後ろの部分の矢軸との切り角 (< angle> と同じ方 向; 単位は度) になります。出力形式 fig は、制限された切り角関数を持 っていて、それは 3 つの異なる形をサポートしていて、それは 2 つの閾値で 決定します: 70 度未満の場合、矢先はへこんだ切り角を持ち、110 度を超え る場合、後ろの部分に尖った角を持ち、その間の角では、矢先の後ろは直線に なります。

filled を指定すると、塗りつぶされた矢先を作ります (heads が使われ ている場合)。塗りつぶしは、多角形の塗りつぶしが行えるような出力形式で サポートされていて、そのリストについては、以下参照: pm3d (p. [*])。他の出力形 式では矢先は閉じられますが塗りつぶされません。それと同じ効果 (閉じられ るが塗られない) は、empty を指定しても得られます。また、metafont, metapost, latex, tgif のように、矢をそれら自身の独自のルーチンで 描くような出力形式では、矢先の塗りつぶしや矢先の枠線描きはもちろんサポ ートされません。

線種はユーザの定義したラインスタイルのリストから選ぶこともできますし (以下参照: set style line (p. [*]))、用意されている < line_type> の値 (デフォ ルトのラインスタイルのリストの番号) そして < linewidth> (デフォルトの幅 の倍数) を使ってここで定義することもできます。

しかし、ユーザー定義済のラインスタイルが選択された場合、その属性 (線種、 幅) は、単に他の set arrow コマンドで適当な番号や lt, lw などを 指定しても、変更はできないことに注意して下さい。

front を指定すると、矢はグラフのデータの上に描かれます。back が指 定された場合 (デフォルト) は矢はグラフのデータの下に描かれます。front を使えば、密集したデータで矢が見えなくなることを防ぐことができます。

例:

原点から (1,2) への矢印をユーザ定義済のラインスタイル 5 で描くには:

     set arrow to 1,2 ls 5

描画領域の左下角から (-5,5,3) へタグ番号 3 の矢印を描くには:

     set arrow 3 from graph 0,0 to -5,5,3

矢印の端を 1,1,1 に変更し、矢先を外して幅を 2 にするには:

     set arrow 3 to 1,1,1 nohead lw 2

x=3 の所へグラフの下から上まで鉛直線を描くには:

     set arrow from 3, graph 0 to 3, graph 1 nohead

T 字型の矢先を両端に持つ鉛直方向の矢を描くには:

     set arrow 3 from 0,-5 to 0,5 heads size screen 0.1,90

始点からの相対的な距離をグラフ座標で与えて矢を描くには:

     set arrow from 0,-5 rto graph 0.1,0.1

x の対数軸に相対的な終点を指定して矢を描く場合:

     set logscale x
     set arrow from 100,-5 rto 10,10

これは 100,-5 から 1000,5 までの矢を描きます。線形軸 (y) に対しては相 対的な座標 10 が "差 10" を意味するのに対し、対数軸 (x) に対しては相対 的な座標 10 は "積因子 10" として働きます。

2 番の矢印を消すには:

     unset arrow 2

全ての矢印を消すには:

     unset arrow

全ての矢印の情報を (タグの順に) 見るには:

     show arrow

http://gnuplot.sourceforge.net/demo/arrowstyle.html矢印のデモ

竹野茂治@新潟工科大学
2009年9月7日