書式:
bind {allwindows} [<key-sequence>] ["<gnuplot commands>"]
bind <key-sequence> ""
reset bind
bindは、ホットキーの定義、再定義に使用します。ホットキーとは、入力カーソルがドライバのウィンドウ内 にあるときに、あるキー、または複数のキーを押すことで、gnuplotのコマンド列を実行させる機能のことを 言います。bindは、gnuplotがmouseをサポートするようにコンパイルされていてかつマウスが有効な出力 形式上で使われてる場合にのみ有効であることに注意してください。ユーザ指定のキー割当(binding)は、組
み込み(builtin)キー割当を置き換えますが、<space>と’q’ は通常は再定義はできません。その唯一の例外
については、以下参照: bind space (p.38)。
マウスボタンは1のみ、そして2D描画に関してのみ再定義できます。
ホットキーの一覧を得るには show bind, または bind とタイプするか、グラフウィンドウ上でホットキー
’h’を入力してください。
キー定義は、reset bind でデフォルトの状態に復帰できます。
修飾キーを含む複数のキーの定義は引用符で囲む必要があることに注意してください。
標準ではホットキーは現在の描画ウィンドウ上に入力カーソルがある場合のみ認識されます。bind allwindows
<key> ... (bind all <key>... と省略可)は、<key>の割当を、それが現在の有効なものか否かに関わら
ず、すべてのgnuplotの描画ウィンドウ上で可能にします。この場合、gnuplot変数MOUSE KEY WINDOW にそれが行なわれたウィンドウのIDが保存されるのでそれをキーに割り当てたコマンドで使用することがで きます。
例:
-キー割当の設定:
bind a "replot"
bind "ctrl-a" "plot x*x"
bind "ctrl-alt-a" ’print "great"’
bind Home "set view 60,30; replot"
bind all Home ’print "This is window ",MOUSE_KEY_WINDOW’
-キー割当を表示:
bind "ctrl-a" # ctrl-a に対するキー割当を表示 bind # 全てのキー定義を表示
show bind # 全てのキー定義を表示
-キー割当を削除:
bind "ctrl-alt-a" "" # ctrl-alt-a のキー割当を削除 (組み込みキー定義は削除されません)
reset bind # デフォルト (組み込み) のキー定義を導入
bind! # "reset bind" の別の形式 (非推奨)
-トグルスイッチ形式にキー割当:
v=0
bind "ctrl-r" "v=v+1;if(v%2)set term x11 noraise; else set term x11 raise"
修飾キー(ctrl / alt)は大文字小文字の区別はありませんが、キーはそうではありません:
ctrl-alt-a == CtRl-alT-a ctrl-alt-a != ctrl-alt-A 修飾キー(alt == meta)の一覧:
ctrl, alt
サポートされている特殊キーの一覧:
"BackSpace", "Tab", "Linefeed", "Clear", "Return", "Pause", "Scroll_Lock",
"Sys_Req", "Escape", "Delete", "Home", "Left", "Up", "Right", "Down",
"PageUp", "PageDown", "End", "Begin",
"KP_Space", "KP_Tab", "KP_Enter", "KP_F1", "KP_F2", "KP_F3", "KP_F4",
"KP_Home", "KP_Left", "KP_Up", "KP_Right", "KP_Down", "KP_PageUp",
"KP_PageDown", "KP_End", "KP_Begin", "KP_Insert", "KP_Delete", "KP_Equal",
"KP_Multiply", "KP_Add", "KP_Separator", "KP_Subtract", "KP_Decimal",
"KP_Divide",
"KP_1" - "KP_9", "F1" - "F12"
以下は、実際のキーではなく、ウィンドウに関するイベントです:
"Button1" "Close"
以下も参照: mouse (p.129)。
Bind space
gnuplotが、configure時にオプション–enable-rase-consoleをつけてインストールされた場合は、描画ウィンド
ウ内で<space>をタイプするとgnuplotのコマンドウィンドウが前面に出ます。このホットキーは、’gnuplot
-ctrlq’のようにしてgnuplotを起動するか、またはXリソースの’gnuplot*ctrlq’を設定することでctrl-space に変更できます。以下参照: x11 command-line-options (p.233)。
マウス用の変数 (Mouse variables)
mousing(マウス機能)が有効な場合、現在のウィンドウ上でのマウスクリックによってgnuplotのコマンド
ライン上で使うことができる色々なユーザ変数が設定されます。クリック時のマウスの座標は変数MOUSE X,
MOUSE Y, MOUSE X2, MOUSE Y2に代入されます。クリックされたボタンや、そのときのメタキーの状
態はMOUSE BUTTON, MOUSE SHIFT, MOUSE ALT, MOUSE CTRLに代入されます。これらの変数は
任意の描画の開始時には未定義で、有効な描画ウィンドウ中でのマウスクリックイベントによって初めて定義 されます。有効な描画ウィンドウ中でマウスが既にクリックされたかどうかをスクリプトから調べるには、こ れらの変数のうちのどれか一つが定義されているかどうかをチェックすれば十分です。
plot ’something’
pause mouse
if (defined(MOUSE_BUTTON)) call ’something_else’; \ else print "No mouse click."
描画ウィンドウ上での一連のキー入力を追跡することも、マウスコードを使うことで可能となります。
plot ’something’
pause mouse keypress
print "Keystroke ", MOUSE_KEY, " at ", MOUSE_X, " ", MOUSE_Y
pause mouse keypressが、キー入力で終了した場合は MOUSE KEY には押されたキーのASCIIコード が保存されます。MOUSE CHARにはその文字自身が文字列値として保存されます。pauseコマンドが (例え
ばctrl-C や描画ウィンドウが外部から閉じられるなどして)異常終了した場合は MOUSE KEYは-1 になり
ます。
マウスによる拡大の後の新しい描画範囲は、GPVAL X MIN, GPVAL X MAX, GPVAL Y MIN,
GP-VAL Y MAXで参照できることに注意してください。以下参照: gnuplot-defined variables (p. 31)。
残留 (Persist)
gnuplotの多くの出力形式 (aqua, pm, qt, x11, windows, wxt, ...) が、スクリーン上にグラフをその中に描い た表示用のウィンドウを別に開きます。オプションpersistは、主たるプログラムが終了したときにも、それ らのウィンドウを残すようgnuplotに指示します。これは、非対話型出力形式出力では何もしません。例えば、
以下のコマンドを実行すると
gnuplot -persist -e ’plot [-5:5] sinh(x)’
gnuplotは、表示ウィンドウを開き、その中にグラフを描き、そして終了し、表示ウィンドウはグラフをその
中に持ったままスクリーンに残ります。出力形式によっては、その残ったウィンドウ上でも多少のマウス操作 が可能な場合もあります。しかし、グラフの再描画を要求するズーム(とその逆)のような操作は、既にプログ ラムが終了しているので一般的には無理です。
新しい出力形式を設定するときにもpersistやnopersist を指定できます。例:
set term qt persist size 700,500
描画 (Plotting)
gnuplotには描画を生成する 3 つのコマンド、plot,splot, replotがあります。plotは 2 次元描画を生成 し、splotは 3次元描画(もちろん実際には2 次元面への射影)を生成します。replotは与えられた引数を、
直前のplotまたはsplotコマンドに追加し、それを実行します。
描画に関する一般的な情報の大半は、plotに関する項で見つかります。3 次元描画に固有の情報は splot の 項にあります。
plot は xy 直交座標系と極座標系が使えます。極座標系の詳細に関しては以下参照: set polar (p. 145)。
splot はxyz 直交座標系のみしか扱えませんが、コマンドset mappingで他の2, 3 の座標系を使用するこ とが出来ます。さらに、オプションusingを使えば、plotでもsplotでもほとんどどんな座標系でもそれを 定義して使うことが出来ます。
plotでは、4つの境界x (下), x2 (上), y (左), y2 (右)をそれぞれ独立な軸として扱うこともできます。オプ
ションaxesで、与えられた関数やデータ集合をどの軸のペアで表示させるかを選べます。また、各軸の縮尺 や見出しづけを完全に制御するために十分な補佐となる set コマンド群が存在します。いくつかのコマンド は、set xlabelのように軸の名前をその中に持っていますし、それ以外のものはset logscale xyのように、
1つ、または複数の軸の名前をオプションとしてとります。z軸を制御するオプションやコマンドは2 次元グ ラフには効力を持ちません。
splotは、点や線に加えて曲面や等高線を書くことができます。3次元の関数の格子定義に関する情報について
は、以下参照: set isosamples (p.120)。3次元データのファイルに必要な形態については、以下参照: splot datafile (p. 171)。等高線に関する情報については、以下参照: set contour (p. 108), set cntrparam (p. 105)。
splotでの縮尺や見出し付けの制御は、x2軸とy2 軸を制御するコマンドやオプションは効果がなく、z軸を
制御するものにはもちろん効果がある、ということを除けばplotと全く同じです。
初期化 (Startup (initialization))
起動時に、gnuplotはまずシステム用の初期設定ファイルgnuplotrcを探します。そのファイルの置き場所は
gnuplot のインストール時に決定され、show loadpath で知ることができます。次にユーザのホームディレ
クトリ内に個人用の設定ファイルを探します。そのファイルはUnix系のシステムでは.gnuplotであり、その 他の処理系ではGNUPLOT.INI となっています。(Windowsと OS/2では、環境変数GNUPLOTに設 定されている名前のディレクトリ内にそれを探します; Windowsでは、変数GNUPLOTが定義されていなけ
ればUSEPROFILEを使用します)。注意: インストール時にgnuplotが最初にカレントディレクトリを探
すように設定できますが、セキュリティ上危険なのでそれは推奨しません。
文字列定数と文字列変数 (Strings)
文字列定数に加えて、ほとんどのgnuplotコマンドは文字列変数、文字列式または文字列を返す関数も受け付 けます。例えば、以下の4 つのplotのやり方は結果として全て同じ描画タイトルを生成します:
four = "4"
graph4 = "Title for plot #4"
graph(n) = sprintf("Title for plot #%d",n) plot ’data.4’ title "Title for plot #4"
plot ’data.4’ title graph4
plot ’data.4’ title "Title for plot #".four plot ’data.4’ title graph(4)
整数は、それが文字列結合演算子によって作用された場合は、文字列に変換されますので、以下の例も上と同 様に動作します:
N = 4
plot ’data.’.N title "Title for plot #".N
一般に、コマンドラインの各要素は、それらが標準的なgnuplotへの命令文法の一部分と認識されるもの以外 は、有効な文字列変数としての評価のみが行なわれます。よって、以下のコマンド列は、恐らくは混乱を引き 起こさないように避けられるべきですが、文法的には間違ってはいません:
plot = "my_datafile.dat"
title = "My Title"
plot plot title title
文字列に対する3つの二項演算子が用意されています: 文字列の結合演算子".",文字列の等号演算子"eq",お よび文字列の不等号演算子"ne"です。以下の例ではTRUEが表示されます。
if ("A"."B" eq "AB") print "TRUE"
以下も参照: 2つの文字列書式関数 gprintf (p.116), sprintf (p.28)。
任意の文字列、文字列変数、文字列値関数に、範囲指定子をつけることにより部分文字列を指定できます。範 囲指定子は[begin:end]の形で、beginは部分文字列の先頭位置、endは最後の位置です。位置指定は、最初の 文字を1番目と見ます。先頭の位置、最後の位置は空、あるいは’*’でも構いません。その場合、それは元の 文字列自体の先頭、あるいは最後を意味します。例えば、str[:] やstr[*:*]はどちらもstrの文字列全体を意味 します。
置換とコマンドラインマクロ (Substitution)
gnuplotへの命令文字列が最初に読み込まれた時点、すなわちまだそれが解釈され、もしくは実行される前の
段階で、2 つの形式の単語の置換が実行されます。それらはバッククォート(ASCII番号96)で囲まれている か、または@ (ASCII番号64)が頭についた文字列に対して行なわれます。
バッククォートによるシステムコマンドの置換 (Substitution backquotes)
シェルコマンドをバッククォートで囲むことによってコマンド置換を行うことができます。このコマンドは子 プロセスで実行され、その出力結果でコマンドラインのバッククォートで囲まれたコマンドを置き換えます。
処理系によってはパイプがサポートされている場合もあります。以下参照:plot datafile special-filenames (p. 84)。
コマンド置換は、単一引用符内の文字列以外は、gnuplotのコマンドライン中、どこででも使用可能です。
例:
以下の例は、leastsqというプログラムを実行し、その出力結果で、leastsqを(まわりの引用符こみで)置き 換えます: