gnuplot-info@lists.sourceforge.net
http://sourceforge.net/projects/gnuplot
Copyright (C) 1986 - 1993, 1998, 2004, 2007 Thomas Williams, Colin Kelley
Permission to use, copy, and distribute this software and its documentation for any purpose with or without fee is hereby granted, provided that the above copyright notice appear in all copies and that both that copyright notice and this permission notice appear in supporting documentation.
Permission to modify the software is granted, but not the right to
distribute the complete modified source code. Modifications are to
be distributed as patches to the released version. Permission to
distribute binaries produced by compiling modified sources is granted,
provided you
1. distribute the corresponding source modifications from the released version in the form of a patch file along with the binaries, 2. add special version identification to distinguish your version in addition to the base release version number, 3. provide your name and address as the primary contact for the support of your modified version, and 4. retain our contact information in regard to use of the base software.
This software is provided "as is" without express or implied warranty to the extent permitted by applicable law.
AUTHORS Original Software: Thomas Williams, Colin Kelley. Gnuplot 2.0 additions: Russell Lang, Dave Kotz, John Campbell. Gnuplot 3.0 additions: Gershon Elber and many others. Gnuplot 4.0 and 5.0 additions: See list of contributors at head of this document.
(以下おおまかな訳; 訳は正しくないかも知れませんので詳しくは上記の原文を当たってください。訳者は責任を持ちません。)
Copyright (C) 1986 - 1993, 1998, 2004, 2007 Thomas Williams, Colin Kelley
このソフトウェアとその付属文書の使用、複製、配布の許可は、上記の著作権(copyright) 表示が、全ての複製物に書かれていること、および著作権表示と この許諾文の両方がその支援文書に書かれていることを条件とした上で、この 文書により保証されます。
このソフトウェアの修正も認められています。しかし、修正を含む全ソースコ
ードの配布の権利は認められません。修正はリリース版に対するパッチの形で
配布しなければなりません。修正されたソースをコンパイルして作られたバイ
ナリの配布は、以下の条件の元で認められます:
1. リリース版からのソースの修正部分を、パッチの形でバイナリと共に配 布すること 2. ベースとなるリリース版と区別するために、そのバージョン番号に特別 なバージョン指定子を付加すること 3. その修正版のサポート用に、あなたの名前とアクセス可能なアドレスと を提供すること 4. ベースとなるソフトウェアの使用に関しては、我々の連絡情報を保持し 続けること
このソフトウェアは "あるがまま" 提供され、適用可能な法律で許められる範 囲の保証を表明あるいは暗示していはいません。
著者 オリジナルソフトウェア: Thomas Williams, Colin Kelley. Gnuplot 2.0 追加: Russell Lang, Dave Kotz, John Campbell. Gnuplot 3.0 追加: Gershon Elber とその他の人々。 Gnuplot 4.0, 5.0 追加: この文書の先頭の寄与者 (contributors) の一覧参照。
gnuplot は、2 次元、または 3 次元の、多くの種類のグラフをサポートして います: 折線グラフ、点グラフ、棒グラフ、等高線、ベクトル場描画、曲面、 そしてそれらに関連するさまざまな文字列等。そしてさらにいくつかの特別な 描画型もサポートしています。
gnuplot は多くの異なる出力をサポートしています: 対話型スクリーン出力形 式 (マウスやホットキー入力も可能)、ペンプロッタや現在のプリンタへの直 接出力、または多くのファイル形式への出力 (eps, emf, fig, jpeg, LaTeX, pdf, png, postscript, ...)。gnuplot は、容易に新しい出力形式を追加する よう拡張することができます。最近追加された対話型出力形式には、 wxWidgets (複数のプラットホームで利用可能), Qt を元にしたものがありま す。svg や HTML5 canvas 出力形式を利用すれば、グラフを Web ページ内に マウス利用可能な形で埋め込んだ出力を生成することもできます。
gnuplot のコマンド言語は大文字小文字を区別します。すなわち、小文字で 書かれたコマンドや関数名は、それらを大文字で書いたものとは同じではあり ません。いずれのコマンドも、あいまいさの無い限りにおいて省略することが できます。1 行中にはセミコロン (;) で区切って複数のコマンドを書くこと ができます。文字列は単一引用符、あるいは二重引用符のどちらかで書き始め ますが、両者には微妙な違いがあります (詳細は、以下参照: syntax (30))。例:
set title "My First Plot"; plot 'data'; print "all done!"
コマンドは、複数行にまたがることができます。その場合は、最終行以外の全ての行の行末にバックスラッシュ ( \) を書く必要があります。バックスラ ッシュは必ず各行 *最後* の文字でなくてはなりません。その結果としてバッ クスラッシュと、それに続く改行文字が存在しなかったかのように扱われます。 つまり、改行文字がスペースの役をすることもありませんし、改行によってコ メントが終了することもありません。ですから複数行にまたがる行の先頭をコ メントアウトすると、そのコマンド全体がコメントアウトされることになりま す (以下参照: comments (11))。なお注意しますが、もし、複数行のコマンドの どこかでエラーが起きたとき、パーサはその場所を正確には指示することがで きませんし、また、正しい行に指示する必要もないでしょう。
このドキュメントにおいて、中括弧 ({}) は省略可能な引数を表すものとし、 縦棒 (|) は、互いに排他的な引数を区切るものとします。gnuplot のキー ワードや help における項目名は、逆引用符 (`)、または可能な場合には boldface (太字) で表します。角括弧 (<>) は、それに対応するものに置き 換えられるべきものを表します。多くの場合、オプションの引数には、それが 省略されるとデフォルトの値が使用されます。しかし、これらの場合、必ずし も角括弧が中括弧で囲まれて書かれているわけではありません。
ある項目についてのヘルプが必要なときには、help に続けてその項目名を 入力して下さい。または単に help ? でもヘルプの項目のメニューが現われ ます。
大量のグラフサンプルが、以下の Web ページにあります。 http://www.gnuplot.info/demo/
コマンドラインから起動するときは、以下の書式が使えます。
gnuplot {OPTIONS} file1 file2 ...
gnuplot {X11OPTIONS} {OPTIONS} file1 file2 ...
gnuplot に与えるオプションは、コマンド行のどこに置いても構いません。フ
ァイルは指定した順に実行され、同様に -e オプションで任意のコマンドを与
えることもできます。例:
gnuplot file1.in -e "reset" file2.in
特別なファイル名 "-" は、標準入力から読ませるのに使います。gnuplot
は最後のファイルを処理し終わると終了します。読み込ませるファイルを一つ
も指定しない場合は、gnuplot は標準入力からの対話入力を取ります。詳細
は、以下参照: batch/interactive (8)。gnuplot 用のオプションについては、
以下のようにして一覧を見ることができます:
gnuplot --help
対話型描画ウィンドウでの作業中は、'h' を打つとホットキー (hotkeys) とマウス機能 (mousing) に関するヘルプを見ることができます。 seeking-assistance のセクションは、さらなる情報やヘルプ、FAQ を探す 手掛りを与えてくれるでしょう。
助けを求める前に、ファイル FAQ.pdf か、または上の Web サイトの FAQ (度々聞かれる質問; Frequently Asked Questions) の一覧
をチェックしてください。
他に、(バグ以外の) 特定のグラフ描画の問題に関する助言は以下でも得られます。
https://stackoverflow.com/questions/tagged/gnuplot
バグの報告と、機能のリクエストは、以下のトラッキングシステムにあげてください。
http://sourceforge.net/projects/gnuplot/support
バグの報告や質問を投稿するときは、あなたが使用している gnuplot のバー ジョン、出力形式 (terminal)、オペレーティングシステム、といった情報を すべて入れてください。問題を再現する自己完結型の短いスクリプトを提示す るとなお良いでしょう。
gnuplot メーリングリストへの投稿の方法に関しては、SouceForge にある gnuplot の開発 Web サイト http://sourceforge.net/projects/gnuplot
を参照してください。
gnuplot メーリングリストにメールを書く前に、最初にそのメーリングリスト に参加する必要があることに注意してください。これは、スパムの量を減らす ことを維持するために必要です。
メーリングリストメンバーへのメールアドレス:
gnuplot-info@lists.sourceforge.net
開発版に関するメーリングリスト:
gnuplot-beta@lists.sourceforge.net
^
R で、組み込み readline (Windows でも使われている) の履歴の逆向き検
索を開始します。以下参照: command-line-editing。
^
5 となります。
* NaN や、正しくないデータ列数、または他の予期しないものを含む入力デー タの処理の改良。例 (や図) については、以下参照: missing (100.20.4)。
* 時間座標は、標準的な Unix エポック (1970 年 1 月 1 日) からの秒数と して内部で保存します。以前の版の gnuplot では、別のエポック (2000 年1 月 1 日) を内部で使用していました。この変更は、gnuplot の外で作られ た秒単位のデータによって矛盾がもたらされる問題を解決します。インストー ルされている個々の gnuplot がどちらのエポックを使用しているかについて は、コマンド print strftime("%F",0) で知ることができます。現在は、時 間は少なくともミリ秒の精度で保存されます。
* 関数 timecolumn(N,"timeformat") は、現在は 2 つの引数を持ちます。 新しい 2 つ目の引数はどのデータ軸とも関連しておらず、よってこれにより 関数 timecolumn を、x や y 軸に指定するのとは違う形式の日時データの 読み込みに使えるようになります。この機能は、次のコマンド列に取って変わ ります: set xdata time; set timefmt "timeformat"。これは、複数のファ イルから異なる書式の日時データを読んで、それらを組み合わせて 1 つのグ ラフにすることを可能にします。
* コマンド set [axis]range のキーワード reverse は、自動縮尺 (autoscaling) にのみ影響し、set xrange [0:1] のようなコマンドの意味 を逆にしたり他の変更を行ったりはしません。このような場合に x 軸の方向 を逆向きにしたければ、代わりに set xrange [1:0] としてください。
* コマンド call は、変数群 ARGC, ARG0, ..., ARG9 を提供します。ARG0 は、実行するスクリプト名を指します。ARG1 から ARG9 は文字列変数になる ので、直接参照するか、または例えば @ARG1 のようにマクロ展開させたもの を参照することができます。ARG0 ... ARG9 の内容は、他にも配列変数 ARGV の要素 ARGV[0] ... ARGV[ARGC] としても取得できます。古い gnuplot での call のパラメータ参照形式 $0 ... $9 は現在は非推奨です。
* オプション smooth の kdensity の、bandwidth の追加指定では、データ列 からでなく 1 つのキーワードとして値を取ります。以下参照:smooth kdensity (89.3.8.13)。
gnuplot 4 では非推奨で、バージョン 5 では削除:
set title "Old" 0,-1 set data linespoints plot 'file' thru f(x) plot 1 2 4 # y=1 での水平線 update
TITLE = "New" set title TITLE offset char 0, char -1 set style data linespoints plot 'file' using 1:(f(column(2))) plot 1 linetype 2 pointtype 4
if (defined(VARNAME)) ... set style increment user call 'script' 1.23 ABC (in script: print $0, "$1", "number of args = $#") set fontpath set clabel fit control variables FIT_*
if (exists("VARNAME")) ... set linetype call 'script' 1.23 "ABC" (in script: print ARG1, ARG2, "number of args = ", ARGC set cntrlabel set fit <option> <value>
バージョン 5.4 では非推奨:
# 繰り返しを行うために `reread` を含むファイルを使用 N = 0; load "file-containing-reread"; file content: N = N+1 plot func(N,x) pause -1 if (N<5) reread
do for [N=1:5] { plot func(N, x) pause -1 }
そこでは、各デモを作成するコマンドがグラフの隣りに表示されますし、その gnuplot スクリプトをダウンロードすることもできますので、それを保存し同 様のグラフを作成することができます。
コマンドライン引数は、プログラムへのオプション (以下参照:command-line-options (8.1)) か、gnuplot コマンドを含むファイルの名前であ ると解釈されます。各ファイルとコマンド文字列は、指定した順に実行されま す。特別なファイル名 "-" は、コマンドを標準入力から読み込むことを意味 します。最後のファイルを実行した後に gnuplot は終了します。読み込ま せるファイル、およびコマンド文字列を指定しなかった場合は、gnuplot は 標準入力からの対話型の入力を受け付けます。
-V, --version -h, --help -p, --persist -d, --default-settings -s, --slow -e "command1; command2; ..." -c scriptfile ARG1 ARG2 ...
-p は、プログラムの終了時に、残っている対話型グラフウィンドウを一切閉 じないよう gnuplot に指示します。
-d は、各ユーザ用、およびシステム用の初期化 (以下参照: initialization (27)) を一切行わないよう gnuplot に指示します。
-s は、起動時のフォントの初期化をゆっくり待つように指示します。そうで ないと、エラーを表示し、不正なフォントサイズ情報で動作を継続します。
-e "command" は、次に進む前に指定した単一のコマンドを実行するよう gnuplot に指示します。
-c は、-e "call scriptfile ARG1 ARG2 ..." と同等です。以下参照: call (74)。
gnuplot
2 つのコマンドファイル "input1", "input2" を使ってバッチ処理を行なう:
gnuplot input1 input2
初期化ファイル "header" の後、対話型モードを起動し、その後別のコマンド
ファイル "tailer" を実行する:
gnuplot header - trailer
コマンドラインから gnuplot コマンドを直接与え、終了後にスクリーン上
にグラフが残るようにオプション "-persist" を使う:
gnuplot -persist -e "set title 'Sine curve'; plot sin(x)"
ファイルのコマンドを実行する前に、ユーザ定義変数 a と s をセットする:
gnuplot -e "a=2; s='file.png'" input.gpl
ここの文書で使用する "canvas" という用語は、グラフやそれに関連するラベ ルやタイトル、凡例などを配置するのに利用可能な描画領域全体を意味します。 注意: HTML5 canvas 出力形式に関する情報を知りたい場合は、以下参照:set term canvas (113.6)。
gnuplot の以前の版では、set size の値を、出力する描画領域 (キャンバス) のサイズを制御するのにも使っていた出力形式もありましたが、すべての 出力形式がそうだったわけではありませんでした。この目的のために set size を使用することはバージョン 4 で非推奨となり、現在はほとんど の出力形式が以下のルールに従います:
set term <terminal_type> size <XX>, <YY> は、出力ファイルのサイズ、 または "キャンバス" のサイズを制御します。デフォルトでは、グラフはその キャンバス全体に描画されます。
set size <XX>, <YY> は、描画自体をキャンバスのサイズに対して相対的に 伸縮させます。1 より小さい伸縮値を指定すると、グラフはキャンバス全体を 埋めず、1 より大きい伸縮値を指定すると、グラフの一部分のみがキャンバス 全体に合うように描画されます。1 より大きい伸縮値を指定すると、問題が起 こるかもしれないことに注意してください。
例:
set size 0.5, 0.5 set term png size 600, 400 set output "figure.png" plot "data" with lines
このコマンドは、幅 600 ピクセル、高さ 400 ピクセルの出力ファイル "figure.png" を生成します。グラフはキャンバスの中の左下に置かれます。 これは、multiplot モードが常に行ってきた方法と矛盾しません。
組み込みの readline 版の場合の編集コマンドは以下の通りですが、DEL キーに関する動作はシステムに依存することに注意してください。GNU readline ライブラリと BSD libedit ライブラリに関しては、それ自身のドキュメント を参照してください。
コマンド行編集コマンド | |
文字 | 機能 |
行編集 | |
^B |
1 文字前へ戻す |
^F |
1 文字先へ進める |
^A |
行の先頭へ移動 |
^E |
行の最後へ移動 |
^H |
直前の文字を削除 |
DEL |
現在の文字を削除 |
^D |
現在位置の文字を削除、空行なら EOF |
^K |
現在位置から行末まで削除 |
^L |
壊れた表示の行を再表示 |
^U |
行全体の削除 |
^W |
直前の単語を削除 |
^V |
この次のキーを編集コマンドと見なさない |
TAB |
ファイル名補完動作 |
履歴 | |
^P |
前の履歴へ移動 |
^N |
次の履歴へ移動 |
^R |
後方検索を開始 |
データファイルに対するコメント文字の指定については、以下参照:set datafile commentschars (100.20.6)。
{<system>} <x>, {<system>} <y> {,{<system>} <z>}
各座標系指定 <system> には、first, second, polar, graph, screen, character のいずれかが入ります。
first は左と下の軸で定義される x,y (3D の場合は z も) の座標系を使用 します。second は x2, y2 軸 (上と右の軸) を使用します。graph はグ ラフ描画領域内の相対的位置を指定し、左下が 0,0 で 右上が 1,1 (splot の 場合はグラフ描画領域内の左下が 0,0,0 で、土台の位置は負の z の値を使用 します。以下参照: set xyplane (100.124)) となります。screen は表示範囲内 (範 囲全体であり、set size で選択される一部分ではありません) を指定し、 左下が 0,0 で 右上が 1,1 となります。character 座標は主にずれを指定 するのに使用し、絶対的な位置を示すものではありません。character の水 平、垂直サイズは、現在使用しているフォントに依存します。
polar は、最初の 2 つの値を、x, y ではなく、角 theta と半径 r である と解釈します。これは、例えば 2 次元の極座標、あるいは 3 次元円柱座標で のグラフにラベルを配置するのに役に立つでしょう。
x の座標系が指定されていない場合は first が使われます。y の座標系が 指定されていない場合は x に対する座標系が使用されます。
与える座標が絶対的な位置ではなくて相対的な値である場合もあります (例え ば set arrow ... rto の 2 番目の数値)。そのほとんどが、与えられた 数値を最初の位置に対する差として使います。与えられた座標が対数軸内にあ る場合は、その相対的な値は倍率として解釈されます。例えば
set logscale x set arrow 100,5 rto 10,2
は、x 軸が対数軸で y 軸が線形の軸なので、100,5 の位置から 1000,7 の位 置への矢印を書くことになります。
一つ (あるいはそれ以上) の軸が時間軸である場合、timefmt の書式文字列に従って、引用符で囲まれた時間文字列で適切な座標を指定する必要があります。以下参照: set xdata (100.118), set timefmt (100.96)。また、gnuplot は整数表記も 認めていて、その場合その整数は 1970 年 1 月 1 日からの秒数と解釈されま す。
1.000 2.000 "Third column is all of this text" 4.00
テキスト部分は 2 次元や 3 次元描画内で例えば以下のように使用されます:
plot 'datafile' using 1:2:4 with labels splot 'datafile' using 1:2:3:4 with labels
テキスト部分の列データは 1 つ、または複数の描画軸の目盛りのラベルとし て使用できます。次の例は、入力データの 3 列目と 4 列目を (X,Y) 座標と して取り出し、それらの点の列を結ぶ線分を描画します。しかしこの場合 gnuplot は、x 軸に沿って標準的に間の空いた数字ラベルのついた目盛り刻み をつけるのではなく、入力データファイルの 1 行目の X 座標の位置に、目盛 り刻みと文字列を x 軸に沿ってつけて行きます。
set xtics plot 'datafile' using 3:4:xticlabels(1) with linespoints
入力データの列の最初のエントリ (すなわち列の見出し) をテキスト部分と解 釈するもう一つのオプションがあり、それはテキスト部分を、その描画した列 のデータの凡例 (key) のタイトル部分として使用します。次の例は、先頭の 行の 2 列目の部分を凡例ボックス内のタイトルを生成するのに使用し、その 後の列の 2,4 列目は要求された曲線を描画するのに処理されます:
plot 'datafile' using 1:(f($2)/$4) with lines title columnhead(2)
別の例:
plot for [i=2:6] 'datafile' using i title "Results for ".columnhead(i)
この列の先頭を使用する方法は、set datafile columnheaders か set key autotitle columnhead で自動化できます。以下参照: labels (50),using xticlabels (89.3.11.4), plot title (89.11), using (89.3.11), key autotitle (100.38.4)。
^
2"
は x の自乗を、通常我々が見る上付きの 2 がついた形で書き出します。この
モードは、出力形式の設定時にデフォルトとして選択されますが、その後で
"set termoption [no]enhanced" を使ってその機能を有効/無効にもできます
し、"set label 'x_2' noenhanced" のように個々の文字列に適用することも
できます。
拡張文字列制御記号 | |||
制御記号 | 例 | 結果 | 説明 |
^ |
a^x |
ax | 上付き文字 |
_ |
a_x |
ax | 下付き文字 |
@ |
a@^b_{cd} |
abcd | 空ボックス (幅がない) |
& |
d&{space}b |
d b |
指定した長さのスペースを挿入 |
~ |
~a{.8-} |
'a' の上に '-' を、現在のフォントサ | |
|
|
イズの .8 倍持ち上げた位置に重ね書き | |
|
{/Times abc} |
abc | Times フォント、今のサイズで abc を出力 |
|
{/Times*2 abc} |
abc | Times フォント、今の倍のサイズで abc |
|
{/Times:Italic abc} |
abc | Times フォント、イタリック体で abc |
|
{/Arial:Bold=20 abc} |
abc | Arial フォント、太字、サイズ 20 で abc |
\U+ |
\U+221E |
Unicode コードポイント U+221E 無限大 |
書式制御文字は、それに続く 1 文字、または中カッコで囲まれたものに適用
されます。中カッコ内には、例えば 2^
{10} のような追加の書式文字列のない文字列か、またはフォントの属性を変更する追加制御文字列を入れることができます。フォント指定は、開き中カッコ '{' の直後に続く '/' のすぐ次に書
かなければ「いけません」。フォント名にスペースが含まれる場合、それを単
一、または二重引用符で囲まなければいけません。
例: 最初の例はその中カッコの入れ子を示していて、ボールド体の A にイタ
リック体の下付きの添字 i がついたものが、いずれも現在のフォントで描か
れます。この例の :Normal を取ると、下付きの添字はボールド体でかつイタ
リック体になります。2 つ目の例は同じ書式制御を 20 ポイントサイズの
"Times New Roman" フォントに適用したものです。
{/:Bold A_{/:Normal{/:Italic i}}} {/"Times New Roman":Bold=20 A_{/:Normal{/:Italic i}}}
空ボックス (phantom box) は a@^
b_c の上付き文字と下付き文字を揃えると
きに有用ですが、文字にアクセント記号を重ねる場合にはうまく働きません。
後者の目的のためには、色々なアクセントやその他のダイアクリティカルマ
ークのある多くの文字を持つエンコード (例えば iso_8859_1 や utf8) を使
用する方がいいでしょう。以下参照: set encoding (100.24)。そのボックスはスペー
シングが行なわれないので、ボックス内 (つまり @ の後ろ) の上付き文字や
下付き文字を短く出力するのに適しています。
ある文字列と同じ長さのスペースを文字 '&' を使うことで入れることができ
ます。すなわち、
'abc&{def}ghi'
'abc ghi'
文字 ' ' は、次の文字、またはカッコで囲まれた文字列に、それに続く文字
またはカッコで囲まれた文字列を重ね書きします。2 番目の文字は最初の文字
にあわせて水平方向にセンタリングされます。よって ' a/' は 'a' を貫くよ
うなスラッシュが得られます。2 番目の文字は、その前に数字を置くことで垂
直方向に移動させることができます。その数字は現在のフォントサイズに対す
る割合を意味し、それに従って文字が上がったり下がったりします。この場合
数字と文字列は 1 文字より長くなるのでカッコで囲む必要があります。重ね
書きされる文字列が数字から始まっている場合は、垂直にずらす値と文字列と
の間にスペースを入れてください (' {abc}{.5 000}')。それ以外はスペースは不要です (' {abc}{.5 — }')。一方、あるいは両方のフォントを変更するこ
ともできます (' a{.5 /*.2 o}'; 'a' その 1/5 の大きさの 'o'、この場合数
字とスラッシュの間のスペースは必要です) が、その文字列が始まった後で変
更することはできません。それぞれの文字列内で、他の特殊な書式を使うこと
もできません。もちろん、' a{
\^
}' のように特殊な文字をエスケープするこ
と (下記参照) は可能です。
制御文字は、 \ \ や \{ などのように \ を使ってエスケープできます。 以下参照: escape sequences (14.1)。
二重引用符内の文字列は単一引用符内の文字列とは異なって解釈されることに 注意してください。主な違いは、二重引用符内の文字列ではバックスラッシュ は 2 つ重ねる必要があることです。
gnuplot ソース配布物内の /docs/psdoc サブディレクトリにあるファイル "ps_guide.ps" に、拡張された書式に関する例が載っています。同様のものが デモ enhanced_utf8.dem
にもあります。
\ooo の形式 (ooo は 8 進値の 3 文字) は、特定のフォントエンコード内の 文字コード番号を指し示すのに使えます。例えば、Adobe Symbol フォントは、 無限大の記号を 8 進 245 番で示すようなカスタムエンコードを使用します。 これは、拡張文字列としてフォント名と文字コードを "{/Symbol \245}" のよ うに指定することで埋め込むことができます。これは主に PostScript 出力形 式で有用ですが、これは UTF-8 エンコーディングの処理は容易には行えませ ん。
\U+hhhh の形式の Unicode のコードポイントで文字を指定することができま す。ここで hhhh は 16 進値の 4 または 5 文字です。例えば、無限大の記号 のコードポイントは \U+221E です。これは、必要ならば出力時に UTF-8 のバ イト列に変換されます。UTF-8 環境では、印字可能な特殊文字は他の文字と同 様に文字列内で処理できるので、この仕組みは必要ありません。しかしこれは 結合文字や発音区別符号 (例えばベクトルを意味するための文字の上の矢印な ど) には有用です。以下参照: set encoding (100.24), utf8 (100.24)。または オンラインユニコードデモ
を参照。
GNUTERM は、それが定義されていれば、起動時の出力形式を設定するのに使わ
れます。バージョン 5.2 からは、GNUTERM の文字列全部が "set term" に渡
されるので、そこに terminal オプションを入れることもできます。例:
GNUTERM="postscript eps color size 5in, 3in"
GNUHELP にヘルプファイル (gnuplot.gih) のパス名を定義しておくことがで きます。
VMS では、論理名 GNUPLOT$HELP を gnuplot のヘルプライブラリの名前と して定義します。gnuplot のヘルプは任意の VMS システムのヘルプライブ ラリに入れることができます。
Unix においては、カレントディレクトリに .gnuplot というファイルがない 場合には、HOME に定義されたディレクトリを探します。MS-DOS, Windows, OS/2 では GNUPLOT がその役割に使われます。Windows では、NT 専用の変数 USERPROFILE も参照されます。VMS では SYS$LOGIN です。help startup と打ってみてください。
Unix においては、PAGER がヘルプメッセージの出力用のフィルタとして使わ れます。
Unix では、SHELL が shell コマンドの際に使われます。MS-DOS, OS/2 で は COMSPEC が shell コマンドの際に使われます。
FIT_SCRIPT は、当てはめ (fit) が中断されたときに実行する gnuplot コマンドの指定に使われます。以下参照: fit (80)。FIT_LOG は当てはめによ るログファイルのデフォルトのファイル名の指定に使われます。
GNUPLOT_LIB は、データやコマンドファイルの検索ディレクトリを追加定義す るのに使われます。その変数は、一つのディレクトリ名かまたは複数のディレ クトリ名を書くことができますが、ディレクトリの区切りはプラットホーム毎 に違います。例えば Unix では ':' で、MS-DOS, Windows, OS/2 では ';' で す。GNUPLOT_LIB の値は変数 loadpath に追加されますが、それは save や save set コマンドでは保存されません。
出力ドライバの中には gd ライブラリ経由で TrueType フォントを扱えるもの もいくつかあります。これらのドライバのフォント検索パスは、環境変数 GDFONTPATH で制御できます。さらに、それらのドライバでのデフォルトのフ ォントは環境変数 GNUPLOT_DEFAULT_GDFONT で制御できます。
postscript 出力ドライバは自分で持っているフォント検索パスを使いますが、 それは、環境変数 GNUPLOT_FONTPATH で制御できます。
PostScript ドライバは、外部 (組み込まれていない) 定義ファイルを探すた めに環境変数 GNUPLOT_PS_DIR を利用します。インストール時の作業により、 gnuplot にはそれらのファイルのコピーが組み込まれているか、またはデフォ ルトのパスが埋め込まれています。この変数は、postscript 出力形式でデフ ォルトのファイルの代わりにカスタマイズした prologue ファイルを使用する のに利用できます。以下参照: postscript prologue (113.50.3)。
gnuplot は "実数" と "整数" 演算を FORTRAN や C のように扱うということ に注意してください。"1", "-10" などは整数と見なされ、"1.0", "-10.0", "1e1", 3.5e-1 などは実数と見なされます。 これら 2 つのもっとも重要な違 いは割算です。整数の割算は切り捨てられます: 5/2 = 2。実数はそうではあ りません: 5.0/2.0 = 2.5。それらが混在した式の場合、計算の前に整数は実 数に "拡張" されます: 5/2e0 = 2.5。負の整数を正の整数で割る場合、その 値はコンパイラによって変わります。"print -5/2" として、あなたのシステ ムが常に切り捨てる (-5/2 で -3 になる) のか、または 0 の近くに丸める (-5/2 で -2 になる) のかを確認してください。
数式 "1/0" は "未定義値 (undefined)" フラグを生成し、それによりその点 を無視します。あるいは、あらかじめ定義されている値 NaN を使っても同じ ことになります。例については、以下参照: using (89.3.11)。
gnuplot は文字列に対する単純な演算、および文字列変数も利用できます。例 えば式 ("A" . "B" eq "AB") は真と評価されますが、これは文字列の結合演 算子と文字列の等号演算子を意味しています。
数としての値を含む文字列は、それが数式で利用された場合は、対応する整数 や実数に変換されます。よって、("3" + "4" == 7) や (6.78 == "6.78") は どちらも真になります。整数は、それが文字列結合演算子で使われた場合は文 字列に変換されますが、実数や複素数はダメです。典型的な例は、ファイル名 や他の文字列内に整数を使う場合でしょう: 例えば ("file" . 4 eq "file4") は真です。
後置指定する範囲記述子 [beg:end] によって、部分文字列を指定することが できます。例えば、"ABCDEF"[3:4] == "CD" で、"ABCDEF"[4:*] == "DEF" で す。書式 "string"[beg:end] は、文字列値の組み込み関数 substr("strings",beg,end) を呼ぶこととほぼ同じですが、関数呼び出しでは beg, end は省略することはできません。
gnuplot の 2 次元と 3 次元の描画スタイルでは、実数値のみ描画できます。 よって 0 でない虚数部分を持つ複素数値関数 f(x) を描画する場合は、 real(f(x)) か abs(f(x)) の描画を選択する必要があります。複素数値の表現 の例は、 複素三角関数デモ (complex_trig.dem)
をご覧ください。
実数 (浮動小数) 定数は、C の atof() ライブラリルーチンを使って解釈しま す。
複素数の定数は {<real>,<imag>} と表現します。ここで <real> と <imag> (実部、虚部) は数値定数である必要があります。例えば {3,2} は 3 + 2i を あらわし、{0,1} は 'i' 自身を表します。これらには明示的に中カッコを使 う必要があります。
文字列定数は単一引用符か二重引用符のいずれかで囲まれた任意の文字の並び からなるものです。単一引用符と二重引用符の違いは重要です。以下参照:quotes (30.1)。
例:
1 -10 0xffaabb # 整数定数 1.0 -10. 1e1 3.5e-1 # 実数定数 {1.2, -3.4} # 複素数定数 "Line 1\nLine 2" # 文字列定数 (\n は改行に展開される) '123\n456' # 文字列定数 (\ と n はそのままの文字)
関数 EllipticE(k) は、第 2 種完全楕円積分、すなわち、関数 (1-(k*sin(p))**2)**0.5 の 0 からπ/2 までの範囲の広義積分の値を返し ます。k の定義域は -1 から 1 です (両端も含む)。
関数 EllipticPi(n,k) は、第 3 種完全楕円積分、すなわち関数 (1-(k*sin(p))**2)**(-0.5)/(1-n*sin(p)**2) の 0 からπ/2 までの範囲の 広義積分の値を返します。パラメータ n は 1 より小さく、k は -1 と 1 の間 (両端は含まない) でなければいけません。定義より、すべての正の k に対し EllipticPi(0,k) == EllipticK(k) であることに注意してください。
rand(0) 内部に持つ 2 つの 32bit の種 (seed) の現在の値から生 成される開区間 (0:1) 内の疑似乱数値を返す rand(-1) 2 つの種の値を標準値に戻す rand(x) 0 < x < 2^31-1 の整数なら種の両方を x に設定する rand({x,y}) 0 < x,y < 2^31-1 の整数なら seed1 を x に seed2 を y に設定する
set datafile columnheader plot for [i=2:4] DATA using 1:i title columnhead(i)
例:
# 箱のある認識できない値を、無視する代わりに、期待値である定数 # prior として、箱全体に寄与するように扱う。 plot DATA using 1 : (valid(2) ? $2 : prior) smooth unique
words("string") は、文字列 (string) の単語数を返します。例えば、 words(" a b c d") は 4 を返します。
関数 word と words は、単一引用符、二重引用符で囲まれた文字列も、
限定的ですがサポートしています:
print words("\"double quotes\" or 'single quotes'") # 3
print words("Alexis' phone doesn't work") # 4
s = "Keep \"'single quotes'\" or '\"double quotes\"'" print word(s, 2) # 'single quotes' print word(s, 4) # "double quotes"
trim(" padded string ") は、元の文字列の前後にある空白部分を取り除
いた文字列を返します。これは、余計な空白を持ちうる入力データ列の文字列
同士を比較する際に有用です。例:
plot FOO using 1:( trim(strcol(3)) eq "A" ? $2 : NaN )
演算の評価の順序を変更するにはかっこを使います。
単項演算子 | ||
記号 | 例 | 説明 |
- |
-a |
マイナス符号 |
+ |
+a |
プラス符号 (何もしない) |
~ |
~a |
* 1 の補数 (ビット反転) |
! |
!a |
* 論理的否定 |
! |
a! |
* 階乗 |
$ |
$3 |
* `using` 内での引数/列指定 |
| |
|A| |
配列 A の要素数 |
説明に星印 (*) のついた演算子の引数は整数でなければなりません。
演算子の優先順位は Fortran や C と同じです。それらの言語同様、演算の評 価される順序を変えるためにかっこが使われます。よって -2**2 = -4 で、 (-2)**2 = 4 です。
階乗演算子は、N! が十分小さければ (64 ビット整数では N <= 20) 整数を返 し、大きな N の値に対しては実数での近似値を返します。
|A| は、配列 A に適用した場合は要素数を返します。データブロック $DATA に適用した場合は、|$DATA| はデータ行数を返します。
二項演算子 | ||
記号 | 例 | 説明 |
** |
a**b |
累乗 |
* |
a*b |
積 |
/ |
a/b |
商 |
% |
a%b |
* 余り |
+ |
a+b |
和 |
- |
a-b |
差 |
== |
a==b |
等しい |
!= |
a!=b |
等しくない |
< |
a<b |
より小さい |
<= |
a<=b |
以下 |
> |
a>b |
より大きい |
>= |
a>=b |
以上 |
<< |
0xff<<1 |
符号なし左シフト |
>> |
0xff>>1 |
符号なし右シフト |
& |
a&b |
* ビット積 (AND) |
^ |
a^b |
* ビット排他的論理和 (XOR) |
| |
a|b |
* ビット和 (OR) |
&& |
a&&b |
* 論理的 AND |
|| |
a||b |
* 論理的 OR |
= |
a = b |
代入 |
, |
(a,b) |
累次評価 |
. |
A.B |
文字列の連結 |
eq |
A eq B |
文字列が等しい |
ne |
A ne B |
文字列が等しくない |
説明に星印 (*) のついた演算子の引数は整数でなければなりません。 大文字の A,B は演算子が文字列引数を要求することを意味します。
論理演算子の AND (&&) と OR (||) は C 言語同様に必要最小限の評価しかし ません。すなわち、&& の第 2 引数は、第 1 引数が偽ならば評価されませ んし、|| の第 2 引数は、第 1 引数が真ならば評価されません。
累次評価 (,) は、カッコの中でのみ評価され、左から右へ順に実行すること が保証され、最も右の式の値が返されます。
三項演算子 | ||
記号 | 例 | 説明 |
?: |
a?b:c |
三項演算子 |
三項演算子は C のものと同じ働きをします。最初の引数 (a) は整数でなけれ ばいけません。この値が評価され、それが真 (ゼロでない) ならば 2 番目の 引数 (b) が評価されその値が返され、そうでなければ 3 番目の引数 (c) が 評価され、その値が返されます。
三項演算子は、区分的に定義された関数や、ある条件が満たされた場合にのみ 点を描画する、といったことを行なう場合に有用です。
例:
0 <= x < 1 では sin(x) に、1 <= x < 2 では 1/x に等しくて、それ以外のx では定義されない関数を描画:
f(x) = 0<=x && x<1 ? sin(x) : 1<=x && x<2 ? 1/x : 1/0 plot f(x)
ファイル 'file' のデータで、4 列目のデータが負でないときだけ、1 列目の データに関する 2 列目と 3 列目のデータの平均値を描画:
plot 'file' using 1:( $4<0 ? 1/0 : ($2+$3)/2 )
using の書式の説明に関しては、以下参照: plot datafile using (89.3.11)。
sum [<var> = <start> : <end>] <expression>
print sum [i=1:10] i 55. # 以下は plot 'data' using 1:($2+$3+$4+$5+$6+...) と同等 plot 'data' using 1 : (sum [col=2:MAXCOL] column(col))
例: 点 [X,Y] のスクリーン比での座標を計算する方法
GRAPH_X = (X - GPVAL_X_MIN) / (GPVAL_X_MAX - GPVAL_X_MIN) GRAPH_Y = (Y - GPVAL_Y_MIN) / (GPVAL_Y_MAX - GPVAL_Y_MIN) SCREEN_X = GPVAL_TERM_XMIN + GRAPH_X * (GPVAL_TERM_XMAX - GPVAL_TERM_XMIN) SCREEN_Y = GPVAL_TERM_YMIN + GRAPH_Y * (GPVAL_TERM_YMAX - GPVAL_TERM_YMIN) FRAC_X = SCREEN_X * GPVAL_TERM_SCALE / GPVAL_TERM_XSIZE FRAC_Y = SCREEN_Y * GPVAL_TERM_SCALE / GPVAL_TERM_YSIZE
読み出し専用変数 GPVAL_ERRNO は、任意の gnuplot コマンドがあるエラーの ために早く終わってしまった場合に 0 でない値にセットされ、直前のエラー メッセージは文字列変数 GPVAL_ERRMSG に保存されます。GPVAL_ERRNO と GPVAL_ERRMSG は、コマンド reset errors を使ってクリアできます。
mouse 機能が使える対話型入出力形式は、"MOUSE_" で始まる読み出し専用 変数をいくつか持っています。詳細は、以下参照: mouse variables (23.2)。
fit 機能は、"FIT_" で始まるいくつかの変数を使用しますので、そのよう な名前を使うのは避けるべきでしょう。set fit errorvariables を使用す ると、各当てはめ変数のエラーは、そのパラメータ名に "_err" を追加した変 数に保存されます。詳細は、以下参照: fit (80)。
以下も参照: user-defined variables (16.7), reset errors (98),mouse variables (23.2), fit (80)。
ユーザ定義関数書式:
<func-name>( <dummy1> {,<dummy2>} ... {,<dummy12>} ) = <expression>
ここで <expression> は仮変数 <dummy1> から <dummy12> で表される数式です。
ユーザ定義変数書式:
<variable-name> = <constant-expression>
例:
w = 2 q = floor(tan(pi/2 - 0.1)) f(x) = sin(w*x) sinc(x) = sin(pi*x)/(pi*x) delta(t) = (t == 0) ramp(t) = (t > 0) ? t : 0 min(a,b) = (a < b) ? a : b comb(n,k) = n!/(k!*(n-k)!) len3d(x,y,z) = sqrt(x*x+y*y+z*z) plot f(x) = sin(x*a), a = 0.2, f(x), a = 0.4, f(x)
file = "mydata.inp" file(n) = sprintf("run_%d.dat",n)
最後の 2 行の例は、ユーザ定義文字列変数と、ユーザ定義文字列関数を意味 しています。
変数 pi (3.14159...) と NaN (IEEE 非数 ("Not a Number")) はあらか じめ定義されています。これらが必要なければ、他のものに再定義することも 可能ですし、以下のようにして元の値に復帰することもできます:
NaN = GPVAL_NaN pi = GPVAL_pi
他にもいくつかの変数が、例えば対話型入出力形式でのマウス操作や当てはめ (fit) などの gnuplot の動作状態に応じて定義されます。詳細は 以下参照: gnuplot-defined variables (16.6)。
ある変数 V が既に定義されているかどうかは、式 exists("V") でチェックで
きます。例:
a = 10 if (exists("a")) print "a is defined" if (!exists("b")) print "b is not defined"
変数名や関数名の命名規則は、大抵のプログラミング言語と同じで、先頭はア ルファベットで、その後の文字はアルファベット、数字、"_" が使えます。
各関数の定義式は、'GPFUN_' という接頭辞を持つ特別な文字列値変数として 利用できます。
例:
set label GPFUN_sinc at graph .05,.95
以下参照: show functions (100.30), functions (89.6), gnuplot-defined variables (16.6),macros (29.2), value (16.3.4)。
配列 A の要素数は、数式 |A| で取得できます。
例:
array A[6] A[1] = 1 A[2] = 2.0 A[3] = {3.0, 3.0} A[4] = "four" A[6] = A[2]**3 array B[6] = [ 1, 2.0, A[3], "four", , B[2]**3 ]
do for [i=1:6] { print A[i], B[i] } 1 1 2.0 2.0 {3.0, 3.0} {3.0, 3.0} four four <undefined> <undefined> 8.0 8.0
注意: 配列と変数は、同じ名前空間を共有します。例えば、あらかじめ FOO という名前の配列がある場合、FOO という名前の文字列変数を使うと、配列 を破壊します。
配列の名前を plot, splot, fit, stats コマンドに与えることもで きます。その場合、配列の添字がファイルの 1 列目の値で (1 から size ま で)、その値 A[i] の実数部分 real(A[i]) がファイルの 2 列目、虚数部分 imag(A[i]) がファイルの 3 列目であるようなデータファイルを与えたことと 同等になります。
例:
array A[200] do for [i=1:200] { A[i] = sin(i * pi/100.) } plot A title "sin(x) in centiradians"
ただし、plot 時に複素数値配列の虚数部分を描画したい場合、その値は imag(A[$1]) かまたは $3 として参照できます。よって以下の 2 つのコマンドは同等です。
plot A using (real(A[$1])) : (imag(A[$1])) plot A using 2:3
一時的に、例えば Adobe Symbol フォントのような特別なフォントに切り替え ることでアルファベットではない記号を入れることも可能ですが、現在は、 UTF-8 エンコーディングを使用して、他の文字と同様にその記号を扱うのがよ り良い方法でしょう。その他に、必要な記号の Unicode コードポイントを、 拡張文字列モード内でエスケープシーケンスとして指定する手もあります。 以下参照: encoding (100.24), unicode (14.1), locale (100.44), escape sequences (14.1)。
を参照してください。これは、gnuplot で一般的な名前やサイズでフォントを
要求することを可能にし、必要ならば fontconfig に同等のフォントを代用さ
せることもできるので、通常はこれで十分でしょう。以下は、多分いずれも機能します:
set term pdfcairo font "sans,12" set term pdfcairo font "Times,12" set term pdfcairo font "Times-New-Roman,12"
set term png tiny
多くのシステムで、libgd は Adobe Type 1 フォント (*.pfa) と TrueType
フォントへのアクセスも提供します。その場合フォント自身の名前ではなく、
フォントファイルの名前を、"<face> {,<pointsize>}" の形式で与えます。
ここで、<face> はフォントファイルのフルパス名か、または環境変数
GDFONTPATH で指示されるディレクトリの一つの中のファイル名の先頭部分、
のいずれかです。よって、'set term png font "Face"' は、
<あるディレクトリ>/Face.ttf か <あるディレクトリ>/Face.pfa というファ
イル名のフォントを探そうとします。例えば、GDFONTPATH に
/usr/local/fonts/ttf:/usr/local/fonts/pfa が含まれている場合は、以下のコマンドの 2 つずつはいずれも同じことになります:
set term png font "arial" set term png font "/usr/local/fonts/ttf/arial.ttf" set term png font "Helvetica" set term png font "/usr/local/fonts/pfa/Helvetica.pfa"
set term png font "arial,11"
TrueType と Adobe Type 1 フォントは、完全に大きさの変更や回転が可能で す。"set term" コマンドでフォントを指定しなかった場合、gnuplot は別の デフォルトフォントの設定があるかどうかを調べるために環境変数 GNUPLOT_DEFAULT_GDFONT を参照します。
PostScript プリンタや表示ソフトはすべて、標準的な Adobe フォントセット Times-Roman, Helvetica, Courier, Symbol は知っているはずです。 多分その他にも多くのフォントが使えるようになっていると思いますが、それ ら特定のフォントセットはあなたのシステムやプリンタの設定に依存します。 gnuplot は、それは知りませんし気にもしません。gnuplot が作成した *.ps や *.eps 出力は、あなたの要求したフォント名を単に持っているだけです。
よって、
set term postscript eps font "Times-Roman,12"
一方、
set term postscript eps font "Garamond-Premier-Pro-Italic"
しかし、指定したフォントを出力ファイル中に埋め込んで、どんなプリンタで もそれを使うようにすることも可能です。これには、あなたのシステムに適切 なフォント記述ファイルがあることが必要となります。この方法でフォントを 埋め込む場合、特定のライセンスが必要となるフォントファイルもあることに 注意してください。より詳細な説明や例については、以下参照:postscript fontfile (113.50.2)。
"ページ (page)"、"表示画面 (screen)"、"キャンバス (canvas)" は、 gnuplot がアクセス可能な領域全体を指します。デスクトップではそれはウ ィンドウ全体を指し、プロッタでは、一枚の紙全体、svga モードでは、モニ タスクリーン全体を指します。
表示画面は、一つ、またはそれ以上の "グラフ描画 (plot)" を含みます。グ ラフ描画は一つの横座標と一つの縦座標で定義されますが、余白 (margin) や その中に書かれる文字列 (text) 同様、それらは実際にその上に表示されてい る必要はありません。
グラフ描画は一つの "グラフ" を含みます。グラフは一つの横座標と一つの縦 座標で定義されますが、これらは実際にその上に表示されている必要はありま せん。
グラフは一つまたはそれ以上の "曲線 (line)" を含みます。曲線は一つの関 数、またはデータ集合です。用語 "line" は描画スタイルとしても使われます。 さらにこの用語は "文字列の一行 (a line of text)" のように使われること もあります。多分文脈からそれらは区別できるでしょう。
一つのグラフ上の複数の曲線はそれぞれ名前を持ちます。その名前は、その曲 線の表現に使われる描画スタイルのサンプルとともに "凡例 (key)" 内に一覧 表示されます。凡例は、時には "表題 (legend)" とも呼ばれます。
用語 "タイトル (title)" は gnuplot では複数の意味で使われます。この ドキュメントではそれらを区別するために、形容詞として "描画の (plot)"、 "曲線の (line)"、"凡例の (key)" を頭につけたりもします。 2 次元のグラフは 4 つまでの見出し付けされる軸を持つことができます。こ れら 4 つの軸の名前はそれぞれ、グラフ描画の下の境界に沿う軸である "x"、 左の境界に沿う軸 "y"、上の境界に沿う軸 "x2"、右の境界に沿う軸 "y2" と なっています。以下参照: axes (89.1)。
3 次元のグラフは 3 つまでの見出し付けされる軸 (axes) "x","y","z" を 持つことができます。どの特定の軸に関してもそれがグラフ上でどこに書かれ るかを述べることはできません。それは、set view でグラフを見る方向を 変更できるからです。
データファイルに関する議論では、用語 "行 (record)" を復活し、ファイル の一行の文字列、すなわち、改行文字や行末文字同士の間の文字列、を指し示 すのに使います。"点 (point)" は行から取り出した一つのデータです。デー タの "ブロック (block)" は、空行で区切られた連続した複数の行からなる集 合です。データファイルの議論の中で "line" が参照される場合は、これはブ ロックの部分集合を指します。"データのブロック (data block)" という言葉 は、インラインデータの名前付きブロックを指すのにも使われています。以下参照: datablocks (19)。
(訳注: この日本語訳の中ではここに書かれているような用語の統一は考慮さ れてはおらず、よって混乱を引き起こす可能性があります。厳密には原文を参 照すべきでしょう。)
もう一つは、ヒアドキュメントとして名前付きのデータブロックを定義する方
法です。その名前付きのデータは残るので、複数の plot コマンドで参照でき
ます。例:
$Mydata << EOD 11 22 33 first line of data 44 55 66 second line of data # データファイル同様コメントも機能する 77 88 99 EOD stats $Mydata using 1:3 plot $Mydata using 1:3 with points, $Mydata using 1:2 with impulses
データブロック名は、他の変数と区別するために、最初の文字を $ にする必 要があります。データの終わりの区切り (上の例では EOD) は、任意のアルフ ァベット、数字からなる文字列で構いません。
コマンド undefine を使えば、保存した名前付きデータブロックを削除でき ます。undefine $* は、すべての名前付きデータブロックを一度に削除しま す。
set multiplot layout 2,2 fourier(k, x) = sin(3./2*k)/k * 2./3*cos(k*x) do for [power = 0:3] { TERMS = 10**power set title sprintf("%g term Fourier series",TERMS) plot 0.5 + sum [k=1:TERMS] fourier(k,x) notitle } unset multiplot
繰り返しは、以下のような書式による繰り返し指定で制御します。
for [<var> in "string of N elements"]
または
for [<var> = <start> : <end> { : <increment> }]
最初の書式では <var> は文字列変数で、その後ろに指定した文字列に含まれ る 1 番目から N 番目までの単語文字列を順に値として取ります。 2 番目の書式では、<start>, <end>, <increment> は整数、または整数値を取 る数式です。
一つの例外を除いて、gnuplot の変数は大域的です。 名前で添字づけされた、永続的で有効な変数のリストが一つだけあり、変数の 割り当ては、そのリストに項を生成するか、または項の置き換えにより行われ ます。変数をそのリストから削除するただ一つの方法は、undefine コマン ドを使うことです。
これのただ一つの例外は、繰り返し指定で用いられる変数です。繰り返し変数 の有効範囲 (scope) は、その繰り返しの中だけですから、その値を、繰り返 しの実行ブロック内から永続的に変更することはできません。繰り返し変数が 繰り返しの前に値を持っていたとしたら、その値は繰り返しの終了時に保持、 または復帰されます。 例えば、以下のコマンドは、1 2 3 4 5 6 7 8 9 10 A を出力します。
i = "A" do for [i=1:10] { print i; i=10; } print i
線種 (linetype) の属性の並びは、対話的か初期化ファイルのいずれかによっ てさらにカスタマイズ可能です。以下参照: set linetype (100.40)。配布パッケージ に初期化ファイルのサンプルがいくつか用意されています。
特定の出力形式に対する線種の属性の現在の状態は、その出力形式を設定した あとで test コマンドを実行することで確認できます。
一つの描画コマンド内での関数やデータファイルの連続する並びには、現在の デフォルトの線種列から線種が順番に割り当てられます。個々の関数、データ ファイル、またはその他の描画要素に対する線種は、その描画コマンド上で明 示的に線の属性を指定することで上書きできます。
例:
plot "foo", "bar" # 線種 1, 2 で 2 ファイルを描画 plot sin(x) linetype 4 # 線種色 4 を使用
一般に、色の指定は、色の名前か、RGB (赤、緑、青) 成分か、HSV (色相、彩 度、明度) 成分か、現在の pm3d パレットに沿った座標で行います。
例:
plot sin(x) lt rgb "violet" # gnuplot の持つ色名の一つ plot sin(x) lt rgb "#FF00FF" # 明示的な 16 進 RGB 3 つ組 plot sin(x) lt palette cb -45 # 現在のパレットの cbrange の # -45 に対応する色 plot sin(x) lt palette frac 0.3 # パレットに対応する小数値
以下参照: colorspec (21.1), show colornames (100.16), hsv (16.3), set palette (100.66),cbrange (100.153)。以下も参照: monochrome (100.51)。
線種 (linetype) には、点線/破線のパターンも結びつけられていますが、す べての出力形式でそれが使えるわけではありません。gnuplot バージョン 5 では、線色とは独立に点線/破線パターンを指定できます。以下参照:dashtype (21.2)。
書式:
... {linecolor | lc} {"colorname" | <colorspec> | <n>} ... {textcolor | tc} {<colorspec> | {linetype | lt} <n>} ... {fillcolor | fc} {<colorspec> | linetype <n> | linestyle <n>}
<colorspec> は以下の形式のいずれかです:
rgbcolor "colorname" # 例: "blue" rgbcolor "0xRRGGBB" # 16 進数値の定数文字列 rgbcolor "0xAARRGGBB" # 16 進数値の定数文字列 rgbcolor "#RRGGBB" # x11 形式の 16 進数文字列 rgbcolor "#AARRGGBB" # x11 形式の 16 進数文字列 rgbcolor <integer val> # AARRGGBB を表す整数値 rgbcolor variable # 入力ファイルから整数値を読み込む palette frac <val> # <val> は 0 から 1 の値 palette cb <value> # <val> は cbrange の範囲の値 palette z variable # 入力ファイルから色番号を読み込む bgnd # 背景色 black
<n> は、その線種 (linetype) 番号が使う色を意味します。以下参照:test (105)。
"colorname" は gnuplot が内部に持っている色の名前のうちの一つを指定し ます。有効な名前の一覧に関しては、以下参照: show colornames (100.16)。
16 進定数は、引用符付きで "#RRGGBB" や "0xRRGGBB" の形で与えることがで きます。RRGGBB は、色の赤、緑、青の成分を意味し、それぞれ 00 から FF までの範囲内でなければいけません。例えば、マゼンタ (紫) は、最も明るい 赤 + 最も明るい青、なので "0xFF00FF" と表され、これは 16 進数で (255 << 16) + (0 << 8) + (255) を意味しています。
"#AARRGGBB" は、RGB 色の上位ビットにアルファ値 (透過性) がついているこ とを意味します。アルファ値 0 は完全に不透明色であることを意味し、よっ て "#00RRGGBB" は "#RRGGBB" と同じになります。アルファ値の 255 (FF) は 完全に透明であることを意味します。
カラーパレットとは、色の線型なグラデーションで、単一の数値を特定の色に 滑らかに対応づけます。常にそのような 2 つの対応付けが効力を持ちます。 palette frac は 0 から 1 までの小数値を、カラーパレットの全範囲に対 応付けるもので、palette cb は、色軸の範囲を同じカラーパレットへ割り 当てるものです。以下参照: set cbrange (100.153), set colorbox (100.15)。これらの対応 付けのどちらかを使って、現在のパレットから定数色を選び出すことができま す。
"palette z" は、各描画線分や描画要素の z の値を、パレットへ対応づけら れている cbrange の範囲に対応づけます。これにより、3 次元の曲線や曲面 に沿って色を滑らかに変化させることができます。これは、2 次元描画で、パ レット値を追加の列データから読み込ませて色付けするのにも使えます (すべ ての 2 次元描画スタイルがこの追加列を認識するわけではありません)。 特殊な色指定が 2 つあります。背景色の bgnd と、black です。
# 以下はキャンバスの一部分を背景色で上書きすることで消去します。 set term wxt background rgb "gray75" set object 1 rectangle from x0,y0 to x1,y1 fillstyle solid fillcolor bgnd # 以下は x 軸に沿った「見えない」線を描きます。 plot 0 lt bgnd
例:
# データの 3 列目を、個々の点に色を割り当てるのに使用 plot 'data' using 1:2:3 with points lc variable
# 一つのデータファイルには複数のデータ集合を入れることが可能で、 # それらは 2 行の空行で分離されています。個々のデータ集合には # index 値が割り当てられていて (以下参照: `index`)、using 指定の # column(-2) で取得できます。以下参照: `pseudocolumns`。以下の例 # は -2 の column 値を使って、個々のデータ集合を異なる線色で描画 # します。 plot 'data' using 1:2:(column(-2)) with lines lc variable
例:
# 3 次元描画で、各 x,y,z 座標に対応した赤、緑、青の成分を持つ色 # のついた点を配置 rgb(r,g,b) = 65536 * int(r) + 256 * int(g) + int(b) splot "data" using 1:2:3:(rgb($1,$2,$3)) with points lc rgb variable
if (GPVAL_VERSION >= 5.0) set for [i=1:9] linetype i dashtype i if (GPVAL_VERSION < 5.0) set termoption dashed
すべての線は、ほかに指定しなければ、dashtype solid という属性を持ち ますが、このデフォルト値をコマンド set linetype で特定の線種に変更し その後のコマンドで使えるようにできます。または、plot や他のコマンド の一部分として使用したい点線/破線の型を指定できます。
書式:
dashtype N # 定義済み点線/破線型を番号で呼び出し dashtype "pattern" # 点 (.) 横線 (-) 下線 (_) と空白の組み合わ # せ文字列による指定 dashtype (s1,e1,s2,e2,s3,e3,s4,e4) # 1~4 個の <実線長>,<空白長> # の組による点線/破線パターン指定
例:
# 2 つの関数が線種 1 を使うが dashtype で区別 plot f1(x) with lines lt 1 dt solid, f2(x) with lines lt 1 dt 3
いくつかの出力形式は、それが提供する定義済み点線/破線パターンに、ユー ザ定義パターンを追加することをサポートしています。
例:
plot f(x) dt 3 # 出力形式の持つパターン 3 を使用 plot f(x) dt ".. " # 一時的なパターンを作成 plot f(x) dt (2,5,2,15) # 同じパターンを数値で表現 set dashtype 11 (2,4,4,7) # 新パターンを番号で呼び出せるよう定義 plot f(x) dt 11 # 新パターンを使って描画
点線/破線パターンを文字列で指定した場合、gnuplot はそれを <実線長>, <空白長> の組の列に変換します。ドット "." は (2,5) に、ダッシュ "-" は (10,10) に、下線 "_" は (20,10) に、また空白 " " は直前の <空白長> の 値に 10 を追加します。その場合、コマンド show dashtype は、元の文字 列と変換後の数値の列の両方を表示します。
例:
# 新しいラインスタイルを、出力形式に依存しない色 cyan、線幅が 3、 # 点種 6 (丸の中に点) と定義 set style line 5 lt rgb "cyan" lw 3 pt 6 plot sin(x) with linespoints ls 5 # 定義スタイル 5 で
set object 1 rectangle from graph 0,0 to graph 1,1 fc rgb "gray" behind
behind back グラフ自体 グラフの表題 (`key`) front
格子線、軸、境界要素 (grid, axis, border elements) 番号順のピクスマップ画像 (pixmaps) 番号順のオブジェクト (rectangle, circle, ellipse, polygon) 番号順のラベル (label) 番号順の矢印 (arrow)
bind {allwindows} [<key-sequence>] ["<gnuplot commands>"] bind <key-sequence> "" reset bind
bind は、ホットキーの定義、再定義に使用します。ホットキーとは、入力 カーソルがドライバのウィンドウ内にあるときに、あるキー、または複数のキ ーを押すことで、gnuplot のコマンド列を実行させる機能のことを言います。 bind は、gnuplot が mouse をサポートするようにコンパイルされていて かつマウスが有効な出力形式上で使われてる場合にのみ有効であることに注意 してください。ユーザ指定のキー割当 (binding) は、組み込み (builtin) キ ー割当を置き換えますが、<space> と 'q' は通常は再定義はできません。そ の唯一の例外については、以下参照: bind space (23.1.1)。
マウスボタンは、ボタン 1 のみ、2 次元描画用にのみ定義可能です。
ホットキーの一覧を得るには 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 # デフォルト (組み込み) のキー定義を導入
- トグルスイッチ形式にキー割当:
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, shift (ボタン 1, ボタン 2, ボタン 3 でのみ有効)
サポートされている特殊キーの一覧:
"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" "Button2" "Button3" "Close"
以下も参照: mouse (100.52)。
plot 'something' pause mouse if (exists("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, GPVAL_Y_MAX で参照できることに注意してください。 以下参照: gnuplot-defined variables (16.6)。
gnuplot -persist -e 'plot [-5:5] sinh(x)'
gnuplot は、表示ウィンドウを開き、その中にグラフを描き、そして終了し、 表示ウィンドウはグラフをその中に持ったままスクリーンに残ります。新しい 出力形式をセットする際に persist や nopersist を指定することもでき ます。
set term qt persist size 700,500
出力形式によっては、その残ったウィンドウ上でも多少のマウス操作が可能な 場合もあります。しかし、グラフの再描画を要求するズーム (とその逆) のよ うな操作は、既にプログラムが終了しているので無理です。描画ウィンドウを 開いたまま残し、その後のマウス機能も完全に可能にするには、例えば gnuplot を対話型ではなく、スクリプトファイルから実行させる方法がありま す。以下参照: pause mouse close (88.1)。
これら 4 つのコマンドのうちの一つを実行した場合は、現在定義されている 軸、ラベル、タイトル、および元の plot コマンドで指定されたさまざまな関 数やデータのすべてを含む出力のスクリーンを再描画するか、新しい出力ペー ジを生成します。もし、一つのページに複数のグラフを隣り合うように並べて 出力したい場合、例えば複数の図のパネルを作成したり、大きなグラフの中に 小さなグラフを挿入したりしたい場合は、コマンド set multiplot を使用 し、各描画コマンドで新しいページが作られるのを抑制してください。
描画に関する一般的な情報の大半は、plot に関する項で見つかります。3 次元描画に固有の情報は splot の項にあります。
plot は xy 直交座標系と極座標系が使えます。以下参照: set polar (100.74)。 splot は xyz 直交座標が使えますが、3 次元極座標、円柱座標データも入 力できます。以下参照: set mapping (100.47)。 plot では、4 つの境界 x (下), x2 (上), y (左), y2 (右) をそれぞれ独 立な軸として扱うこともできます。オプション axes で、与えられた関数や データ集合をどの軸のペアで表示させるかを選べます。また、各軸の縮尺や見 出しづけを完全に制御するために十分な補佐となる set コマンド群が存在 します。いくつかのコマンドは、set xlabel のように軸の名前をその中に 持っていますし、それ以外のものは set logscale xy のように、1 つ、または複数の軸の名前をオプションとしてとります。z 軸を制御するオプション やコマンドは 2 次元グラフには効力を持ちません。
splot は、点や線に加えて曲面や等高線を書くことができます。3 次元の関 数の格子定義に関する情報については、以下参照: set isosamples (100.35)。3 次元 データのファイルに必要な形態については、以下参照: splot datafile (102.1)。等 高線に関する情報については、以下参照: set contour (100.17), set cntrlabel (100.13),set cntrparam (100.14)。
splot での縮尺や見出し付けの制御は、z 軸にも有効であること、および x2 軸、y2 軸のラベル付けが set view map を使って作られる疑似的な 2 次元描画にのみ可能であることを除けば plot と全く同じです。
これは、gnuplot 内で直接以下のようにして近似的に定義できます。
Q(a,x) = 1. - igamma(a,x)
gnuplot の配布物のディレクトリ demo/plugin には、プラグインライブラリ を生成するための説明とソースコードがあります。簡単なサンプルファイル demo_plugin.c の関数を、あなたの興味ある関数の実装に置き換えて修正し てください。 これには、外部の数学ライブラリの関数の呼び出しも含まれています。
ディレクトリ demo/plugin には、Q(a,x) を実装するプラグインのソースも
あります。上で注意したように、このプラグインは、現在の開発版の gnuplot
に含まれる uigamma と同じ関数を、以前のバージョンに実装することを可能にします。
import Q(a,x) from "uigamma_plugin" uigamma(a,x) = ((x<1 || x<a) ? 1.0-igamma(a,x) : Q(a,x))
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
if ("A"."B" eq "AB") print "TRUE"
utf8string = "αβγ" strlen(utf8string) は 3 を返す (文字数であって、バイト数ではない) utf8string[2:2] は "β" となる strstrt(utf8string,"β") は 2 となる
[変更] (version 4 から 5.2 までと異なる挙動): 内部の復帰 (' \r') と改行 (' \n') 文字は、置換時の文字入力から取り除きません。この変更は、インラ インの逆引用符の置換に system() 関数を導入したものです。
コマンド置換は、単一引用符内の文字列以外は、gnuplot のコマンドライン中、どこででも使用可能です。
例:
以下の例は、leastsq というプログラムを実行し、その出力結果で、leastsq を (まわりの引用符こみで) 置き換えます:
f(x) = `leastsq`
ただし VMS では、
f(x) = `run leastsq`
以下は現在の日付とユーザー名のラベルを生成します:
set label "generated on `date +%Y-%m-%d` by `whoami`" at 1,1 set timestamp "generated on %Y-%m-%d by `whoami`"
style1 = "lines lt 4 lw 2" style2 = "points lt 3 pt 5 ps 2" range1 = "using 1:3" range2 = "using 1:5" plot "foo" @range1 with @style1, "bar" @range2 with @style2
この @ 記号を含む行は、その入力時に展開され、それが実際に実行されると きには次のように全部打ち込んだ場合と同じことになります。
plot "foo" using 1:3 with lines lt 4 lw 2, \ "bar" using 1:5 with points lt 3 pt 5 ps 2
関数 exists() はマクロの評価に関して有用でしょう。以下の例は、C が安全にユーザ定義変数の名前に展開できるかどうかをチェックします。
C = "pi" if (exists(C)) print C," = ", @C
マクロの展開は、単一引用符内、または二重引用符内では行なわれませんが、 逆引用符 (`) 内ではマクロ展開されます。
マクロの展開は、gnuplot が新しいコマンド行を見たときに非常に早い段階で gnuplot が処理し、そしてただ一度だけそれを行います。よって、
A = "c=1" @A
のようなコードは正しく実行しますが、以下のような行はだめです。それは、 マクロの定義が同じ行にあるため展開に間に合わないからです。
A = "c=1"; @A # will not expand to c=1
繰り返し用の中括弧内でのマクロの展開は、そのループが実行される前に行い ます。すなわち、ループ内では A 自体を再定義しても、@A は常に A の元の 値に展開されます。
コマンドを完成させて実行するには、コマンド evaluate も有用でしょう。
filename = "mydata.inp" lines = ` wc --lines @filename | sed "s/ .*//" `
は、mydata.ipn の行数を整数変数 lines に保存することになります。また、 二重引用符は逆引用符の置換を妨げないので、
mycomputer = "`uname -n`"
は、システムコマンド uname -n の返す文字列を文字列変数 mycomputer に 保存することになります。
しかし、マクロ置換は二重引用符内では機能しないので、システムコマンドを マクロとして定義してそれをマクロとして利用しかつ逆引用符置換を行なうこ とはでできません。
machine_id = "uname -n" mycomputer = "`@machine_id`" # うまくいかない !
この失敗は、二重引用符が @machine_id をマクロとして解釈することを妨げ ているからです。システムコマンドをマクロとして保存し、その後それを実行 するには、逆引用符自体もマクロ内に含める必要があります。これは以下のようにマクロを定義することで実現できます。sprintf の書式には 3 種類の引 用符全てが入れ子になっていることに注意してください。
machine_id = sprintf('"`uname -n`"') mycomputer = @machine_id
コンマは以下の区切りで使用されます。set コマンドの arrow, key, label の座標; 当てはめ (fit) られる変数のリスト (コマンド fit のキ ーワード via に続くリスト); コマンド set cntrparam で指定されると びとびの等高線の値やそのループパラメータのリスト; set コマンドの dgrid3d dummy, isosamples, offsets, origin, samples, size, time, view の引数; 目盛りの位置やそのループパラメータのリ スト; タイトルや軸の見出しの位置; plot, replot, splot コマンドの x,y,z 座標の計算に使われる媒介変数関数のリスト; plot, replot, splot コマンドの複数の描画 (データ、または関数) のそれぞれの一連のキ ーワードのリスト。
(丸) カッコは、目盛りの見出しを (ループパラメータではなく) 明示的に集 合与える場合の区切りとして、または fit, plot, replot, splot コ マンドの using フィルタでの計算を指示するために使われます。
(カッコやコンマは通常の関数の表記でも使われます。)
かぎかっこは、set, plot, splot コマンドでは範囲を区切るのに使わ れます。
コロンは range (範囲) 指定 (set, plot, splot コマンドで使われ る) の両端の値を区切るのに、または plot, replot, splot, fit コ マンドの using フィルタの各エントリを区切るのに使われます。
セミコロン (;) は、一行のコマンド行内で与えられる複数のコマンドを区切 るのに使われます。
中カッコ ({}) は、拡張文字列処理モード (enhanced text mode) の記述や、 if/then/else 文のブロックの区切りとして使われますし、または複素数を記 述するのにも使われます: {3,2} = 3 + 2i となります。
ファイル名は単一引用符、あるいは二重引用符内で囲みます。このマニュアル では一般にコマンドの例示では、わかりやすくするためにファイル名は単一引 用符でくくり、他の文字列は二重引用符でくくります。
見出し (label)、タイトル (title)、またはその他の描画要素で使用される文 字列定数や複数行文字列は単一引用符、あるいは二重引用符内で囲みます。引 用符で囲まれた文字列のさらなる処理の結果は、どの引用符記号を選ぶかによ って変わります。
\n (改行) や \345 (8 進表記の文字コード) のようなバックスラッシュ ( \) による特殊文字表現は、2 重引用符内の文字列でのみ効力を持ちます。単一引 用符内では、バックスラッシュ自体が通常の文字と見なされます。単一引用符 内の文字列で単一引用符自体 (ASCII コード 39 番) を使うには、それを重ね て書く必要があります。つまり、文字列 "d \" s' b \ \" と、'd" s' ' b \' は完 全に同じものとなります。
1 つの複数行文字列に関する行揃えは各行に同等に働きます。よって、中央に
行揃えされた文字列
"This is the first line of text.\nThis is the second line."
This is the first line of text. This is the second line.
'This is the first line of text.\nThis is the second line.'
This is the first line of text.\nThis is the second line.
拡張文字列処理 (enhanced text processing) は二重引用符に対しても単一引 用符に対しても機能します。しかし、そのモードをサポートしている出力形式 でのみ働きます。以下参照: enhanced text (14)。
逆引用符は,コマンドライン中の置換のためにシステムコマンドを囲むのに使 います。以下参照: substitution (29)。
内部では全ての時間/日付は 1970 年からの秒数に変換されます。コマンド set timefmt は全ての入力に対するデフォルトの書式を定義します。データ ファイル、範囲、軸の目盛りの見出し、ラベルの位置と、日時データ値を受け 入れるすべてのものへの入力の書式が、デフォルトでこれになります。一時に は一つのデフォルト入力書式のみが有効です。よって、ファイル内の x と y の両方が時間/日付データである場合は、デフォルトではそれは同じ書式と解 釈されます。しかし、このデフォルトは、using 指定で関数 timecolumn を用いて、それに対応する特定のファイルや列からデータを読みこむことによ り、変えることが可能です。
秒数へ (秒数から) の変換は国際標準時 (UT; グリニッジ標準時 (GMT) と同 じ) が使われます。各国標準時や夏時間への変換の機能は何も持ち合わせてい ません。もしデータがすべて同じ標準時間帯に従っているなら (そして全てが 夏時間か、そうでないかのどちらか一方にのみ従うなら) これに関して何も心 配することはありません。しかし、あなたが使用するアプリケーションで絶対 的な時刻を厳密に考察しなければいけない場合は、あなた自身が UT に変換す べきでしょう。
show xrange のようなコマンドは、その整数値を timefmt に従って解釈 し直します。timefmt を変更してもう一度 show でその値を表示させると、 それは新しい timefmt に従って表示されます。このため、(set xdata な どにより) その軸に対するデータ型をリセットすると、その値は整数値として 表示されることになります。
コマンド set format または set tics format は、指定された軸に対す る入力が時間/日付であるなしに関わらず目盛りの見出しに使われる書式を定 義します。
時間/日付情報がファイルから描画される場合、plot, splot コマンドで は using オプションを「必ず」使う必要があります。plot, splot で は各行のデータ列の分離にスペースを使いますが、時間/日付データはその中 にスペースを含み得るからです。もしタブ区切りを使用しているのなら、あな たのシステムがそれをどう扱うか確かめるために何度もテストする必要がある でしょう。
関数 time は、現在のシステム時刻を得るのに使えます。この値は、 strftime 関数で日時文字列に変換できますし、timecolumn と組み合わせ て相対的な日時グラフを作成するのにも使えます。引数の型はそれが返すもの を決定します。引数が整数の場合は time() は現在の時刻を 1970 年 1 月 1 日からの整数として返し、引数が実数 (または複素数) ならば同様の値を実数 として返しますが、小数 (秒以下) 部分の精度は、オペレーティングシステム に依存します。引数が文字列ならば、それを書式文字列であるとみなし、書式化された日時文字列を提供するようそれを strftime に渡します。
次の例は時間/日付データの描画の例です。
ファイル "data" は以下のような行からなるとします:
03/21/95 10:00 6.02e23
このファイルは以下のようにして表示されます:
set xdata time set timefmt "%m/%d/%y" set xrange ["03/21/95":"03/22/95"] set format x "%m/%d" set timefmt "%m/%d/%y %H:%M" plot "data" using 1:3
ここで、x 軸の目盛りの見出しは "03/21" のように表示されます。
現在の gnuplot は、時刻をミリ秒精度で追跡し、時刻のフォーマットもそれ
に伴って変更されています。
例: 現在の時刻をミリ秒精度で表示
print strftime("%H:%M:%.3S %d-%b-%Y",time(0.0)) 18:15:04.253 16-Apr-2011
以下参照: time_specifiers (100.28.3)。
gnuplot では、たくさんの描画スタイルが利用できます。 それらは、アルファベット順に以下に紹介されています。 コマンド set style data と set style function は、それ以降のplot や splot コマンドに対してデフォルトの描画スタイルを変更します。
描画スタイルは、コマンド plot や splot の一部分として、明示的にオ プション指定することもできます。一つの描画の中で、複数の描画スタイルを 組み合わせたい場合は、各要素に対して描画スタイルを指定する必要がありま す。
例:
plot 'data' with boxes, sin(x) with lines
各描画スタイルは、それ自体がデータファイルからのいくつかのデータの組 を期待します。例えば、デフォルトでは lines スタイルは、y の値だけの 1 列のデータ (x の値は暗黙に順番に取られる)、または最初が x, 次が y の 2 つの列を期待しています。ファイルの何列のデータを描画データと解釈させ るうまい方法に関する情報については、以下参照: using (89.3.11)。
4 列: x y length angle
キーワード with arrows の後ろには、インラインの arrow style 属性や、 定義済みの arrow style の参照、また arrowstyle variable による各矢印 毎に適用したい arrow style 番号を他の列から読み込ませること、などを 追加指定できます。
正の length 値は、x 軸の座標で解釈します。 -1 < length < 0 の値は、水平グラフ座標、すなわち |length| を全体のグ ラフ幅に対する割合として解釈します。 gnuplot は x と y の拡大率の差、または描画アスペクト比に関して調整して、 見た目の長さが方向角とは独立であるようにしようとします。
angle は常に度単位で指定します。
set jitter plot $data using 1:2:1 with points lc variable
3 列: x y ydelta 4 列: x y ydelta xdelta # 箱の幅 != -2 4 列: x y ylow yhigh # 箱の幅 == -2 5 列: x y ylow yhigh xdelta
箱の高さは、yerrorbars スタイル同様に y の誤差の値から決定されます。 y-ydelta から y+ydelta まで、あるいは ylow から yhigh まで、これらは何 列のデータが与えられているかによって決まります。
3 次元グラフでは、スタイル boxes は与えられた x, y 座標を中心とし、 xy 平面 (z=0) から与えられた z 座標まで伸ばした直方体の箱を書きます。 x 方向の箱の幅は、別の入力列か set boxwidth で指定でき、y 方向の箱の 奥行きは、set boxdepth で制御できます。箱は、2 次元の場合とは違い、 自動的にはくっつくようには引き伸ばされません。
plot with boxes は、基本的に 2 列、または 3 列のデータを使用します。 さらに入力列を追加すると、それは variable 行や塗り潰し色の情報として使 用します。以下参照: rgbcolor variable (21.1.3)。
2 列: x y 3 列: x y x_width
箱の内部は現在の塗りつぶしスタイル (fillstyle) で塗りつぶします。それ 以外に、塗りつぶしスタイルを plot コマンド上で指定することもできます。 以下参照: set style fill (100.86.4)。 塗り潰し色を plot コマンドで指定しなければ、現在の線色を使用します。
例:
データファイルを単色塗りした箱で描画し、箱同士を少し垂直方向にスペース を空ける (棒グラフ):
set boxwidth 0.9 relative set style fill solid 1.0 plot 'file.dat' with boxes
パターンでの塗りつぶしスタイルの箱で sin と cos のグラフを描画:
set style fill pattern plot sin(x) with boxes, cos(x) with boxes
sin はパターン 0 で、cos はパターン 1 で描画されます。追加される描画は 出力ドライバがサポートするパターンを循環的に使用します。
それぞれのデータ集合で明示的に塗りスタイル、塗り色を指定:
plot 'file1' with boxes fs solid 0.25 fc 'cyan', \ 'file2' with boxes fs solid 0.50 fc 'blue', \ 'file3' with boxes fs solid 0.75 fc 'magenta', \ 'file4' with boxes fill pattern 1, \ 'file5' with boxes fill empty
splot with boxes には、少なくとも 3 列の入力列が必要です。さらに入力 列を追加すると、それは箱の幅や塗り潰し色の情報として使用します。
3 列: x y z 4 列: x y z [x_width または color] 5 列: x y z x_width color
最後の列は、splot コマンドで明示的に variable カラーモードを指定してい る場合のみ色として使用します。例:
splot 'blue_boxes.dat' using 1:2:3 fc "blue" splot 'rgb_boxes.dat' using 1:2:3:4 fc rgb variable splot 'category_boxes.dat' using 1:2:3:4:5 lc variable
最初の例は、すべての箱を青に塗り、幅はあらかじめ set boxwidth で設定 した幅を使用します。2 つ目の例は、4 列目を 24-bit RGB 色として認識する ため、箱の幅は相変わらず set boxwidth の幅を使います。3 つ目の例は、 4 列目の値を箱の幅として読み、5 列目の整数値を色を提供する線種と解釈し ます。
デフォルトでは、箱には太さはなく、それらは単に xz 平面に平行な 1 つの 長方形で構成されますが、y 方向の幅として 0 でない値を設定すれば 4 面と 天井をを持つ本当の箱に変更できます。以下参照: set boxdepth (100.8)。
3 次元の箱は、曲面ではなく pm3d 長方形として処理しています。よって、表 裏の描画順は、set hidden3d の影響を受けません。同様に、各箱の表面に 境界線を書きたい場合は、set style fill border ではなく、 set pm3d border を使う必要があります。以下参照: set pm3d (100.71)。 最良の結果を得るには、set pm3d depthorder base と set pm3d lighting を組み合わせてください。
例:
# x 座標は 1.0、y は 5 列目の値のところに boxplot を配置 plot 'data' using (1.0):5
# 上と同じだが、範囲外の点は隠し、boxplot の幅を 0.3 にする set style boxplot nooutliers plot 'data' using (1.0):5:(0.3)
デフォルトでは、using 指定による 2 列目の y のすべての値に対する boxplot を 1 つだけ生成します。しかし、追加の (4 つ目の) 列を指定する と、その列の値をある因子変数の離散的なレベル値であると見なし、その離散 値のレベルの値の数だけの boxplot を描画します。それらの boxplot の間隔 はデフォルトでは 1.0 ですが、これは set style boxplot separation で 変更できます。デフォルトでは、因子変数の値は、各 boxplot の下 (または 上) の目盛りのラベルに表示します。
例
# 'data' の 2 列目は "control" か "treatment" のいずれかの文字列で # 以下の例は、その因子毎の 2 つの boxplot を生成する plot 'data' using (1.0):5:(0):2
その箱のデフォルトの幅は set boxwidth <width> で設定できますが、plot コマンドの using による 3 番目のオプション列でも指定できます。1 番目 と 3 番目の列 (x 座標と幅) は通常データ列ではなく定数として与えます。
デフォルトでは、箱ひげは箱の端から、y の値が四分位範囲の 1.5 倍の中に 収まっていて最も離れているような点まで延長されます。デフォルトでは、範 囲外の点 (outlier) は円 (pointtype 7) で描かれます。箱ひげの端の棒の幅 は set bars または set errorbars を使って制御できます。
これらのデフォルトの性質は set style boxplot コマンドで変更できます。 以下参照: set style boxplot (100.86.2), bars (100.25), boxwidth (100.7), fillstyle (100.86.4),candlesticks (38)。
4 列: x y xdelta ydelta 6 列: x y xlow xhigh ylow yhigh
箱の幅と高さは xyerrorbars スタイル同様 x, y の誤差から決定されます つまり、xlow から xhigh までと ylow から yhigh まで、または x-xdelta から x+xdelta までと y-ydelta から y+ydelta まで。これらは何列のデータ が与えられているかによって決まります。
6 列の形式のコマンドは、任意の x, y の幅の長方形を書く簡単な方法を提供 します。
入力列を追加 (5,7 列目) すると、それらは各データ点毎の variable color 情報 (以下参照: linecolor (21.1), rgbcolor variable (21.1.3)) であるとして使われま す。
箱の内部は現在の塗りつぶしスタイル (fillstyle) に従って塗られます。詳 細は、以下参照: set style fill (100.86.4), boxes (35)。plot コマンド上で新しい塗り つぶしスタイルを指定することもできます。
基本的に 5 列のデータが必要です:
金融データ: date open low high close 箱ひげ描画: x box_min whisker_min whisker_high box_high
長方形の幅はコマンド set boxwidth で制御できますが、以前の gnuplotへの後方互換性として、boxwidth パラメータが設定されていない場合はset errorbars <width> を長方形の幅として取ります。
これの代わりに、箱ひげ (box-and-whisker) のグループ化に関する明示的な 幅の指定を、追加の 6 番目のデータで指定できます。その幅は、x 座標と同 じ単位で与えなければいけません。
入力列を追加 (6 列目、または 6 列目がデータの幅として使れる場合は 7 列 目) すると、それらは各データ点毎の variable color 情報 (以下参照:linecolor (21.1), rgbcolor variable (21.1.3)) として使われます。
デフォルトでは、鉛直線分のてっぺんと底には垂直に交わる水平線は引かれま せん。それを引きたい場合、例えば典型的な例は箱ひげ図 (box-and-whisker plot) での使用ですが、描画コマンドにキーワード whiskerbars を追加し てください。デフォルトでは、水平線は箱 (candlestick) の水平幅一杯に引 かれますが、それは全体の幅に対する割合を指定することで変更できます。
金融データの通常の慣習では、(開始値) < (終値) の場合は長方形は空で、 (終値) < (開始値) の場合は単色塗りします。現在の fillstyle に "empty" をセットしている場合は、実際にこうなります。以下参照: fillstyle (100.86.4)。 fillstyle に solid (単色塗り)、または pattern (パターン) をセットして いる場合は、開始値、終値に関係なく、すべての箱にそれが使われます。以下参照: set errorbars (100.25), financebars (43)。また、以下も参照してください。 candlestick
と finance
のデモ。
注意: 中央値を表すための記号などを追加したい場合、以下の例のように、ひげ付きの棒グラフに他の描画コマンドを追加する必要があります:
# データ列: X '最小値' '1/4 位の値' '中央値' '3/4 位の値' '最大値' set errorbars 4.0 set style fill empty plot 'stat.dat' using 1:3:2:6:5 with candlesticks title 'Quartiles', \ ” using 1:4:4:4:4 with candlesticks lt -1 notitle
# ひげの上に水平線を伴う描画で、水平線の幅を全体幅の 50% にする plot 'stat.dat' using 1:3:2:6:5 with candlesticks whiskerbars 0.5
以下参照: set boxwidth (100.7), set errorbars (100.25), set style fill (100.86.4), boxplot (36)。
各点毎に、そして事前に、設定する属性の多くの組み合わせ指定が可能です。 2 次元描画では、以下が指定できます。
using x:y using x:y:radius using x:y:color using x:y:radius:color using x:y:radius:arc_begin:arc_end using x:y:radius:arc_begin:arc_end:color
デフォルトでは完全な円を描画しますが、4 列目、5 列目に開始角と終了角 (単位は度)を指定することで円弧の一部を描画することもできます。
using 指定の最後の列で、円毎の色も指定できます。この場合、plot コマン ドには lc variable か fillcolor rgb variable のような変動色指定を 入れる必要があります。
3 次元描画では、using 指定には以下のものが必要です。
splot DATA using x:y:z:radius:color
変動色の列はオプション (省略可) です。 以下参照: set style circle (100.86.8), set style fill (100.86.4)。
例:
# 面積が 3 列目の値に比例するような円を描画 set style fill transparent solid 0.2 noborder plot 'data' using 1:2:(sqrt($3)) with circles, \ 'data' using 1:2 with linespoints
# 円の代わりにパックマンを描画 plot 'data' using 1:2:(10):(40):(320) with circles
# インランデータで円グラフを描画 set xrange [-15:15] set style fill transparent solid 0.9 noborder plot '-' using 1:2:3:4:5:6 with circles lc var 0 0 5 0 30 1 0 0 5 30 70 2 0 0 5 70 120 3 0 0 5 120 230 4 0 0 5 230 360 5 e
これは、pointstyle 7 で点のサイズを variable とした points による描 画と似ていますが、circles は x 軸の範囲で伸縮される点が異なります。以下も参照: set object circle (100.61.3), fillstyle (100.86.4)。
2 列: x y 3 列: x y major_diam 4 列: x y major_diam minor_diam 5 列: x y major_diam minor_diam angle
2 列のデータのみが与えられた場合は、それらは中心の座標とみなされ、楕円 はデフォルトの大きさで描画されます (以下参照: set style ellipse (100.86.10))。楕 円の向きは、主軸と x 軸のなす角で定義されますが、それもデフォルトの ellipse のスタイルから取られます (以下参照: set style ellipse (100.86.10))。 3 列のデータが与えられた場合は、3 列目は主、副両軸の直径 (幅) として使 われます。向きはデフォルトで 0 になります。 4 列のデータが与えられた場合は、それらは中心の座標、主軸直径 (幅)、副 軸直径として使わわれます。これらは直径であり、半径でないことに注意して ください。 5 列のデータとして、向きの角度 (単位は度) を指定することもできます。 楕円は、3,4,5 列の値は負の値として指定することで、それらのデフォルトの 値を利用して楕円を書かせることもできます。
上のすべての場合で、variable color データを最後の列 (3,4,5,6 列目) と して追加できます。以下参照: colorspec (21.1)。
デフォルトでは、主軸直径は水平軸 (x または x2) の単位、副軸直径は垂直 軸 (y または y2) の単位であるとみなされます。x 軸と y 軸の縮尺が異なる 場合、主軸と副軸の比は回転後には正しくはなりません。しかしこれは、キー ワード units で変更できます。
これに関しては、3 種類の代用品があります: units xy が描画指定に含まれている場合、その軸は上に述べたように縮尺 されます。units xx とすると、直径は両軸とも x 軸の単位で計算され、 units yy は両軸とも y 軸の単位で計算されます。後の 2 つは、描画のサ イズを変更しても、楕円は正しいアスペクト比を持ちます。 plot コマンドで units を省略した場合は、set style ellipse の設定を 使います。
例 (楕円を有効な線種を周期的に使用して描画):
plot 'data' using 1:2:3:4:(0):0 with ellipses
以下も参照: set object ellipse (100.61.2), set style ellipse (100.86.10), fillstyle (100.86.4)。
出力形式によっては (post, pdf など)、ドットの大きさは linewidth を変更 することで制御できることもあります。
1 列: y # x は行番号 2 列: x y 3 列: x y z # 3D のみ (splot)
書式:
plot ... with filledcurves [option]
ここで、オプションは以下のうちのいずれかです:
[closed | {above | below} {x1 | x2 | y | r}[=<a>] | xy=<x>,<y>]
最初のものは closed で、これは曲線それ自身を閉多角形と見なします。入 力データが 2 列の場合にはこれがデフォルトです。
2 種類目は指定された軸、あるいは水平線、垂直線、与えられた点などと、曲 線との間に作られる領域を塗りつぶします。
filledcurves closed ... 丁度閉曲線で囲まれる領域 filledcurves x1 ... x1 軸 filledcurves x2 ... x2 軸 (y1, y2 軸も同様) filledcurves y=42 ... 直線 y=42, すなわち x 軸と平行 filledcurves xy=10,20 ... x1,y1 軸での点 10,20 (扇型のような形状) filledcurves above r=1.5 極座標での動径軸の 1.5 の外側の領域
3 列: x y yerror
plot $DAT using 1:($2-$3):($2+$3) with filledcurves, \ $DAT using 1:2 smooth mcs with lines
above と below オプションは
... filledcurves above {x1|x2|y|r}=<val>
... using 1:2:3 with filledcurves below
注意: この描画モードは全ての出力形式でサポートされるとは限りません。
3 列のデータ描画では、x= と y= のキーワードは無視します。
データファイルから描かれた曲線の塗りつぶしを拡大すると、何もなくなった り正しくない領域になることがありますが、それは gnuplot が、領域ではな く点や線をクリッピングしているからです。
<x>, <y>, <a> が描画領域の外にある場合、それらはグラフの境界へ移動され ます。よって、オプション xy=<x>,<y> を指定した場合の実際の塗りつぶし領 域は、xrange や yrange に依存します。
fillstyle の属性の {{no}border} は、filledcurves のモードがデフォルト
の closed である場合に受け付けます。
例:
plot 'data' with filledcurves fc "cyan" fs solid 0.5 border lc "blue"
5 列: date open low high close
入力列を追加 (6 列目) すると、それらは各行毎の variable color 情報 (以下参照: linecolor (21.1), rgbcolor variable (21.1.3)) として使われます。
以下も参照 steps デモ。
plot <data> with fillsteps [above|below] [y=<baseline>]
autoscale が有効である場合、x の範囲は、その延長された水平線の範囲で はなく、データ点の範囲が選択されます。よって、端の点に関してはその水平 線は半分しか描かれないことになります。 以下も参照 steps デモ。
set style histogram clustered {gap <gapsize>} set style histogram errorbars {gap <gapsize>} {<linewidth>} set style histogram rowstacked set style histogram columnstacked set style histogram {title font "name,size" tc <colorspec>}
デフォルトのスタイルは set style histogram clustered gap 2 に対応し ています。このスタイルでは、並列に指定されたデータの値の集合は、選択さ れたデータ列のそのそれぞれの序列 (行番号) に対応する x 座標の場所に、 各々箱のグループとして固められて置かれます。よって、<n> 個のデータ列を 並列に指定した場合、最初の固まりは x=1 を中心とする <n> 個の箱の固まり からなり、その各々の高さは、その <n> データ列各々の最初 (1 行目) の値 が取られます。その後に少し空白 (gap) が空けられ、次に各データ列の次 (2 行目) の値に対応する箱の固まりが x=2 を中心として置かれます。以下同様です。デフォルトの空白 (gap) 幅の 2 は、箱の固まり同士の間の空白が、箱 2 つの幅に等しいことを意味します。同じ列に対する箱は全て同じ色または同 じパターンで与えられます (以下参照: set style fill (100.86.4))。
箱の固まりそれぞれは、データファイルの 1 つの行から得られます。そのよ うな入力ファイルの各行の最初の項目が見出し (ラベル) でることは良くある ことです。その列にある見出し (ラベル) は、using に xticlabels オプ ションをつけることで、それに対応する箱の固まりの真下の x 軸に沿ったと ころに置くことができます。
errorbars スタイル は、各エントリに対して追加の入力列を必要とする以外は clustered スタイルにとても良く似ています。最初の列は、
clustered スタイルの場合と全く同様に箱の高さ (y の値) として保持され
ます。
2 列: y yerr # 線は y-yerr から y+err へ伸びる 3 列: y ymin ymax # 線は ymin から ymax へ伸びる
積み上げ型のヒストグラムも 2 つの形式がサポートされています。それらは コマンド set style histogram {rowstacked|columnstacked} で選択できま す。これらのスタイルにおいて、選択された列のデータの値は積み上げられた 箱として集められます。正の値は、y=0 から上の方へ積み上げられ、負の値は 下へ向かって積み上げられます。正の値と負の値が混じってい場合は、上向き と下向きの両方の積み上げが生成されます。デフォルトの積み上げモードは rowstacked です。
スタイル rowstacked は、まず最初に選択された列の各行の値を x 軸のそ れぞれの位置に配置します: 1 行目の値は x=1 の箱、2 行目のは x=2、以下同様となります。2 番目以降に選択された列に対応する箱は、それらの上に積み重ねられて行きます。そして結果として、x=1 にできる箱の積み重ねは、各 列の最初の値 (1 行目の値) からなり、x=2 の箱の積み重ねは各列の 2 行目 の値、などのようになります。同じ列に対する箱は全て同じ色または同じパタ ーンで与えられます (以下参照: set style fill (100.86.4))。
スタイル columnstacked も同様ですが、こちらは各箱の積み上げは (各行 のデータからではなく) 各列のデータからなります。最初に指定された列の各 行のデータが x=1 の箱の積み上げを生成し、2 番目に指定した列の各行のデ ータが x=2 の箱の積み上げ、などのようになります。このスタイルでは、各 箱の色は、各データ項目の (列番号ではなく) 行番号から決定されます。
箱の幅はコマンド set boxwidth で変更できます。 箱の塗りつぶしスタイルはコマンド set style fill で設定できます。
histograms は x 軸は常に x1 軸を使いますが、y 軸に関しては y1 軸か y2 軸かを選択できます。plot 命令が、histograms と他のスタイルの描画の両方 を含む場合、histogram でない方は、x1 軸を使うか x2 軸を使うかを選択で きます。
一つ追加のスタイルオプション set style histogram nokeyseparators は、 複数のヒストグラムを含むグラフにのみ適切なものです。その場合の追加説明 については、以下参照: newhistgram ()。
例:
set boxwidth 0.9 relative set style data histograms set style histogram cluster set style fill solid 1.0 border lt -1 plot for [COL=2:4:2] 'file.dat' using COL
これは、x 軸上の各整数値を中心とするそれぞれ 2 つの箱 (鉛直な棒) 毎の 固まりによる描画を生成します。入力ファイルの最初の列にラベルが含まれて いるならそれを、以下の少し変更したコマンドで x 軸に沿って配置できます。
plot for [COL=2:4:2] 'file.dat' using COL:xticlabels(1)
set errorbars fullwidth set style fill solid 1 border lt -1 set style histogram errorbars gap 2 lw 2 plot for [COL=2:4:2] 'file.dat' using COL:COL+1
以下は、同じデータを行毎の積み上げ型 (rowstacked) のヒストグラムで描画 する方法を示しています。これまでとは違い、以下の例では繰り返しを使うのでなく、明示的に別々の列を指定します。
set style histogram rowstacked plot 'file.dat' using 2, ” using 4:xtic(1)
最後に以下のコマンド
set style histogram columnstacked plot 'file.dat' using 2, ” using 4
これは、gnuplot の通常の入力の縦、横の解釈を入れ換えることになりますの で、凡例のタイトルや x 軸の目盛りの見出しの指定も変更する必要がありま す。以下のコメント部分を参照してください。
set style histogram columnstacked plot ” u 5:key(1) # 1 列目を凡例タイトルに使用 plot ” u 5 title columnhead #
この 2 つの例は、全く同じデータ値を与えているのですが、異なる書式であ ることに注意してください。
newhistogram {"<title>" {font "name,size"} {tc <colorspec>}} {lt <linetype>} {fs <fillstyle>} {at <x-coord>}
一回の描画に 2 つ以上のヒストグラムの組を作ることもできます。この場合 コマンド newhistogram を使うことで、それらを強制的に分離し、またそれ ぞれのラベルを分離することができます。 例:
set style histogram cluster plot newhistogram "Set A", 'a' using 1, ” using 2, ” using 3, \ newhistogram "Set B", 'b' using 1, ” using 2, ” using 3
ラベル "Set A" と "Set B" は、それぞれのヒストグラムの組の下、x 軸の全 てのラベルの下の位置に現われます。
コマンド newhistogram は、ヒストグラムの色付けを強制的に指定した色
(linetype) で始めるのにも使えます。デフォルトでは、色の番号はヒストグ
ラムの境界をまたいでさえも連続的に増加し続けます。次の例は、複数のヒス
トグラムに同じ色付けを施します。
plot newhistogram "Set A" lt 4, 'a' using 1, ” using 2, ” using 3, \ newhistogram "Set B" lt 4, 'b' using 1, ” using 2, ” using 3
同様に、次のヒストグラムを指定した fillstyle で始めさせることが可能で す。その fillstyle を pattern にセットした場合、塗り潰しに使用される パターン番号は自動的に増加されていきます。
新しいヒストラムの開始は、通常は凡例 (key) に空のエントリを追加し、そ れによりそのヒストグラム要素の集合のタイトルは、それ以前のヒストグラムのものと分離されることになります。しかしこの空行は、その要素が個々のタ イトルを持たない場合は望ましいものではありません。これは、そのスタイル を set style histogram nokeyseparators と変更することで、その空行の 出力を抑制できます。
set style histogram cluster set style data histogram set style fill solid 1.0 border -1 set xtic 1 offset character 0,0.3 plot newhistogram "Set A", \ 'file.dat' u 1 t 1, ” u 2 t 2, \ newhistogram "Set B" at 8, \ 'file.dat' u 2 t 2, ” u 2 t 2
この場合、2 つ目のヒストグラムの位置は x=8 から始まります。
set style histogram columnstacked plot for [i=3:8] "datafile" using i title columnhead
plot '-' matrix with image 5 4 3 1 0 2 2 0 0 1 0 0 0 1 0 0 1 2 4 3 e e
スタイル image は、グレイスケール (灰色階調)、またはカラーパレット値 を含んでいるピクセルの入力を処理します。よって 2 次元描画 (plot コマ ンド) では 3 列のデータ (x,y,value) を、3 次元描画 (splot コマンド) では 4 列のデータ (x,y,z,value) が必要になります。
スタイル rgbimage は、赤、緑、青の 3 つの色成分 (RGB) で記述されたピ クセルの入力を処理します。よって plot では 5 次元データ (x,y,r,g,b) が、splot では 6 次元データ (x,y,z,r,g,b) が必要になります。赤、緑、 青の各成分は [0:255] の範囲内にあると仮定されます。 これは、PNG や JPEG ファイルで使用されている仕組みに合っています (以下参照: binary filetype (89.2.7))。しかし、RGB 成分として [0:1] の範囲の実数値 を取る仕組みを使用するようなデータファイルも中にはあります。そのような データで rgbimage スタイルを使用するには、まず set rgbmax 1.0 とし てください。
スタイル rgbalpha は、赤、緑、青の RGB 成分に加えて、アルファ値 (透 過パラメータ) の情報も含んだピクセルの入力を処理します。よって、plot では 6 次元データ (x,y,r,g,b,a) が、splot では 7 次元データ (x,y,z,r,g,b,a) が必要になります。赤、緑、青、およびアルファの各成分は [0:255] の範囲内にあると仮定されます。RGBA 成分が [0:1] の範囲の実数値 であるデータを描画するには、まず set rgbmax 1.0 としてください。
rgbimage か rgbalpha のいずれかでの描画で色要素用にデータ 1 列しか指定 しなかった場合は、それは、alpha=0 は不透明、alpha=255 が完全な透明を意 味する、32 bit パックの ARGB データであるとみなします。このアルファ値 の見方は、アルファ値が別の列で与えられる場合は古臭い慣習ですが、しかし、 色を設定する必要のある個々のコマンド用の ARGB パックの仕組みには合って います。
plot 'data' with image pixels
1 列: y 2 列: x y # [x,0] から [x,y] への線 (2D) 3 列: x y z # [x,y,0] から [x,y,z] への線 (3D)
3 列: x y string # 2 次元版 4 列: x y z string # 3 次元版
フォント、色、回転角やその他の描画テキストの属性は追加オプションとして 指定可能です (以下参照: set label (100.39))。次の例は、入力ファイルの 1 列目 から取った市の名前から作られる文字列を、4, 5 列目から取った地図座標に 描画します。フォントサイズは、3 列目の値から計算していて、この場合はそ れは人口を意味しています。
CityName(String,Size) = sprintf("{/=%d %s}", Scale(Size), String) plot 'cities.dat' using 5:4:(CityName(stringcolumn(1),$3)) with labels
フォントサイズを、個々の市の名前に対して異なるサイズに合わせなくていい ならば、コマンドはもっと簡単です:
plot 'cities.dat' using 5:4:1 with labels font "Times,8"
labels に hypertext がついている場合、その文字列はマウスがそれに対応 する点の上に来たときにだけ現われます。以下参照: hypertext (100.39.2)。この場合 ハイパーテキストの置き場所として機能する点を作るためにそのラベルの point 属性を有効にする必要があります:
plot 'cities.dat' using 5:4:1 with labels hypertext point pt 7
set encoding utf8 symbol(z) = "<UTF-8 文字列>"[int(z):int(z)] splot 'file' using 1:2:(symbol($3)) with labels
以下は、4 列目の値を可変値の回転角とし、5 列目の値を文字色 ("tc") とす るラベルの使用例です。可変値の色指定は、常に using 指定の最後の列か ら取ることに注意してください。
plot $Data using 1:2:3:4:5 with labels tc variable rotate variable
2 次元 ("using" 指定なし) の場合
1 列: y # 行番号による暗黙の x 2 列: x y
1 列: z # x は暗黙の行番号、y は index から 3 列: x y z
以下も参照: linetype (100.40), linewidth (100.86.7), linestyle (100.86.7)。
グラフのすべての点に記号の印をつけるか否かを制御する 2 つのキーワード pointinterval (省略形 pi), pointnumber (省略形 pn) があります。
pi N あるいは pi -N は、N 個毎に 1 つだけ記号を置くよう gnuplot に 指示します。負の値を指定すると、記号の下の線分の部分を消します。その消 す部分のサイズは set pointintervalbox で制御できます。
pn N あるいは pn -N は、データ点のうち N 個だけラベル付けするよう gnuplot に指示します。点はそのデータ全体に渡って均等な間隔に取ります。 pi 同様、負の値を指定すると、記号の下の線分の部分を消します。
書式:
set style data parallelaxes plot $DATA using col1{:varcol1} {at <xpos>} {<line properties}, \ $DATA using col2, ...
変更: gnuplot バージョン 5.4 では、描画スタイル parallelaxes の書式に 変更を導入しています。改良された書式では、平行座標軸数の制限をなくすこ とが可能です。
gnuplot 5.2: plot $DATA using 1:2:3:4:5 with parallelaxes gnuplot 5.4: plot for [col=1:5] $DATA using col with parallelaxes
新しい書式では、以下の例に見られるように、平行座標軸の x 軸位置での明示的な配置も可能になっています。明示的な x 座標指定がなければ、N 番目 の軸は x=N の場所に置かれます。
array xpos[5] = [1, 5, 6, 7, 11, 12] plot for [col=1:5] $DATA using col with parallelaxes at xpos[col]
デフォルトでは、gnuplot は自動的に個々の軸の範囲、スケールを入力データ から決定しますが、通常の set axis range コマンドによってそれをカスタ マイズすることも可能です。以下参照: set paxis (100.68)。
x y pointsize pointtype color
最初の 8 つの点種は、すべての出力形式で共通ですが、より多くの点種を個 別にサポートする出力形式もあります。現在の出力形式の設定でどのような点 種が用意されているかを見るには、コマンド test を使用してください。
また、下の例のようにして、任意の印字可能文字を点種番号の代わりに使用す ることもできます。点種として、任意の UTF-8 文字を使用できます (utf8 を サポートしている必要あり)。以下参照: escape sequences (14.1)。より長い文字 列は、描画スタイル points ではなく labels を使えば出力できます。
plot f(x) with points pt "#" plot d(x) with points pt "\U+2299"
plot コマンド上でキーワード pointtype, pointsize, linecolor を使 う際、番号の代わりにキーワード variable を追加することができます。こ の場合、各点の対応する属性値を入力データの追加列から取得します。可変 (variable) pointsize 値は、常に using 指定で与えられる最初の追加列か ら取り、可変 color 値は、常に最後の追加列から取ります。以下参照:colorspec (21.1)。各点に対して 3 つの属性をすべて指定する場合は、入力データ 列指定の順番は以下のようになります。
plot DATA using x:y:pointsize:pointtype:color \ with points lc variable pt variable ps variable
注意: 「ユーザ定義変数」の方の variable に関する情報については、以下参照: variables (16.7)。
splot DATA {using x:y:z} with polygons {fillstyle <fillstyle spec>} {fillcolor <colorspec>}
塗り潰しスタイルと色は、splot コマンド上で指定できますが、そうでなけれ ば大域的な塗り潰しスタイルの set style fill の設定を使用します。pm3d ルーチンの制限のため、set pm3d border による一つの境界線スタイルが、 すべての多角形に適用されますが、この制限は将来の版の gnuplot では取り 除かれるでしょう。
面には、pm3d のソート順と光源モデルを適用しますので、常に、 set pm3d depthsort を使う方がいいかもしれせん。
set xyplane at 0 set view equal xyz unset border unset tics set pm3d depth set pm3d border lc "black" lw 1.5 splot 'icosahedron.dat' with polygons \ fs transparent solid 0.8 fc bgnd
各クモの巣グラフは、列データではなく行データに対応するため、通常の方法 での凡例 (key) タイトルの生成は意味がありません。代わりに、描画要素が タイトル文字列を持っていれば、その文字列を対応する軸のラベルに使用しま す。これは、事前の set paxis n label "Foo" をすべて上書きします。凡 例にタイトルを配置するには、個別の keyentry コマンドを使用するか、ま たは using 指定で key(column) を使って入力ファイル列から文字列を展開 する方法が使えます。
以下の図は、軸が 5 つのクモの巣グラフで、それぞれ 5 つの点数で特徴付けられる複数のものを比較するのに使います。$DATA の各行は、グラフ上に新し い多角形を生成します。
set spiderplot set style spiderplot fs transparent solid 0.2 border set for [p=1:5] paxis p range [0:100] set for [p=2:5] paxis p tics format "" set paxis 1 tics font ",9" set for [p=1:5] paxis p label sprintf("Score %d",p) set grid spiderplot plot for [i=1:5] $DATA using i:key(1)
# 以下は 10 個の頂点を持つ 1 つの多角形 plot for [i=1:5] 'A' using i, for [j=1:5] 'B' using j # 以下は 5 個の頂点を持つ 2 つの多角形 plot for [i=1:5] 'A' using i, newspiderplot, for [j=1:5] 'B' using j
4 列: x y xdelta ydelta 6 列: x y z xdelta ydelta zdelta
キーワード "with vectors" は、その後ろに、arrow スタイル属性を直接書い たり、事前に定義した arrow スタイルを参照したり、あるいは別の入力列か ら各ベクトルに対する適用したい arrow スタイルのインデックスを読むよう 指定したりすることができます。下の最初の 3 つの例を見てください。
例:
plot ... using 1:2:3:4 with vectors filled heads plot ... using 1:2:3:4 with vectors arrowstyle 3 plot ... using 1:2:3:4:5 with vectors arrowstyle variable splot 'file.dat' using 1:2:3:(1):(1):(1) with vectors filled head lw 2
注意: plot コマンド内にキーワード arrowstyle と他の線属性を混在させ ることはできません。arrow スタイルに lc variable か lc rgb variable がある場合、色の値用の追加列が必要です。
vectors スタイルを使っての splot は set mapping cartesian のみでサポ ートされています。 set clip one と set clip two は 2 次元のベクトルの描画に影響を与え ます。以下参照: set clip (100.12), arrowstyle (100.86.1)。
2 次元描画スタイルの以下も参照: with arrows (32)。これは、各矢印を x:y:length:angle の形式で指定する以外は with vectors と同じです。
3 列: x y xdelta 4 列: x y xlow xhigh
入力列を追加 (4,5 列目) すると、variable color として使われます。
4 列: x y xdelta ydelta 6 列: x y xlow xhigh ylow yhigh
データが、サポートされていない混合型の形式で与えられた場合、plot コ マンドの using フィルタを使って適切な形に直さないといけません。例え ばデータが (x,y,xdelta,ylow,yhigh) という形式である場合、以下のようにします:
plot 'data' using 1:2:($1-$3):($1+$3):4:5 with xyerrorbars
入力列を追加 (5,7 列目) すると、それらは各データ点毎の variable color 情報として使われます。
2 列: [暗黙の x] y ydelta 3 列: x y ydelta 4 列: x y ylow yhigh
入力列を追加すると、それらは可変 (variable) pointsize, 可変 pointtype, 可変色 (variable color) の情報として使われます。
以下も参照 errorbar デモ。
3 列: x y xdelta 4 列: x y xlow xhigh
入力列を追加 (4,5 列目) すると、variable color として使われます。
4 列: x y xdelta ydelta 6 列: x y xlow xhigh ylow yhigh
データが、サポートされていない混合型の形式で与えられた場合、plot コ マンドの using フィルタを使って適切な形に直さないといけません。例え ばデータが (x,y,xdelta,ylow,yhigh) という形式である場合、以下のようにします:
plot 'data' using 1:2:($1-$3):($1+$3):4:5 with xyerrorlines
入力列を追加 (5,7 列目) すると、それらは各データ点毎の variable color 情報として使われます。
3 列: x y ydelta 4 列: x y ylow yhigh
入力列を追加 (4,5 列目) すると、それらは点の variable color 情報として 使われます。
以下も参照。 エラーバーのデモ
i y z_base z_base Fi(y)
set style fill solid 0.3 set pm3d depthorder border lc "blue" lw 0.2 splot $helix with isosurface level 10 fc "cyan"
splot DATA using 1:2:3:4[:5] with zerrorfill {fc|fillcolor <colorspec>} {lt|linetype <n>} {<line properties>}
描画スタイル zerrorfill は、2 次元の描画スタイルの一つの変種のような ものです。これは、2 つの関数の間、または同じ x, y に対して 2 つの z の 値を点を与えて得られるデータの折れ線の間の領域を塗り潰します。これは、 4 列か 5 列の入力が必要です。
4 列: x y z zdelta 5 列: x y z zlow zhigh
splot コマンドに複数の曲線を指定した場合は、後に描いた曲線が、前のすべ ての曲線を隠してしまう可能性があります。見る人側の手前の曲線のみが隠す ように適切な深さ順の並べかえを行うには、set pm3d depthorder base を 使用してください。残念ながら、これは z の値に対応するすべての折れ線を 描いた後に、すべての領域の塗り潰しを行います。よって、折れ線を見えるよ うにして、かつ領域の塗り潰しの深さ順の並べかえを行うには、領域の塗り潰 しは部分的に透過 (transparent) させるか、単色塗り (solid fill) の代わ りにパターン塗り (pattern fill) を使用するといいかもしれません。
以下の最初の 2 つの例の塗り潰し領域は、同じものになります。
splot 'data' using 1:2:3:4 with zerrorfill fillcolor "grey" lt black splot 'data' using 1:2:3:($3-$4):($3+$4) with zerrorfill splot '+' using 1:(const):(func1($1)):(func2($1)) with zerrorfill splot for [k=1:5] datafile[k] with zerrorfill lt black fc lt (k+1)
この描画スタイルは、柵グラフ (fence plot) を作成するのにも使えます。 以下参照: fenceplots (69)。
ほとんどの場合、コマンド名とそのオプションは、紛らわしくない範囲で省略 することが可能です。すなわち、"plot f(x) with lines" の代わりに "p f(x) w li" とすることができます。
書式の記述において、中カッコ ({}) は追加指定できる引数を意味し、 縦棒 (|) は互いに排他的な引数を区切るものとします。
書式:
cd '<ディレクトリ名>'
ディレクトリ名は引用符に囲まれていなければなりません。
例:
cd 'subdir' cd '..'
バックスラッシュ (
\) は二重引用符内 (") では特別な意味を持ってしまうた
めにエスケープする必要がありますので、Windows ユーザには単一引用符を使
うことを勧めます。例えば、
cd "c:\newdata"
cd 'c:\newdata' cd "c:\\newdata"
call "inputfile" <param-1> <param-2> <param-3> ... <param-9>
gnuplot の以前のバージョンでは、そのパラメータ文字列の内容を、特別な記号 $0, $1, ..., $9 をマクロのように置換することで表現していました。こ の仕組みは、現在は非推奨です (以下参照: call old-style (74.3))。
現在の gnuplot は、文字列変数 ARG0, ARG1, ..., ARG9 と、整数変数 ARGC を提供します。call コマンドを実行すると、ARG0 には入力ファイル名が、 ARGC にはパラメータ数が設定され、ARG1 から ARG9 にはコマンドラインに並 べられたパラメータの値が読み込まれます。
通常パラメータ ARG1 ... ARG9 は文字列値として保存されるので、それをマ クロ展開して参照することもできます (古い形式の書式の類似)。しかし、多 くの場合、それらは他の変数と同様に利用する方がより自然でしょう。
文字列パラメータ ARG1 ... ARG9 と平行して、与えられたパラメータは、配 列 ARGV[9] にも保存します。以下参照: argv (74.1)。
call 'routine_1.gp' 1 pi "title"
以下の 3 つの引数を routine_1.gp 内で以下の値として利用できます:
ARG1 = "1" ARGV[1] = 1.0 ARG2 = "3.14159" ARGV[2] = 3.14159265358979... ARG3 = "title" ARGV[3] = "title"
この例では、ARGV[1] と ARGV[2] は可能な限りの精度を持つ浮動小数値とな りますが、ARG2 は書式 "%g" による文字列として保存されるため精度が落ち ています。
以下を call すると: MYFILE = "script1.gp" FUNC = "sin(x)" call MYFILE FUNC 1.23 "This is a plot title" 呼び出されたスクリプト内では以下のようになり: ARG0 は "script1.gp" ARG1 は文字列値 "sin(x)" ARG2 は文字列値 "1.23" ARG3 は文字列値 "This is a plot title" ARGC は 3 そのスクリプト内では以下のようなものを実行できる: plot @ARG1 with lines title ARG3 print ARG2 * 4.56, @ARG2 * 4.56 print "This plot produced by script ", ARG0
この例の ARG1 は文字列なので、それはマクロとして参照しなければいけませ んが、ARG2 はマクロ参照でも (数値定数になる)、変数のままでも (文字列 "1.23" が実数値に自動的に変換された後の同じ数値になる) 構わないことに 注意してください。
シェルスクリプトで gnuplot をコマンドラインオプション -c つきで実行 することで、これと同じことを直接行うこともできます:
gnuplot -persist -c "script1.gp" "sin(x)" 1.23 "This is a plot title"
call "<input-file>" <param-0> <param-1> ... <param-9>
入力ファイル名は引用符で囲まなければなりません。入力ファイルの各行を読 み込む際に、以下の特別な文字列を走査します: $0 $1 $2 $3 $4 $5 $6 $7 $8 $9 $#。それが見つかったら、「$+数字」の列は call コマンドラインの 対応するパラメータに置き換えます。引用符はコピーせず、文字列変数置換は 行いません。文字列 $# はパラメータ数に置き換えます。その他の文字が後 ろについている $ は、エスケープシーケンスとして処理します。例えば 1 個 の $ を使うには $$ とします。
例:
ファイル 'calltest.gp' は以下の行を含んでいるとすると:
print "argc=$# p0=$0 p1=$1 p2=$2 p3=$3 p4=$4 p5=$5 p6=$6 p7=x$7x"
次の行を入力すると:
call 'calltest.gp' "abcd" 1.2 + "'quoted'" -- "$2"
以下のように表示されるでしょう:
argc=7 p0=abcd p1=1.2 p2=+ p3='quoted' p4=- p5=- p6=$2 p7=xx
注意: 文字 $ は、gnuplot 自身のデータ列用の書式とぶつかりますし、 Unix 系のシェルの環境変数を参照する $ ともぶつかります。特別な文字列 $# は、gnuplot のバージョン 4.5 から 4.6.3 までは、間違えてコメント 文字列の区切り文字として解釈されていました。文字列置換では引用符は無視 されるので、文字列定数は簡単に壊れてしまいます。
いくつかの出力装置は clear コマンドでは set size で定義された描画 領域のみを消去します。そのため、set multiplot とともに使用することで 挿入図を一つ作ることができます。
例:
set multiplot plot sin(x) set origin 0.5,0.5 set size 0.4,0.4 clear plot cos(x) unset multiplot
詳細については、以下参照: set multiplot (100.54), set size (100.84), set origin (100.63)。
do for <iteration-spec> { <commands> <commands> }
set multiplot layout 2,2 do for [name in "A B C D"] { filename = name . ".dat" set title sprintf("Condition %s",name) plot filename title name } unset multiplot
書式:
eval <string expression>
これは、特に同様のコマンドの繰り返しに有用です。
例:
set_label(x, y, text) \ = sprintf("set label '%s' at %f, %f point pt 5", text, x, y) eval set_label(1., 1., 'one/one') eval set_label(2., 1., 'two/one') eval set_label(1., 2., 'one/two')
文字列からコマンドを実行する別の方法に関しては、以下も参照:substitution macros (29.2)。
exit exit message "エラーメッセージ文字列" exit status <整数のエラーコード>
exit と quit の両コマンドは END-OF-FILE 文字 (通常 Ctrl-D) 同様、 現在の入力ストリーム、すなわち端末の対話やパイプ入力、ファイル入力 (パ イプ) からの入力を終了させます。入力ストリームが入れ子 (階層的な load のスクリプトで) になっている場合、読み込みは親のストリームで継 続されます。トップレベルのストリームが閉じられると、プログラムはそれ自 身終了します。
コマンド exit gnuplot は、直ちに、無条件に、そして例え入力ストリーム が多段階にネストされていても、gnuplot を終了させます。その場合、開かれ ていた全ての出力ファイルはきれいに完全な形では閉じられない可能性があり ます。使用例:
bind "ctrl-x" "unset output; exit gnuplot"
コマンド exit error "error message" は、疑似プログラムエラーを行いま す。対話型モードでは、そのエラーメッセージを表示し、すべのネストされた ループや call を中断してコマンドラインに帰ります。非対話型モードでは、 プログラムを終了します。
gnuplot が終了しシェルの制御に戻る場合、その返り値は意味のないものにな ることがありますが、このコマンドを以下のように実行すれば、シェルに特定の値を返すことが可能です。
exit status <value>
詳細は、以下参照: batch/interactive (8)。
fit の最も基本的な使用法は、以下の単純な例が示しています:
f(x) = a + b*x + c*x**2 fit f(x) 'measured.dat' using 1:2 via a,b,c plot 'measured.dat' u 1:2, f(x)
書式:
fit {<ranges>} <expression> '<datafile>' {datafile-modifiers} {{unitweights} | {y|xy|z}error | errors <var1>{,<var2>,...}} via '<parameter file>' | <var1>{,<var2>,...}
範囲 (xrange, yrange 等) は、当てはめに使用するデータを制限する目的で
使うことができ、その範囲を超えたデータは無視します。その書式は plot
コマンド同様
[{dummy_variable=}{<min>}{:<max>}],
<expression> は、通常はあらかじめユーザ定義された f(x) または f(x,y) の形の関数ですが、gnuplot で有効などんな数式でも指定できます。ただし 実数値関数でなければいけません。 独立変数の名前は、コマンド set dummy で設定するか、fit の範囲指定部 分 (<rangse>) で設定します (以下を参照)。デフォルトでは、最初の 2 つは x, y となります。 さらに、その数式は、当てはめの作業により決定する値を持つ 1 つ以上の変数 (パラメータ) に依存すべきです。
<datafile> は plot コマンドと同様に扱われます。plot datafile の修 飾子 (using, every,...) は、smooth を除いて、全て fit に使うこ とができます。以下参照:plot datafile (89.3)。
データファイルの内容は、plot コマンドに使用するのと同じ using 指定を 使うことで柔軟に解釈させることができます。例えば、独立変数 x を2 列目 と 3 列目の和として生成し、z の値を 6 列目から取り、重みを 1 としたい 場合は以下のようにします:
fit ... using ($2+$3):6
using 指定がない場合、fit は暗黙に独立変数は 1 つだけと仮定します。 ファイル自身、または using 指定が 1 列だけのデータを持つ場合、その行番 号を独立変数値として使用します。 using 指定を与えた場合、最大 12 個 (指定してコンパイルしていればさら にそれ以上) の独立変数を利用できます。
オプション unitweights (これがデフォルト) は、すべてのデータ点が等し い重みを持つとみなします。これは、キーワード error を使用することで 変更でき、これはデータファイルから 1 つ以上の変数の誤差評価を読み込み、その誤差評価を対応する変数値の標準偏差 s とみなし、各データに 1/s**2の重みを計算するのに使用します。
独立変数の誤差評価において、その重みには、"有効分散法" (effective variance method; Jay Orear, Am. J. Phys., Vol. 50, 1982) に従って、さ らに当てはめ関数の微分係数をかけます。
キーワード errors には、その後ろに、入力がどの変数の誤差であるのかを 示すコンマ区切りの 1 つ以上の変数名のリストが付きます。従属変数 z は常にその中になければいけませんが、独立変数は必須ではありません。 そのリストの各変数に対し、ファイルからその分の、各変数の誤差評価を持つ 追加の列を読み込みます。繰り返しになりますが、using 指定により柔軟な 解釈が可能になります。 よって、独立変数の数は暗黙に、using 指定内の列の数から 1 を引いて (従属変数分)、さらに errors 指定内の変数の個数を引いた数になることに 注意してください。
例として、2 つの独立変数があり、そして 1 つ目の独立変数と従属変数の誤差データがある場合は、errors x,z 指定と 5 列の using 指定を使うことになりますが、それは x:y:z:sx:sz のように解釈されます (x, y は独立変数、z が従属変数、sx, sz は x, z の標準偏差)。
errors 指定のちょっとした略記法も 2,3 用意されています: yerrors (独立変数が 1 列ある当てはめ用)、 zerrors (より一般の場合) は、いずれも errors z と同値で、1 列だけ 追加の従属変数用の誤差列があることを意味しています。
xyerrors は、独立変数は 1 列で、その独立変数と従属変数の両方の 2 列の誤差列が追加されることを意味します。この場合、x と y の誤差は Orear の有効分散法 (effective variance method) で処理されます。
yerror と xyerror の形式および解釈は、それぞれ 2 次元描画スタイル の yerrorlines と xyerrorlines に同等であることに注意してください。
コマンド set fit v4 を使用すると、fit のコマンド書式は gnuplot バ ージョン 4 と互換の書式になります。その場合、using には、独立変数が 2 つ以上ならば、独立変数の数より 2 つ (z と s) 多い指定が必要で、 gnuplot は、using 指定で与えられた列の数に応じて、以下の書式に従います:
z # 独立変数は 1 つ (行番号) x:z # 独立変数は 1 つ (第 1 列) x:z:s # 独立変数は 1 つ (全部で 3 列) x:y:z:s # 独立変数は 2 つ (全部で 4 列) x1:x2:x3:z:s # 独立変数は 3 つ (全部で 5 列) x1:x2:x3:...:xN:z:s # 独立変数は N 個 (全部で N+2 列)
これは、2 つ以上の独立変数で fit をする場合、z-誤差 s を与える必要があることを意味することに注意してください。重みを 1 にしたい場合は、それ を、例えば x:y:z:(1) のような書式を using に指定することで明示的に与え る必要があります。
仮変数名は、下で紹介するように範囲指定で指定することで変更できます。最 初の範囲は using 指定の最初のものに対応し、以下同様です。従属変数である z の範囲指定もできますが、それは、f(x,...) の値をその範囲外にして しまうようなデータ点が、残差を最小化することには寄与しない場合に有効で す。
複数のデータ集合も複数の 1 変数関数に同時に当てはめることも、y を '仮 変数' とすれば可能です。例えばデータ行番号を使い、2 変数関数への当ては め、とすればいいでしょう。以下参照: fit multi-branch (80.5)。
via 指定子は、パラメータの最適化を、直接行うか、またはパラメータファ イルを参照することによって行うかを指定します。
例:
f(x) = a*x**2 + b*x + c g(x,y) = a*x**2 + b*y**2 + c*x*y set fit limit 1e-6 fit f(x) 'measured.dat' via 'start.par' fit f(x) 'measured.dat' using 3:($7-5) via 'start.par' fit f(x) './data/trash.dat' using 1:2:3 yerror via a, b, c fit g(x,y) 'surface.dat' using 1:2:3 via a, b, c fit a0 + a1*x/(1 + a2*x/(1 + a3*x)) 'measured.dat' via a0,a1,a2,a3 fit a*x + b*y 'surface.dat' using 1:2:3 via a,b fit [*:*][yaks=*:*] a*x+b*yaks 'surface.dat' u 1:2:3 via a,b
fit [][][t=*:*] a*x + b*y + c*t 'foo.dat' using 1:2:3:4 via a,b,c
set dummy x1, x2, x3, x4, x5 h(x1,x2,x3,x4,s5) = a*x1 + b*x2 + c*x3 + d*x4 + e*x5 fit h(x1,x2,x3,x4,x5) 'foo.dat' using 1:2:3:4:5:6 via a,b,c,d,e
反復の個々のステップの後で、当てはめの現在の状態についての詳細な情報が 画面に表示されます。そし最初と最後の状態に関する同じ情報が "fit.log" というログファイルにも書き出されます。このファイルは前の当てはめの履歴 を消さないように常に追加されていきます。これは望むなら削除、あるいは別 な名前にできます。コマンド set fit logfile を使ってログファイルの名 前を変更することもできます。
set fit errorvariables を使用した場合、各当てはめパラメータの誤差は そのパラメータと似た名前 ("_err" が追加された名前) の変数に保存されま すので、その誤差をその後の計算の入力として使用することができます。
set fit prescale とした場合、当てはめパラメータを、それらの初期値か らスケール変換します。これにより、個々のパラメータの大きさにかなり違い があるような場合でも、Marquardt-Levenberg ルーチンがより早く、より信頼 性のある値に収束させられるようになります。
当てはめの反復は Ctrl-C (wgnuplot では Ctrl-Break) を押すことで中断で きます。現在の反復が正常に終了した後、以下のいずれかを選ぶことができます:(1) 当てはめを止めて現在のパラメータの値を採用する (2) 当てはめを続行する (3) set fit script か、環境変数 FIT_SCRIPT で指定した gnuplot コ マンドを実行する。そのデフォルトは replot で、もしデータと当てはめ関 数を一つのグラフにあらかじめ描画してあれば、現在の当てはめの状態を表示 することができます。
fit が終了した後は、最後のパラメータの値を保存するのに save fit コ マンドを使います。その値は再びパラメータの値として使うことができます。 詳細は、以下参照: save fit (99)。
調整するパラメータは、via キーワードの後ろにコンマで区切られた変数名 のリストを書くことで指定できます。定義されていない変数は初期値 1.0 と して作られます。しかし当てはめは、変数の初期値があらかじめ適切な値に設 定されている方が多分速く収束するでしょう。
パラメータファイルは個々のパラメータを、個別に 1 行に一つずつ、初期値を
次のような形で指定して書きます。
変数名 = 初期値
'#' で始まるコメント行や空行も許されます。特別な形式として
変数名 = 初期値 # FIXED
は、この変数が固定されたパラメータであることを意味し、それはこのファイ ルで初期化されますが、調節はされません。これは、fit でレポートされる 変数の中で、どれが固定された変数であるかを明示するのに有用でしょう。な お、# FIXED と言うキーワードは厳密にこの形でなくてはなりません。
これが、(非線形) 最小自乗当てはめ法と呼ばれるゆえんです。非線形 が 何を意味しているのかを見るための例を紹介しますが、その前にいくつかの 仮定について述べておきます。ここでは簡単のため、1 変数のユーザー定義 関数は z=f(x), 2 変数の関数は z=f(x,y) のようにし、いずれも従属変数として z を用いることにします。パラメータとは fit が調整して適切な値を 決定するユーザ定義変数で、関数の定義式中の未知数です。ここで言う、線形 性/非線形性とは、従属変数 z と fit が調整するパラメータとの関係に対するものであり、z と独立変数 x (または x と y) との関係のことではあり ません (数学的に述べると、線形最小自乗問題では、当てはめ関数のパラメー タによる 2 階 (そして更に高階の) 導関数は 0、ということになります)。
線形最小自乗法 (LLS) では、ユーザ定義関数は単純な関数の和であり、それ
ぞれは一つのパラメータの定数倍で他のパラメータを含まない項になります。
非線形最小自乗法 (NLLS) ではより複雑な関数を扱い、パラメータは色んな
使われ方をされます。フーリエ級数は線形と非線形の最小自乗法の違いを表す
一つの例です。フーリエ級数では一つの項は
z=a*sin(c*x) + b*cos(c*x).
線形の場合、パラメータの値は比較的簡単な線形代数の直接法によって決定で きます。しかしそのような LLS は特殊な場合であり、'gnuplot' が使用する 反復法は、もちろんそれも含めて、より一般的な NLLS 問題を解くことができ ます。fit は検索を行うことで最小値を探そうとします。反復の各ステップ は、パラメータの新しい値の組に対して WSSR を計算します。Marquardt- Levenberg のアルゴリズムは次のステップのパラメータの値を選択します。そ してそれはあらかじめ与えた基準、すなわち、(1) 当てはめが "収束した" (WSSR の相対誤差がある限界値より小さくなった場合。以下参照:set fit limit (100.26))、または (2) あらかじめ設定された反復数の限界に達した 場合 (以下参照: set fit maxiter (100.26))、のいずれかを満たすまで続けられます。 キーボードからその当てはめの反復は中断できますし、それに続いて中止する こともできます (以下参照: fit (80))。ユーザ変数 FIT_CONVERGED は、 直前の fit コマンドが収束により終了した場合は 1 を持ち、それ以外の理由で中断した場合は 0 を持ちます。FIT_NITER は、直前の当てはめで行われた繰り返 しの回数を持ちます。
当てはめに使われる関数はしばしばあるモデル (またはある理論) を元にして いて、それはデータの振舞を記述したり、あるいは予測しようとします。よっ て fit は、データがそのモデルにどれくらいうまく当てはまっているのかを 決定するため、そして個々のパラメータの誤差の範囲を評価するために、モデ ルの自由なパラメータの値を求めるのに使われます。以下参照:fit error_estimates (80.3)。
そうでなければ、曲線による当てはめにおける関数は、モデルとは無関係に選 ばれています (それは十分な表現力と最も少ない数のパラメータを持ち、デー タの傾向を記述しそうな関数として経験に基づいて選ばれるでしょう)。
しかし、もしあなたが全てのデータ点を通るような滑らかな曲線を欲しいなら fit ではなく、むしろ plot の smooth オプションでそれを行うべきで しょう。
データ誤差は、平方残差の重み付きの和 WSSR、すなわちχ自乗を決定する際 個々のデータ点の相対的な重みを計算するのに用いられます。それらはパラメ ータの評価に影響を与えます。それは、それらが、当てはめられた関数からの 個々のデータ点の偏差が最終的な値に与える影響の大きさを決定することによ ります。正確なデータ誤差評価が与えられている場合には、パラメータの誤差 評価等の fit が出力する情報はより役に立つでしょう。
statistical overview では fit の出力のいくつかを説明し、 'practical guidelines' に対する背景を述べています。
分散 = 総計である数え上げ統計学同様、母集団の標準偏差が定数でない場合、 各点は観測される偏差の和と期待される偏差の和を比較するときに個別に重み づけされるべきです。
最終段階で fit は 'stdfit'、すなわち残差の RMS (自乗平均平方根) で求
められる当てはめの標準偏差と、データ点が重みづけられている場合に '減ら
されたχ自乗' とも呼ばれる残差の分散をレポートします。自由度 (データ点
の数から当てはめパラメータの数を引いたもの) はこれらの評価で使用されま
す。なぜなら、データ点の残差の計算で使われるパラメータは同じデータから
得られるものだからです。データ点が重みを持つ場合、gnuplot はいわゆる
p-値を計算します。それはその自由度と結果のχ自乗値に対するχ自乗分布の
累積分布関数値を 1 から引いた値です。以下参照: practical_guidelines (80.3.2)。
これらの値は以下の変数に代入されます:
FIT_NDF = 自由度の数 FIT_WSSR = 重みつき残差の自乗和 FIT_STDFIT = sqrt(WSSR/NDF) FIT_P = p-値
パラメータに関する信頼レベルを評価することで、当てはめから得られる最小 のχ自乗と、要求する信頼レベルのχ自乗の値を決定するためのχ自乗の統計 を用いることが出来ます。しかし、そのような値を生成するパラメータの組を 決定するには、相当のさらなる計算が必要となるでしょう。
fit は信頼区間の決定よりむしろ、最後の反復後の分散-共分散行列から直 ちに得られるパラメータの誤差評価を報告します。これらの評価は、標準偏差 として計算される量の指定に関する統計上の条件が、一般には非線形最小自乗 問題では保証されないのですが、線形最小自乗問題での標準誤差 (各パラメー タの標準偏差) と同じ方法で計算されます。そしてそのため慣例により、これ らは "標準誤差" とか "漸近標準誤差" と呼ばれています。漸近標準誤差は一 般に楽観過ぎ、信頼レベルの決定には使うべきではありませんが、定性的な指 標としては役に立つでしょう。
最終的な解は、解の範囲におけるパラメータの相関を示す相関行列も生成しま す: その主対角要素、すなわち自己相関は常に 1 で、全てのパラメータが独 立ならば非対角要素はすべて 0 に近い値になります。完全に他を補いあう 2 つの変数は、大きさが 1 で、関係が正の相関か負の相関かによって正か負に なる符号を持つ非対角要素を持ちます。非対角要素の大きさが小さいほど、各 パラメータの標準偏差の評価は、漸近標準誤差に近くなります。
データの重み付けは、最後の反復後の fit の追加出力に対する解釈の基礎 を与えます。各点に同等に重み付けを行なうにしても、重み 1 を使うことよ りもむしろ平均標準偏差を評価することが、χ自乗が定義によりそうであるよ うに、WSSR を 無次元変数とすることになります。
当てはめ反復の各段階で、当てはめの進行の評価に使うことが出来る情報が表 示されます ('*' はより小さい WSSR を見つけられなかったこと、そして再試 行していることを意味します)。'sum of squares of residuals' (残差の自乗 和) は、'chisquare' (χ自乗) とも呼ばれますが、これはデータと当てはめ 関数との間の WSSR を意味していて、fit はこれを最小化しようとします。 この段階で、重み付けされたデータによって、χ自乗の値は自由度 (= データ 点の数 - パラメータの数) に近付くことが期待されます。WSSR は補正された χ自乗値 (WSSR/ndf; ndf = 自由度)、または当てはめ標準偏差 (stdfit = sqrt(WSSR/ndf)) を計算するのに使われます。それらは最終的な WSSR に対し てレポートされます。
データが重み付けされていなければ、stdfit は、ユーザの単位での、データ と当てはめ関数の偏差の RMS (自乗平均平方根) になります。
もし妥当なデータ誤差を与え、データ点が十分多く、モデルが正しければ、 補正χ自乗値はほぼ 1 になります (詳細は、適当な統計学の本の 'χ自乗分 布' の項を参照してください)。この場合、この概要に書かれていること以外に、モデルがデータにどれくらい良く当てまっているかを決定するための追加の試験方法がいくつかあります。
補正χ自乗が 1 よりはるかに大きくなったら、それは不正なデータ誤差評価、 正規分布しないデータ誤差、システム上の測定誤差、孤立した標本値 (outliers)、または良くないモデル関数などのためでしょう。例えば plot 'datafile' using 1:($2-f($1)) などとして残差を描画することは、 それらのシステム的な傾向を知るための手がかりとなります。データ点と関数 の両者を描画することは、他のモデルを考えための手がかりとなるでしょう。
同様に、1.0 より小さい補正χ自乗は、WSSR が、正規分布する誤差を持つラ ンダムなサンプルと関数に対して期待されるものよりも小さいことを意味しま す。データ誤差評価が大きすぎるのか、統計的な仮定が正しくないのか、また はモデル関数が一般的すぎて、内在的傾向に加えて特殊なサンプルによる変動 の当てはめになっているのでしょう。最後の場合は、よりシンプルな関数にす ればうまく行くでしょう。
当てはめの p-値は、自由度と結果のχ自乗値に対するχ自乗分布の累積分布 関数値を 1 から引いた値です。これは、当てはめの良さのものさしを提供し ます。p-値の範囲は 0 から 1 までで、p-値がとても小さい、あるいはとても 大きい場合は、モデルがデータとその誤差をちゃんと記述していないことを意 味します。上で述べたように、これはデータに問題があるか、誤差かモデルに 問題がある、またはそれらの組み合わせなのだろうと思います。p-値が小さい ことは、誤差が過小評価されているので、よって最終的なパラメータ誤差をス ケール変換すべきだろうということを意味するでしょう。以下も参照:set fit errorscaling (100.26)。
標準的なエラーを、パラメータの不確定性に関する、あるより現実的な評価に 関係付けること、および相関行列の重要性を評価することができるようになる 前に、あなたは fit と、それを適用しようとするある種の問題に慣れてお く必要があるでしょう。
fit は、大抵の非線形最小自乗法の実装では共通して、距離の自乗 (y-f(x))**2 の重み付きの和を最小化しようとすることに注意してください。 それは、x の値の "誤差" を計算に関してはどんな方法も与えてはおらず、単 に y に関する評価のみです。また、"孤立点" (正規分布のモデルのから外れ ているデータ点) は常に解を悪化させる可能性があります。
FIT_LIMIT - `set fit limit <epsilon>` を使用のこと FIT_MAXITER - `set fit maxiter <number_of_cycles>` を使用のこと FIT_START_LAMBDA - `set fit start-lambda <value>` を使用のこと FIT_LAMBDA_FACTOR - `set fit lambda-factor <value>` を使用のこと FIT_SKIP - datafile の `every` 指定を使用のこと FIT_INDEX - 以下参照: `fit multi-branch`
FIT_LOG
FIT_SCRIPT
例: 2 つの指数減衰形 z=f(x) が与えられていて、それぞれ異なるデータ集合
を記述しているが、共通した減衰時間を持ち、そのパラメータの値を評価する。
データファイルが x:z:s の形式であったとすると、この場合以下のようにすればよい。
f(x,y) = (y==0) ? a*exp(-x/tau) : b*exp(-x/tau) fit f(x,y) 'datafile' using 1:-2:2:3 via a, b, tau
より複雑な例については、デモファイル "fit.dem" で使われる "hexa.fnc" を参照してください。
もし従属変数のスケールに差がある場合、単位の重み付けでは 1 つの枝が支配してしまう可能性があるので、適当な重み付けが必要になります。各枝をバ ラバラに当てはめるのに複数当てはめ法の解を初期値として用いるのは、全体 を合わせた解の各枝に対する相対的な影響に関する表示を与えることになるで しょう。
fit は、解から遠くから始めると失敗するかも知れませんし、しばしばそれ は起こり得ます。遠くというのは、SSR が大きく、パラメータの変化に対して その変化が小さい、あるいは数値的に不安定な領域 (例えば数値が大きすぎて 浮動小数の桁あふれを起こす) に到達してしまって、その結果 "未定義値 (undefined value)" のメッセージか gnuplot の停止を引き起こしてしまう ような場合を意味します。
大域的な最適値を見つける可能性を改善するには、最初の値をその解に少なく ともほぼ近くに取るべきでしょう。例えば、もし可能ならば一桁分の大きさの 範囲内で。最初の値が解に近いほど不正な解で終了してしまう可能性は低くな ります。最初の値を見つける一つの方法は、データと当てはめ関数を同じグラ フの上に描画して適当な近さに達するまで、パラメータの値を変更して replot することを繰り返すことです。その描画は、不正な極小値を見つけ たことで当てはめが終了したかどうかをチェックするのにも有用です。
もちろん、見た目が良い当てはめが見つかっても、それは "それよりよい" 当 てはめ (ある改良された当てはめの良さの基準によって特徴付けられた統計学 的な意味で、あるいはそのモデルのより適切な解である、という物理的な意味 で) が存在しないことの証明にはなりません。問題によっては、各パラメータ の意味のある範囲をカバーするような様々な初期値の集合に対して fit す ることが望ましいかも知れません。
fit の引数の via には、2 つの大きく異なる目的のための 2 つの形式が あります。via "file" の形式は、バッチ処理 (非対話型での実行が可能) で最も良く使われ、そのファイルの中で初期値を与えることができます。
via var1, var2, ... の形式は対話型の実行で良く使われ、コマンドヒスト リの機構が使ってパラメータリストの編集を行い、当てはめを実行したり、あ るいは新しい初期値を与えて次の実行を行なったりします。これは難しい問題 に対しては特に有用で、全てのパラメータに対して 1 度だけ当てはめを直接 実行しても、良い初期値でなければうまくいかないことが起こり得るからです。 それを見つけるには、いくつかのパラメータのみに対して何回か反復を行ない、 最終的には全てのパラメータに対する 1 度の当てはめがうまくいくところに 十分近くなるまでそれを繰り返すことです。
当てはめを行なう関数のパラメータ間に共通の依存関係がないことは確認して おいてください。例えば、a*exp(x+b) を当てはめに使ってはいけません。そ れは a*exp(x+b)=a*exp(b)*exp(x) だからです。よってこの場合は a*exp(x) または exp(x+b) を使ってください。
技術的なお話: 絶対値が最も大きいパラメータと最も小さいパラメータの比が 大きい程当てはめの収束は遅くなります。その比が、マシンの浮動小数の精度 の逆数に近いか、またはそれ以上ならば、ほぼずっと収束しないか収束する前に実行が中断するでしょう。よってそのような場合は、その関数の定義で例え ば 'parameter' を '1e9*parameter' にするとか、最初の値を 1e9 で割ると かしてこれを避けるように改良するか、または set fit prescale でパラメ ータの初期値に従ってそのスケール変換を内部でやらせる機能を用いるか、の いずれかが必要でしょう。
もし、関数を、当てはめるパラメータを係数とする、単純な関数の線形結合で 書けるなら、それはとてもいいので是非そうしてください。何故なら、問題が もはや非線形ではないので、反復は少ない回数で収束するでしょう。もしかし たらたった一回ですむかもしれません。
実際の実験の講義ではデータ解析に対するいくつかの指示が与えられ、それで データへの最初の関数の当てはめが行なわれます。もしかすると、基礎理論の 複数の側面にひとつずつ対応する複数回のプロセスが必要かも知れませんが、 そしてそれらの関数の当てはめのパラメータから本当に欲しかった情報を取り 出すでしょう。しかし、fit を使えば、求めるパラメータの視点から直接モ デル関数を書くことにより、それはしばしば 1 回で済むのです。時々はより 難しい当てはめ問題の計算コストがかかりますが、データ変換もかなりの割合 で避けることが出来ます。もしこれが、当てはめ関数の単純化に関して、前の 段落と矛盾してると思うなら、それは正解です。
"singular matrix" のメッセージは、この Marquardt-Levenberg アルゴリズ ムのルーチンが、次の反復に対するパラメータの値の計算が出来ないことを意 味します。この場合、別な初期値から始めるか、関数を別な形で書き直すか、 より簡単な関数にしてみてください。
最後に、他の当てはめパッケージ (fudgit) のマニュアルから、これらの文書 を要約するようないい引用を上げます: "Nonlinear fitting is an art! (非 線形当てはめ法は芸術だ !)"
help {<項目名>}
もし <項目名> が指定されなかった場合は、gnuplot についての簡単な説明 が表示されます。指定した項目についての説明が表示された後、それに対する 細目のメニューが表示され、その細目名を入力することで細目に対するヘルプ を続けることができます。そして、その細目の説明が表示された後に、さらな る細目名の入力を要求されるか、または 1 つ前の項目のレベルへ戻ります。 これを繰り返すとやがて、gnuplot のコマンドラインへと戻ります。
また、疑問符 (?) を項目として指定すると、現在のレベルの項目のリストが 表示されます。
history コマンドで始まる入力行は、コマンド履歴には保存しません。
例:
history # 履歴全体を表示 history 5 # 履歴内の直前の 5 つを表示 history quiet 5 # エントリ番号なしで直前の 5 つを表示 history "hist.gp" # 履歴全体をファイル hist.gp に書き出す history "hist.gp" append # 履歴全体をファイル hist.gp に追加する history 10 "hist.gp" # 直前の 10 個をファイル hist.gp に出力 history 10 "|head -5 >>diary.gp" # パイプで履歴を 5 つ書き出す history ?load # 履歴内の "load" で始まるものすべてを表示 history ?"set c" # 上と同様 (複数の語は引用符で囲む) hist !"set xr" # 上と同様 (複数の語は引用符で囲む) hist !55 # 55 番目の履歴項目のコマンドを再実行
if (<condition>) { <commands>; <commands> <commands> } else { <commands> }
if (<条件>) <コマンド行> [; else if (<条件>) ...; else ...]
このバージョンの gnuplot は、if/else のブロック形式をサポートしていま す。キーワード if, else の後ろに開始カッコ "{" が続く場合、"}" で 終了するブロックまでのすべての文 (複数の入力行も可) に条件的な実行が適 用されます。if コマンドは入れ子にすることもできます。
古い形式の 1 行の if/else 文もまだサポートされていますが、新しいブロッ ク形式の書式とは混ぜてはいけません。以下参照: if-old (83.1)。
キーワード if が "{" をともなわない場合は、<条件> が真 (ゼロでない) ならば <コマンド行> のコマンド (複数も可) が実行され、偽 (ゼロ) ならば スキップされます。いずれの場合も入力行の最後になるか、else が現れる ところまでそれが行われます。; を使うと同じ行に複数のコマンド置くこと が可能ですが、条件付きのコマンド (if の構文自体) はそこでは終らない ことに注意してください。
例:
pi=3 if (pi!=acos(-1)) print "?Fixing pi!"; pi=acos(-1); print pi
?Fixing pi! 3.14159265358979
if (1==2) print "Never see this"; print "Or this either"
その他:
v=0 v=v+1; if (v%2) print "2" ; else if (v%3) print "3" ; else print "fred"
for [intvar = start:end{:increment}] for [stringvar in "A B C D"]
例:
plot for [filename in "A.dat B.dat C.dat"] filename using 1:2 with lines plot for [basename in "A B C"] basename.".dat" using 1:2 with lines set for [i = 1:10] style line i lc rgb "blue" unset for [tag = 100:200] label tag
繰り返しの入れ子もサポートしています:
set for [i=1:9] for [j=1:9] label i*10+j sprintf("%d",i*10+j) at i,j
さらなる説明については、以下参照: iteration (20), do (77)。
書式:
import func(x[,y,z,...]) from "sharedobj[:symbol]"
例:
# 関数 myfun を "mylib.so" か "mylib.dll" から取り込んで作成する # gnuplot では描画、または数値計算で利用可能 import myfun(x) from "mylib" import myfun(x) from "mylib:myfun" # 上と同様
# "theirlib.so" か "theirlib.dll" で定義済の関数 theirfun を作成 # 異なる名前で利用可能 import myfun(x,y,z) from "theirlib:theirfun"
プログラムは共有オブジェクトとして与えられた名前に、オペレーティングシ ステムに従って ".so" か ".dll" を追加し、まずそれをフルパス名として検 索し、次にカレントディレクトリからの相対パス名として検索します。オペレ ーティングシステム自体も LD_LIBRARY_PATH か DYLD_LIBRARY_PATH の任意の ディレクトリを検索します。
書式:
load "<入力ファイル名>"
入力ファイル名は引用符で囲まなければなりません。
load コマンドは、標準入力からのコマンドの入力のために、特別なファイ ル名 "-" を用意しています。これは、gnuplot のコマンドファイルが、い くつかのコマンドを標準入力から受け付けることを意味します。詳細について は、以下参照: batch/interactive (8)。
Unix のように popen 関数をサポートするようなシステムでは、'<' で始まる ファイル名にすることで、入力ファイルをパイプから読み込むことができます。
例:
load 'work.gnu' load "func.dat" load "< loadfile_generator.sh"
gnuplot への引数として与えられたファイル名は、暗黙のうちに load コ マンドによって実行されます。これらは、指定された順にロードされ、その後 gnuplot は終了します。
書式:
pause <time> {"<string>"} pause mouse {<endcondition>}{, <endcondition>} {"<string>"} pause mouse close
<time> は、任意の定数または実数値の式です。pause -1 は改行キーが押さ されるまで待ち、0 を指定すると一切待たず、正の数を指定するとその秒数だ け待ちます。
使用している出力形式が mousing (マウス機能) をサポートしている場合、 pause mouse は、マウスクリックがあるか ctrl-C が押されるまで待つよう になります。そうでない出力形式、またはマウス機能が有効になってない場合 pause mouse は pause -1 と同じです。
一つ、あるいは複数の終了条件 (endcondition) が pause mouse の後に与 えられた場合、そのうちのどの一つでも pause は終了します。指定できる終 了条件は、keypress, button1, button2, button3, close, any のいずれかです。pause がキー入力によって終了した場合、押されたキーの ASCII コードは MOUSE_KEY に保存され、文字それ自身は、1 文字の文字列値 として MOUSE_CHAR に返されます。keypress が終了条件の一つであれば、 ホットキー (キー割り当てコマンド) は無効になります。buttons3 が終了 条件の一つであれば、拡大機能は無効になります。
どの場合でもマウスの座標は変数 MOUSE_X, MOUSE_Y, MOUSE_X2, MOUSE_Y2 に 保存されます。以下参照: mouse variables (23.2)。
注意: pause コマンドは OS へのコマンドであり描画の一部ではないので、 異なる出力装置では異なる動作をする可能性があります。(これは、テキスト とグラフィックスが、どのように混在するかによります。)
例:
pause -1 # 改行キーが押されるまで待つ pause 3 # 3 秒待つ pause -1 "続けるには return を打ってください" pause 10 "これは美しくないですか ? 3 次の spline です" pause mouse "選択したデータ点上で任意のボタンをクリックしてください" pause mouse keypress "有効なウィンドウ内で A-F の文字を入力してください" pause mouse button1,keypress pause mouse any "任意のキー、ボタンで終了します"
亜種である "pause mouse key" は、有効な描画ウィンドウ内での任意のキー 入力によって再開されます。特別なキー入力まで待つようにしたい場合は、以下のようなループを使うことができます:
print "描画ウィンドウ内で Tab キーを打つと復帰します。" plot <something> pause mouse key while (MOUSE_KEY != 9) { pause mouse key }
以下のコマンド列は、gnuplot をコマンドラインからでなくスクリプトから実行している場合に有用です。
plot <...whatever...> bind all "alt-End" "exit gnuplot" pause mouse close
書式:
plot {<ranges>} <plot-element> {, <plot-element>, <plot-element>}
各描画要素 (plot-element) は、定義 (definition) か関数 (function) かデ
ータ (data source) のいずれか 1 つに、オプションの属性、修正子などがつ
いたものです:
描画要素 (plot-element): {<iteration>} <definition> | {sampling-range} <function> | <data source> | keyentry {axes <axes>} {<title-spec>} {with <style>}
各描画要素のグラフ表現形式は、例えば with lines や with boxplot な どのようにキーワード with で決定します。以下参照: plotting styles (II)。
描画するデータは、1 つの関数から生成されるもの (媒介変数モード (parametric) では 2 つの関数から)、または一つのデータファイルから読み 込まれるもの、または事前に定義された名前付きデータブロックから読み込ま れるもの、のいずれかです。コンマで区切ることで、複数のデータファイル、 データブロック、関数などを 1 つの plot コマンドで描画できます。以下参照: data (89.3), inline data (19), functions (89.6)。
関数、変数の定義の描画要素は、画像出力を生成しません。下の 3 つ目の例 を参照してください。
例:
plot sin(x) plot sin(x), cos(x) plot f(x) = sin(x*a), a = .2, f(x), a = .4, f(x) plot "datafile.1" with lines, "datafile.2" with points plot [t=1:10] [-pi:pi*2] tan(t), \ "data.1" using (tan($2)):($3/$4) smooth csplines \ axes x1y2 notitle with lines 5 plot for [datafile in "spinach.dat broccoli.dat"] datafile
以下参照: show plot (100.70)。
ファイル名の後ろに binary のキーワードを与えなければいけません。ファ イル形式に関する十分詳細な情報は、ユーザがコマンドラインから与えるか、 またはサポートしている filetype のバイナリ形式のファイルそれ自身から 抜き出されるかする必要があります。バイナリファイルには、大きく 2 つの 形式、binary matrix 形式と binary general 形式があります。
binary matrix 形式は、32 ビット IEEE 規格の浮動小数値 (float) が 2 次元配列の形で並び、それらの座標値を表す行と列が追加されています。plot コマンドの using 指定において、1 番目 (column(1)) は行列の行の座標を 参照し、2 番目 (column(2)) は列の座標を参照し、3 番目 (column(3)) は、 配列のそれらの座標の場所に保存されている値を参照します。
binary general 形式は、任意個の列のデータを含み、それらの情報はコマ ンドラインで指定する必要があります。例えば array, record, format, using などでサイズや形式、データの次元を指定できます。他にも、ファイ ルヘッダ読み飛ばしたり、エンディアン (endian) を変更するための有用なコ マンドがありますし、配置、データの変換を行なうコマンドの組があります。 それは、一様に標本化されたデータの場合、その座標がファイルには含まれな いことが良くあるからです。matrix バイナリファイルやテキストデータから の入力と違うところですが、general バイナリは 1,2,3 といった using リ ストで生成される列番号を使わず、代わりに 1 列目はファイルの 1 列目、あ るいは format リストで指定されたもの、になります。
さまざまな binary オプションに対する大域的なデフォルトの設定も可能で、 それは (s)plot <filename> binary ... コマンドに与えるオプションと全 く同じ書式で指定できます。その書式は set datafile binary ... です。 一般的な規則として、デフォルトのパラメータはファイルから抜き出されたパ ラメータで上書きされ、それはコマンドラインで指定された共通なパラメータ で上書きされます。
例えば array, record, format, filetype の binary general 形 式を特定するようなキーワードが何もついていなければ、デフォルトのバイナ リ形式は binary matrix です。
general バイナリデータは、特別なファイル名 '-' を使ってコマンドライン から入力することもできます。しかし、これはキーボードからの入力を意図し たものではなく、パイプを使ってプログラムにバイナリ形式を変換させるため のものです。バイナリデータには最後を表す記号がありませんので、gnuplot はパイプからデータを読み込む場合、array 指定子で指定した数の点数にな るまでデータを読み込み続けます。詳細に関しては、以下参照:binary matrix (102.1.1), binary general (89.2.1)。
index キーワードは、ファイルフォーマットが 1 つのファイルにつき 1 つ の曲面しか許さないため、サポートされません。every や using フィルタ はサポートされます。using は、データがあたかも上の 3 つ組の形で読まれ たかのように働きます。 バイナリファイルの splot のデモ。
書式:
plot '<file_name>' {binary <binary list>} ... splot '<file_name>' {binary <binary list>} ...
general バイナリ形式は、ファイル構造に関する情報に関連するキーワード、 すなわち array, record, format, filetype などを <binary list> 内に与えることで有効になります。それ以外の場合は、非一様な matrix バイナリ形式と見なします。(詳細に関しては、以下参照: binary matrix (102.1.1)。)
gnuplot は、例えば PNG 画像のように完全に自己記述される標準的なバイナ リファイル形式の読み込み方法をいくつか知っています。その一覧は、対話画 面で show datafile binary と入力することで参照できます。それら以外のものについては、概念上はバイナリデータはテキストデータと同様に考えることができます。各点には、using 指定で選択される情報の列があります。 format 文字列を指定しなかった場合、gnuplot はバイナリ数値の数を <using list> で与えられる最大の列番号に等しく取ります。例えば、 using 1:3 とすると 3 列ずつデータが読み取られ、2 番目のものは無視し ます。各描画スタイルにはデフォルトの using 指定があります。例えば with image はデフォルトで using 1 を、with rgbimage はデフォルト で using 1:2:3 を使います。
plot '<file_name>' binary skip=1024 ...
plot '<file_name> binary record=356:356:356 skip=512:256:256 ...
さらに using 指定同様、* 文字がついた読み捨てる列を書式に指定する こともできますし、繰り返しフィールドへの回数指定によって暗黙の繰り返し を指定することもできます。例えば、format="%*2int%3float" は、3 つの 実数データを読む前に、2 つの整数データを読み捨てます。使用できる変数サ イズの一覧は、show datafile binary datasizes で見ることができます。 それらは、それぞれのコンパイルによってそのバイトサイズとともにマシンに 依存する変数名のグループと、マシンに依存しない変数名のグループに分かれ ています。
little: 小さい桁から大きな桁へ並ぶ big: 大きな桁から小さな桁へ並ぶ default: compiler と同じエンディアンと見なす swap (swab): エンディアンを変更する (おかしいようならこれを 使ってみてください)
gnuplot は、コンパイル時にオプションが指定されていれば、"middle" (や "pdp") エンディアンもサポートできます。
特別なファイル形式として auto があり、この場合 gnuplot はバイナリフ ァイルの拡張子が、サポートされている形式の標準的な拡張子であるかをチェ ックします。
コマンドラインキーワードはファイルから読み取る設定を上書きするのに使わ れ、ファイルから読み取る設定はデフォルトの設定を上書きします。以下参照:set datafile binary (100.20.7)。
http://www.edfplus.info/specs
plot 'file.png' binary filetype=png
set datafile binary filetype=auto
描画モードが plot の場合、指定には x と y の 2 つの文字を使うことが でき、splot に対しては x, y, z の 3 つの文字を使うことができます。
割り当てに関しては、点/線/面から直交座標方向へのみに制限する内部事情は 別にありません。この理由で、円柱座標への割り当てのための指定子も用意さ れていて、それらは直交座標の x, y, z に類似した形で t (角度), r, z と なっています。
plot 'imagefile' binary filetype=auto flipx rotate=90deg with rgbimage
以下のキーワードも座標の生成時にのみ適用されます。しかし、以下のものはmatrix バイナリファイルにも使われます。
配列をグラフのその他の場所に配置したい場合、origin キーワードで指定 した場所に gnuplot は配列の左下の点を合わせます。その指定は、plot で は 2 つの座標の組、splot では 3 つの座標の組を指定してください。例え ば origin=(100,100):(100,200) は、一つのファイルに含まれる 2 つのデ ータに対する指定で、2 次元の描画に対する指定です。2 つ目の例として origin=(0,0,3.5) をあげると、これは 3 次元描画用の指定です。
キーワード rotate は, plot, splot の両方で、2 次元面に対して適用 されます。回転は座標平面の正の角度に関して行なわれます。
角度は、ラジアン単位ですが、pi や degrees の倍数としてのラジアンでも表 現できます。例えば、rotate=1.5708, rotate=0.5pi, rotate=90deg は すべて同じ意味です。
origin が指定された場合、回転は平行移動の前に左下の点を中心にして行 なわれます。それ以外では回転は配列の中心 (center) に関して行なわれま す。
まず最初に 2 次元の回転が行なわれ、その次に 3 次元の回転が行なわれます。 つまり、R' をある角による 2 x 2 の回転行列とし、P を (0,0,1) を (xp,yp,zp) へ子午線方向に回転させる 3 x 3 の行列とし、R' を左上の部分 行列として持ち 3,3 成分が 1 でその他の成分が 0 であるような行列 (つま り z 軸周りの回転行列) とすれば、この変換を表す行列による関係式は v' = P R v となります。ここで、v はデータファイルから読み込まれた 3 x 1 の位置ベクトルです。ファイルのデータが 3 次元的なものでない場合 は、論理的なルールが適用されて 3 次元空間内のデータと見なされます (例 えば、通常は z 座標は 0 とされ、xy 平面内の 2 次元データと見なされます)。
書式:
plot '<file_name>' {binary <binary list>} {{nonuniform} matrix} {index <index list> | index "<name>"} {every <every list>} {skip <number-of-lines>} {using <using list>} {smooth <option>} {bins <options>} {volatile} {noautoscale}
修正子の binary, index, every, skip, using, bins, smooth をそれぞれに分けて説明します。簡単に言うと以下の通り。
splot もよく似た書式を使いますが、smooth と bins はサポートして いません。
キーワード noautoscale は、自動的に軸の範囲が決定される機能が有効で ある場合に、この描画を構成するデータ点については、それを無視させる (自 動縮尺機能の計算対象から外す) ようにします。
テキストデータファイル:
データファイルの空でない各行は、一つのデータ点を記述しますが、# (VMS では !) で始まる行は例外で、これはコメントとして扱われ無視されます。
描画スタイルと指定したオプションに依存し、各行から 1 つ以上 8 個以下の値を読み込み、単一のデータ点に関連付けます。以下参照: using (89.3.11)。
データファイルの単一行中の個々の値は、ホワイトスペース (一つまたは複数
の空白かタブ) か、またはコマンド set datafile で指定した特別なフィー
ルド区切り文字で区切られている必要があります。フィールド全体が二重引用
符で囲まれている場合、またはフィールド区切り文字りがホワイトスペース以外になっている場合は、そのフィールドがホワイトスペースを含むことが可能です。二重引用符内のホワイトスペースは列数の勘定の際には無視されるので、
次のデータ行は 3 列と見なされます:
1.0 "second column" 3.0
データは、指数部に e, E の文字をつけた指数表記で書かれていても構いませ ん。コマンド set datafile fortran が有効な場合は、fortran の指数指定 子 d, D, q, Q も使えます。
データファイルの空行は重要です。 1 行のブランク行は、plot に不連続を指示します; ブランク行によって区 切られた点は線で結ばれることはありません (line style で書かれている場 合には)。 2 行のブランク行は、別々のデータ集合間の区切りを示します。以下参照:index (89.3.6)。
もし autoscale の状態であれば (以下参照: set autoscale (100.3))、軸は全ての データポイントを含むように自動的に引き伸ばされて、目盛りが書かれる状態 ならば全ての目盛りがマークされます。これは、2 つの結果を引き起こします: i) splot では、曲面の角は底面の角に一致していないことがあります。こ の場合、縦の線は書かれることはありません。ii) 2 種類の軸での、同じ x の範囲のデータの表示の際、もし x2 の軸に対する目盛りが書かれていない場 合は、x 座標があっていないことがあります。これは x 軸 (x1) は全ての目 盛りにまで自動的に引き延ばされるのに対し、x2 軸はそうではないからです。 次の例でその問題を見ることができます:
reset; plot '-', '-' axes x2y1 1 1 19 19 e 1 1 19 19 e
これを避けるには、set autoscale コマンドか set [axis]range コマン ドの noextend オプションを使うことができます。これは、次の目盛りの刻 みを入れるような軸の範囲の拡張機能を無効にします。
ラベルの座標と文字列もデータファイルから読み込むことができます (以下参照: labels (50))。
plot 'DATA' using <XCOL> {:<YCOL>} bins{=<NBINS>} {binrange [<LOW>:<HIGH>]} {binwidth=<width>} {binvalue={sum|avg}
plot コマンドに対するオプション bins は、最初に元のデータを、x 軸 上で等しい幅を持ついくつかの箱 (ビン) に割り当て、そして箱毎に一つの値 のみを描画します。箱の数のデフォルト値は、set samples で決定しますが これは plot コマンドでビンの数を明示的に指定することで変更できます。
各箱に対して描画される y の値は、その箱内のすべての点に関する y の値の 和になります。これは、binvalue=sum に対応します。 試験段階: binvalue=avg では、代わりにその箱に対する y の値の平均を描 画します。
binrange を指定しないと、範囲は 'DATA' 内の値の両端を取ります。
箱の幅は、指定した範囲と箱の数から自動的に計算し、各点を 0 から
NBINS-1 までの箱に割り当てます:
BINWIDTH = (HIGH - LOW) / (NBINS-1) xmin = LOW - BINWIDTH/2 xmax = HIGH + BINWIDTH/2 first bin holds points with (xmin <= x < xmin + BINWIDTH) 最初の箱は (xmin <= x < xmin + BINWIDTH) の範囲の点を保持 最後の箱は (xmax-BINWIDTH <= x < xman) の範囲の点を保持 各点は i = floor(NBINS * (x-xmin)/(xmax-xmin)) 番の箱に割り当て
それとは別に、固定幅の箱を指定することも可能です。その場合、箱の数 (nbins) は、点の範囲全体にわたる最小の箱の数となります。
箱の出力は、その中点で描画、または表にされます。例えば gnuplot が上の ように箱の幅を計算する場合、最初の箱の x 座標の出力は x=LOW であり、 x=xmin ではありません。
using 命令で一つの列のみを指定した場合、各データ点は、その x 座標値に
対する箱の合計値に 1 だけ寄与します。2 列目を指定すると、その箱の合計
値には 2 列目の値が追加されます。よって、以下の 2 つの plot コマンドは同じになります:
plot 'DATA" using N bins=20 set samples 20 plot 'DATA' using (column(N)):(1)
関連する描画スタイルに関しては、以下参照: smooth frequency (89.3.8.9),smooth kdensity (89.3.8.13)。
set datafile separator {whitespace | tab | comma | "chars"}
"csv" は、本来はカンマ区切り ("comma-separated values") の略語ですが、 ここでの「csv ファイル」 ("csv file") という言葉は、その中のデータフィ ールドが、必ずしもカンマである必要はない特定の文字で区切られているよう なファイルとします。csv ファイルからデータを読むためには、gnuplot にフ ィールド区切り文字がなんであるかを示す必要があります。例えば、フィール ド区切り文字としてセミコロンを使うファイルから読む場合は:
set datafile separator ";"
以下参照: set datafile separator (100.20.5)。これは、入力用のファイルにのみ適用 されます。出力として CSV ファイルを生成するには、set table にオプシ ョン separator を使用してください。
通常のファイルに対しては、「ポイント」は 1 つの行、データの「ブロック」 は、前後のブロックと空行で区切られる連続した行のまとまりを意味すること とします。
matrix データに対しては、「ブロック」と「ポイント」は、それぞれ「行」 と「列」に対応します。以下参照: matrix every (102.1.1.3)。
書式:
plot 'file' every {<ポイント増分>} {:{<ブロック増分>} {:{<開始ポイント>} {:{<開始ブロック>} {:{<終了ポイント>} {:<終了ブロック>}}}}}
描画するデータポイントは、<開始ポイント> から <終了ポイント> まで <ポ イント増分> の増加で選び、ブロックは <開始ブロック> から <終了ブロック> まで <ブロック増分> の増加で選びます。
各ブロックの最初のデータは、ファイル中の最初のブロックと同じように、 「0 番」と数えます。
プロットできない情報を含む行もカウントすることに注意して下さい。
いくつかの数字は省略できます; 増分のデフォルトは 1 、開始の値は最初の ポイントか最初のブロック、そして終了の値は最後のポイントか最後のブロッ クに設定します。every のオプションが ':' で終わるのは許されていませ ん。every を指定しなければ、全ての行の全てのポイントをプロットします。
例:
every :::3::3 # 4 番目のブロックだけ選びます (0 番が最初) every :::::9 # 最初の 10 ブロックを選びます every 2:2 # 1 つおきのブロックで 1 つおきのポイントを選び # ます every ::5::15 # それぞれのブロックでポイント 5 から 15 までを # 選びます
。
pop(x) = 103*exp((1965-x)/10) set xrange [1960:1990] plot 'population.dat', pop(x)
ファイル "population.dat" は次のようなファイルです。
# Gnu population in Antarctica since 1965 1965 103 1970 55 1975 34 1980 24 1985 10
# 2 つの float の値を選択し (2 つ目の値は無意味)、一方を読み捨て、 # 一つおきの float 値を無限に長く続く 1 次元データとして使用 plot '<file_name>' binary format="%float%*float" using 1:2 with lines
# データファイルから座標を生成するのに必要な情報をすべてそのヘッ # ダに含んでいる EDF ファイルの場合 plot '<file_name>' binary filetype=edf with image plot '<file_name>.edf' binary filetype=auto with image
# 3 つの符号なし文字型整数値 (unsigned char) を生の RGB 画像の色 # 成分として選択し、y 方向は反転させ画像の方向を座標平面上で変更 # する (左上が原点になるように)。ピクセルの間隔も指定し、ファイ # ルには 2 つの画像が含まれていて、そのうち一つは origin で平行 # 移動する。 plot '<file_name>' binary array=(512,1024):(1024,512) format='%uchar' \ dx=2:1 dy=1:2 origin=(0,0):(1024,1024) flipy u 1:2:3 w rgbimage
# 4 つの別のデータからなり、座標情報もデータファイルに含まれてい # る。ファイルは gnuplot が実行されているシステムとは異なるエン # ディアンで生成されている。 splot '<file_name>' binary record=30:30:29:26 endian=swap u 1:2:3
# 同じ入力ファイルで、今回は 1 番目と 3 番目のレコードをスキップ splot '<file_name>' binary record=30:26 skip=360:348 endian=swap u 1:2:3
以下参照: binary matrix (102.1.1)。
書式:
plot 'file' index { <m>{:<n>{:<p>}} | "<name>" }
データ集合は 2 行の空白で分離されています。index <m> は <m> 番目の集 合だけを選択します; index <m>:<n> は <m> から <n> までのデータ集合の 選択; index <m>:<n>:<p> は、<m>, <m>+<p>, <m>+2<p>, など、<p> おきの 集合を選択し、集合 <n> で終了します。C 言語の添字 (index) の付け方に従 い、index 0 はそのファイルの最初のデータ集合を意味します。大きすぎる index の指定にはエラーメッセージが返されます。<p> を指定し、<n> を空欄 にした場合、<p> 毎のデータをファイルの最後まで読み込みます。index を 指定しない場合は、ファイルのデータ全体を単一のデータ集合として描画しま す。
例:
plot 'file' index 4:5
ファイルの各点に対して、それが含まれるデータ集合の index 値は、疑似列 column(-2) で利用できます。これは、以下に見るように、そのファイル内の個々のデータ集合を区別する別の方法を提供します。これは、描画用に 1 つのデータ集合の選択しかしない場合は index コマンドよりも不恰好です が、個々のデータ集合に異なる属性を割り当てたい場合にはとても便利です。 以下参照: pseudocolumns (89.3.11.2), lc variable (21.1.2)。
例:
plot 'file' using 1:(column(-2)==4 ? $2 : NaN) # とても不恰好 plot 'file' using 1:2:(column(-2)) linecolor variable # とても便利 !
index '<name>' は、データ集合を名前 '<name>' で選択します。名前はコ メント行に書いてデータ集合に割り当てます。コメント文字とそれに続く空白 をそのコメント行から取り除いて、その結果が <name> から始まっていれば、 それに続くデータ集合に <name> という名前がつけられて、それを指定できま す。
例:
plot 'file' index 'Population'
<name> で始まるすべてのコメントがそれに続くデータ集合の名前になること に注意してください。問題を避けるために、例えば '== Popolation ==' や '[Population]' などの命名法を選択すると便利でしょう。
書式:
smooth {unique | frequency | fnormal | cumulative | cnormal | bins | kdensity {bandwidth} {period} | csplines | acsplines | mcsplines | bezier | sbezier | unwrap | zsort}
unique, frequency, fnormal, cumulatie, cnormal は、x 座標に 関してデータをソートし、そしてその x の値に対する分布のある種の様子を 描画します。
spline 系、Bezeir 系のオプションは、データの端と端を結ぶ連続曲線の係数 を決定します。この曲線は関数グラフと同じ方法、すなわちその値を x 座標 に沿う同じ幅の区間ごとに選び (以下参照: set samples (100.83))、それらの点を 線分でつなぐことで描画します。データ集合が空行や未定義値で切られてい る場合、切られていないそれぞれの部分を別々の連続曲線としてつなぎます。 これらの別々につないだ部分同士は、曲線として切れたり、不連続になった りするかもしれません。
unwrap は、データがπより大きなジャンプをしないように、2πの整数倍を 加える操作をします。
zsort は、入力列の 3 列目を使って描画前に点の並びをソートします。
もし autoscale の状態であれば、軸の範囲は元のデータからではなく、そ こから作られる最終的な曲線に対して計算されます。
もし autoscale の状態でなく、かつスプライン曲線を生成する場合、その スプライン曲線の標本化は、入力データを含むような x の範囲と、 set xrange で定義される固定した横座標の範囲の共通部分の上で行なわれ ます。
要求する平滑化オプションを適用するにはデータの点数が少なすぎる場合は、 エラーメッセージが表示されます。
smooth オプションは、関数の描画のときには無視されます。
plot 'data-file' using 1:2:(1.0) smooth acsplines
性質上、重みの絶対的な大きさは、曲線を構成するのに使われる区分の数を決 定します。もし重みが大きければ、個々のデータの影響は大きくなり、そして その曲線は、隣り合う点同志を自然 3 次スプラインでつないで得られるもの に近づきます。もし重みが小さければ、その曲線はより少ない区分で構成され、 それによってより平滑的になります。その最も極端な場合はただ 1 つの区分 からなる場合であり、それは全てのデータに重みの付き線形最小 2 乗近似に よって作られます。誤差の立場から言えば、平滑さの重みは、その曲線に対す る「平滑化因子」によって分割された各点への、統計的な重みと見ることがで きます。それにより、そのファイル中の (標準的な) 誤差は平滑さの重みとし て使うことができます。
例:
sw(x,S)=1/(x*x*S) plot 'data_file' using 1:2:(sw($3,100)) smooth acsplines
binwidth = <適当な値> # x の値の各階級幅 bin(val) = binwidth * floor(val/binwidth) plot "datafile" using (bin(column(1))):(1.0) smooth frequency plot "datafile" using (bin(column(1))) smooth frequency # 同上
バンド幅:
デフォルトでは、gnuplot は正規分布のデータ値に対して最適となるようなバ
ンド幅を計算し使用します。
default_bandwidth = sigma * (4/3N) ** (0.2)
plot $DATA smooth kdensity bandwidth <value> with boxes
周期:
周期的なデータに対しては、個々のガウス核成分は、1 周期の区間を繰り返す
ように扱う必要があります。その一例は、角の関数として測定されたデータで、
これは周期が 2πです。他の例は、複数年に渡って、各年の日付毎に取られた
データで、この周期は 365 です。
このような場合、その周期を描画コマンドで渡す必要があります。
plot $ANGULAR_DAT smooth kdensity period 2*pi with lines
plot FOO using x:y:z:color smooth zsort with points lc palette
空のファイル名 ' ' は、同じ plot コマンド上で、直前の入力ファイルを再び 使用することを gnuplot に指示します。よって、同じ入力ファイルの 2 つの データ列を描画するには以下のようにします:
plot 'filename' using 1:2, ” using 1:3
この filename は、この後の plot コマンドでも ' ' で再利用できますが、 その場合に save すると、コメントとしてその名前を記録するのみです。
'+' と '++' という特別なファイル名は、using 指定の全体と描画スタイル にインライン関数を使えるようにするための仕組みです。通常、関数描画はサ ンプル点毎に単一の y (または z) の値しか持てません。しかし疑似ファイル '+' はそれがあたかも実際の入力ファイルであるように、using 指定による 1 列目の値を標本点として扱い、さらに追加の列の値を指定することも可能で す。標本点数は set samples で制御できます。標本点は、デフォルトでは set trange で設定した範囲全体に渡りますが、trange が設定されていなけ れば set xrange の範囲全体に渡ります。
注意: trange の使用は、以前の版の gnuplot の仕様とは異なりますが、これにより x 軸の範囲とは異なる標本範囲が使用できることになります。
plot '+' using ($1):(sin($1)):(sin($1)**2) with filledcurves
'+' の直前に、独立な標本範囲を指定することもできます。通常の関数描画の と同様、独立変数に名前を割り当てることもできます。plot の最初の要素に 与える場合、標本範囲にはそれを明示するキーワード sample を前置する必 要があります (以下も参照: plot sampling (89.9))。
plot sample [beta=0:2*pi] '+' using (sin(beta)):(cos(beta)) with lines
さらに、+ の範囲指定には、標本増分を与えることもできます。
plot $MYDATA, [t=-3:25:1] '+' using (t):(f(t))
疑似ファイル '++' は、u 方向は set samples で制御される点の数、v 方 向は set isosamples で制御される点の数の、標準的な [u,v] 座標の格子 を生成する 2 列のデータを返します。よって、'++' の描画の前に、urange と vrange を設定する必要がありますが、x と y の範囲は自動的に設定され るか、または明示的に urange, vrange とは違う値に設定できます。'++' の サンプリングでの u, v の使用は、version 5.2 で導入された変更です。 例:
splot '++' using 1:2:(sin($1)*sin($2)) with pm3d plot '++' using 1:2:(sin($1)*sin($2)) with image
'-' という特別なファイル名は、データがインラインであることを指示し ます。すなわち、データをコマンドの後に続けて指定します。このときはデ ータのみがコマンドに続き得ます。よって、plot コマンドに対するフィル ター、タイトル、ラインスタイルといったオプションは、plot のコマンド ラインの方に書かないといけません。これは、unix シェルスクリプトにおけ る << (ヒアドキュメント)、あるいは VMS DCL における $DECK と同様です。 そのデータは、それらがファイルから読み込まれたかのように、1 行につき 1 つずつのデータ点が入力されます。そしてデータの終りは、1 列目の始めに 文字 "e" を置くことで指示します。
'-' は、データとコマンドを一緒に持つことが有用である場合のためにあり ます。例えば、別々のアプリケーションから gnuplot にその両方がパイプ 入力される場合です。例えば、デモファイルの中にはこの機能を使うものがあ るでしょう。index や every のような plot のオプションが与えられ ていると、それらは使われることのないデータの入力を要求してきます。ごく 単純な場合を除くすべての場合で、'-' からデータを読み込むよりも、最初 にデータブロックを定義してそれを読み込む方が多分簡単です。以下参照:datablocks (19)。
もし、replot コマンドで '-' を使うなら、あなたは 1 度以上データを入力する必要があるでしょう。以下参照: replot (96), refresh (95)。繰り返しま すが、データブロックを使う方がいいです。
空のファイル名 (' ') は、直前のファイル名が再び使われることを指示しま す。これは、
plot 'ある/とても/長い/ファイル名' using 1:2, ” using 1:3, ” using 1:4
のようなときに便利です。(もし同じ plot コマンド上で、'-' と ' ' の 両方を使用すると、上の例にあるように、インラインデータの 2 つの集合を 与える必要があります。)
pop(x) = 103*exp(-x/10) plot "< awk '{print $1-1965, $2}' population.dat", pop(x)
は、最初の人口の例と同じ情報を描画します。ただし、x 座標は 1965 年か らの経過年を表すようになります。この例を実行するときは、上のデータフ ァイルのコメント行をすべて削除しなければなりませんが、または上のコマ ンドの最初の部分を次のように変えることもできます (コンマに続く部分):
plot "< awk '$0 !~ /^#/ {print $1-1965, $2}' population.dat"
このアプローチは最も柔軟性がありますが、using キーワードを用いた単純 なフィルタリングで行うことも可能です。
fdopen() 関数を持つシステムでは、データを、ファイルかパイプに結びつけ られた任意のファイルデスクリプタから読み込むことができます。n 番のフ ァイルデスクリプタから読み込むには、'<&n' としてください。これにより、 1 回の POSIX shell からの呼び出しの中で、複数のデータファイルからのパ イプ入力が容易に行えるようになります:
$ gnuplot -p -e "plot '<&3', '<&4'" 3<data-3 4<data-4 $ ./gnuplot 5< <(myprogram -with -options) gnuplot> plot '<&5'
書式:
plot 'file' using <entry> {:<entry> {:<entry> ...}} {'format'}
format を指定すると、それを C ライブラリ関数 'scanf' に適用してデータ ファイルの各行を読みます。そうでなければ、各行はホワイトスペース (スペ ースやタブ) で区切られたデータの列 (フィールド) からなるとみなしますが 以下も参照: datafile separator (100.20.5)。
各 <entry> は、入力ファイルの一つのフィールドを選択するための単なる列 の番号か、一つのデータ集合の最初の行の列のラベルに一致する文字列、カッ コで囲まれた数式、xticlabels(2) のようにカッコで囲まない特別な関数、の いずれかです。
そのエントリがカッコで囲まれた数式の場合、N 列目の値を指定するのに関数 column(N) を使用できます。つまり、column(1) は読み込まれた最初の項目を 参照し、column(2) は次の項目、といった具合です。column(1), column(2), ... の略記として、特別な記号 $1, $2, ... を使用できます。
特別な記号 $# は、現在の入力行の全列数と評価しますので、column($#) や stringcolumn($#) は、列数が不明な場合、あるいは行によって異なる個数の 列を含むファイルからの入力の場合でも、必ず最終列の内容を返します。
関数 valid(N) で、N 番目の列が有効な数字であるかどうかテストできます。
入力ファイルの最初の行の各列に、データの値ではなくラベルを持っている場
合、このラベルを入力列の特定や plot タイトルに使用できます。関数
column() は、列番号以外にラベルで入力列を選択できます。例えば、データ
ファイルが以下のような場合:
Height Weight Age val1 val1 val1 ... ... ...
plot 'datafile' using 3:1, ” using 3:2 plot 'datafile' using (column("Age")):(column(1)), \ ” using (column("Age")):(column(2)) plot 'datafile' using "Age":"Height", ” using "Age":"Weight"
指定文字列が完全に一致する必要がありますし、大文字小文字も区別します。 列のラベルを plot タイトルに使うには、set key autotitle columnhead としてください。
入力データファイルの 1...N という実際の列に加えて、gnuplot は管理情報 を持ついくつかの "疑似列" を提供します。例えば、$0 または column(0) は、 データ集合内のそのデータ行の行番号を返します。以下参照:pseudocolumns (89.3.11.2)。
<entry> に何も書かなければ、そのエントリのリストの順にデフォルトの値が 使われます。例えば using ::4 は、using 1:2:4 と解釈されます。
using にただ一つのエントリを指定した場合は、その <entry> は y の値と して使われ、データ点の番号 (疑似列 $0) が x として使われます。例えば "plot 'file' using 1" は "plot 'file' using 0:1" と同じ意味です。 using に 2 つのエントリを与えた場合、それらは x, y として使われます。 さらにエントリを追加して、入力からのデータを利用するような描画スタイル の詳細については、以下参照: set style (100.86), fit (80)。
'scanf' 関数では色々なデータ形式の数値入力が使えますが、gnuplot は全 ての入力データを倍精度浮動小数とみなしますから、gnuplot では %lf が本質的に唯一の数値入力指定、ということになります。 書式文字列には、少なくとも一つ、そして 7 つ以下の、そのような入力指定子を入れる必要があります。 'scanf' は数と数の間にホワイトスペース、すなわち空白、タブ (" \t")、改行 (" \n")、または改ページ (" \f") があると期待します。それ以外の入力は明示的にスキップされるべきです。
" \t", " \n", " \f" を使うときは単一引用符よりむしろ二重引用符を使うべき であることに注意してください。
plot 'file' using 1:($2+$3) '%lf,%lf,%lf'
次の例は、より複雑な書式指定でデータをファイル "MyData" から読み込み
ます。
plot 'MyData' using "%*lf%lf%*20[^\n]%lf"
この書式指定の意味は以下の通りです:
%*lf 数値を無視 %lf 倍精度浮動小数を読み込む (デフォルトでは x の値) %*20[^\n] 20 個の改行以外の文字を無視 %lf 倍精度浮動小数を読み込む (デフォルトでは y の値)
3 項演算子 ?: を使ってデータをフィルタする一つの芸当を紹介します。
plot 'file' using 1:($3>10 ? $2 : 1/0)
これは、1 列目のデータに対して、3 列目のデータが 10 以上であるような2 列目のデータを plot します。1/0 は未定義値であり、gnuplot は未定 義の点を無視するので、よって適切でない点は隠されることになります。 または、あらかじめ定義されている値 NaN を使っても同じことになります。
カッコで始まっていない限りは定数式を列番号として使うことができます。 例えば using 0+(複雑な式) の様なことができます。そして、その数式は、 カッコでスタートしていなければ数式の値が一度評価され、カッコでスタート していれば個々のデータ点を読み込むためにその値が一度評価される、という 点が重要です。
時系列フォーマットデータを使っている場合、その時間のデータは複数の列に 渡らせることができます。その場合、他のデータの開始位置を計算するとき、 時間のデータに空白が含まれていることに注意してください。例えば、データ 行の最初の要素がスペースが埋め込まれた時間データであるならば、y の値は 3 列目の値として指定されるべきです。
(a) plot 'file' と、(b) plot 'file' using 1:2、そして (c) plot 'file' using ($1):($2) には微妙な違いがあることに注意してく ださい。細かい挙動は、バージョン 5 で変更されています。以下参照:missing (100.20.4)。
最初に単に
plot 'file' using 1:2
と指定することで、大抵の場合どんなにゴミのデータを含む行を持つファイル をも plot することが可能になります。しかし、どうしてもデータファイルに 文字列を残しておきたいならば、そのテキスト行の第一列にコメント文字 (#) を置く方がより安全でしょう。
column(0) データ集合内での各点の順番。順番は 0 から始まり、空 行やコメント行でない行で増え、2 行の連続する空行でリ セットされます。略記 $0 も使用可。 column(-1) この番号は 0 から始まり、1 行の空行で増え、2 行の連 続する空行でリセットされます。これは、行列、または格 子状データ内のデータ行に対応します。また、データ集合 内の別々の線分や多角形を区別するのにも使えます。 column(-2) 0 から始まり、2 行の連続する空行で増えます。これは、 複数のデータ集合を持つファイル内の、現在のデータ集合 の index 番号です。以下参照: `index`。 column($#) 特別な記号 $# は、存在する全列数と評価されますので、 よって column($#) は、現在の入力行の最終列 (最右列) を参照します。同様に column($# - 1) は、最終列の一つ 手前の列、などとなります。
plot 'datafile' using <xcol>:<ycol>:xticlabels(3) with <plotstyle>
軸の目盛りの見出しは、任意の描画軸 x,x2,y,y2,z 用に生成できます。 ticlabels(<labelcol>) 指定は、using 指定の中で、そのデータの座標指 定が全て済んだ後に行う必要があります。有効な X,Y[,Z] 座標の組を持つ各 データ点に対して、xticlabels() に与える文字列値は、それに対応する点の x 座標と同じ場所の x 軸の見出しのリストに追加されます。xticlabels() は xtic() と省略することもでき、他の軸に関しても同様です。
例:
splot "data" using 2:4:6:xtic(1):ytic(3):ztic(6)
この例では、x 軸、y 軸の見出しは x,y 座標値とは別の列から取り出されま すが、z 軸の見出しは、対応する点の z 座標値から生成されます。
例:
plot "data" using 1:2:xtic( $3 > 10. ? "A" : "B" )
この例は、x 軸の見出しの生成に文字列値関数を使用したもので、データファ イルの各点の x 軸の刻みの見出しは、3 列目の値によって "A" か "B" かの いずれかとなります。
デフォルトでは、gnuplot はデータファイルの各行に以下のような 3 つ、4 つ、あるいは 6 つの列があることを期待しています:
(x, y, ydelta), (x, y, ylow, yhigh), (x, y, xdelta), (x, y, xlow, xhigh), (x, y, xdelta, ydelta), (x, y, xlow, xhigh, ylow, yhigh)
x 座標は必ず指定しなければいけません。各数値を書く順序も上で挙げた通りで なくてはなりません。ただ、using 修飾子を使えばその順序を操作できますし、 欠けている列の値も補うことは可能ですが。例えば、
plot 'file' with errorbars plot 'file' using 1:2:(sqrt($1)) with xerrorbars plot 'file' using 1:2:($1-$3):($1+$3):4:5 with xyerrorbars
最後の例は、相対的な x の誤差と絶対的な y の誤差、という、サポートされて いない組のファイルに対するものです。using エントリが相対的な x の誤差 から絶対的な x の最小値と最大値を生成しています。
y のエラーバーは、(x, ylow) から (x, yhigh) への鉛直な線として描かれます。 ylow と yhigh の代わりに ydelta が指定されたときは、ylow = y - ydelta, yhigh = y + ydelta となります。ある行にデータが 2 つしかなければ、ylow と yhight はともに y となります。x エラーバーは同様に計算された水平線です。 データの各点を結ぶ折れ線を引きたい場合は、with errorbars と with lines を 指定して、同じデータファイルを 2 回 plot して下さい (ただし、キーの中に 2 つのエントリを作らないように、その一方には notitle オプションを使う ことを忘れないで下さい)。他の選択肢として、errorlines コマンドもあります (以下参照: errorlines (89.5))。
エラーバーの端の刻みの印の見た目は、set errorbars で制御できます。
自動範囲指定が有効であれば、その描画範囲はエラーバーも含むように調整 されます。
以下も参照 エラーバーのデモ
更なる情報に関しては、以下参照: plot using (89.3.11), plot with (89.12), set style (100.86)。
デフォルトの状態では、gnuplot は、データファイルの各行に 3 個、4 個、 6 個のいずれかの個数のデータがあることを期待し、それぞれ以下のいずれかに対応します。
(x, y, ydelta), (x, y, ylow, yhigh), (x, y, xdelta), (x, y, xlow, xhigh), (x, y, xdelta, ydelta), (x, y, xlow, xhigh, ylow, yhigh)
x 座標は指定する必要がありますし、データの順番も上の形式である必要があ りますが、using 修飾子でその順番を操作したり、欠けている列に対する値 を与えたりすることができます。例えば
plot 'file' with errorlines plot 'file' using 1:2:(sqrt($1)) with xerrorlines plot 'file' using 1:2:($1-$3):($1+$3):4:5 with xyerrorlines
最後の例は、相対的な x の誤差と絶対的な y の誤差、というサポートされて いない組合せのデータのファイルに対するもので、using で相対的な誤差か ら絶対的な x の最小値と最大値を生成しています。
y 誤差線は (x, ylow) から (x, yhigh) へ描画される縦線です。ylow, yhigh 代わりに ydelta が指定された場合は、ylow = y - ydelta, yhigh = y + ydelta と扱われます。ある行に 2 つのデータしかない場合、yhigh, ylow は両方と も y になります。x 誤差線は同様の方法で計算される水平線です。
エラーバーの端の刻みの印の見た目は、set errorbars で制御できます。
自動縮尺 (autoscaling) が ON の場合、描画範囲は誤差線が入るように調整 されます。
更なる情報については、以下参照: plot using (89.3.11), plot with (89.12), set style (100.86)。
approx(ang) = ang - ang**3 / (3*2) plot sin(x) title "sin(x)", approx(x) title "approximation"
関数のデフォルトの描画スタイルを設定する方法については、以下参照:set style function (100.86.5)。組み込み関数の情報については、以下参照:expressions functions (16.3)。自前で関数を定義する方法については、以下参照:user-defined (16.7)。
例:
plot sin(t),t**2 splot cos(u)*cos(v),cos(u)*sin(v),sin(u)
データファイルは前と同じように描画されます。ただし、データファイルが 描画のために与えられる前に、任意の媒介変数関数が先に完全に指定された 場合を除いてです。言い換えると、x の媒介変数関数 (上の例では sin(t)) と y の媒介変数関数 (上の例では t**2) との間に、他の修飾子やデータ 関数をはさみこんではいけません。そのようなことをすると、構文エラーにな り、媒介変数関数が完全には指定されていない、と表示されます。
with や title のような他の修飾子は、媒介変数関数の指定が完了した 後に指定しなければいけません。
plot sin(t),t**2 title 'Parametric example' with linespoints
以下も参照 媒介変数モードのデモ。
書式:
[{<dummy-var>=}{{<min>}:{<max>}}] [{{<min>}:{<max>}}]
1 つ目の形式の範囲指定は独立変数の範囲 (xrange、または媒介変数モード での trange) 用で、2 つ目の形式は従属変数の範囲用です。オプションの <dummy-var> で独立変数の新しい名前を利用できます (デフォルトの変数名は set dummy で変更できます)。
媒介変数モード (parametric) でなければ、範囲指定は以下の順に与えなければいけません:
plot [<xrange>][<yrange>][<x2range>][<y2range>] ...
媒介変数モード (parametric) では、範囲指定は以下の順に与えなければいけません:
plot [<trange>][<xrange>][<yrange>][<x2range>][<y2range>] ...
plot [-pi:pi] [-1.3:1.3] [-1:1] sin(t),t**2
* は、min (最小値) や max (最大値) に自動範囲指定 (autoscale) の機能 を使うことを可能にします。指定順番のためだけに必要な範囲指定には、空の 範囲 [] を使ってください。
plot や splot のコマンド行で指定された範囲はそのグラフ一つにのみ影 響を及ぼします。よって、その後のグラフのデフォルトの範囲を変更するには set xrange や set yrange を使用してください。
リンクされた軸に対しては、plot コマンドでの一時的な範囲指定の使用は、 期待する結果を生まないかもしれません (以下参照: set link (100.41))。
時間データに対しては、範囲は、データファイルから読み込むのに使用するの と同じ書式で、引用符で囲んで指定する必要があります。以下参照:set timefmt (100.96)。
例:
以下は現在の範囲を使用します:
plot cos(x)
以下は x の範囲のみの指定です:
plot [-10:30] sin(pi*x)/(pi*x)
以下は上と同じですが、仮変数として t を使います:
plot [t = -10 :30] sin(pi*t)/(pi*t)
以下は x と y の両方の範囲の指定です:
plot [-pi:pi] [-3:3] tan(x), 1/x
以下は、y の範囲のみの指定です:
plot [ ] [-2:sin(5)*-8] sin(x)**besj0(x)
以下は x の最大値と y の最小値のみの指定です。
plot [:200] [-pi:] $mydata using 1:2
以下は x の範囲を時系列データとして指定しています:
set timefmt "%d/%m/%y %H:%M" plot ["1/6/93 12:00":"5/6/93 12:00"] 'timedata.dat'
例:
以下は、x 全体の範囲を 0 から 1000 としてファイルのデータを描画し、2つの関数を全体の範囲の一部分だけそれぞれ描画します:
plot [0:1000] 'datafile', [0:200] func1(x), [200:500] func2(x)
以下は、上とほぼ同様ですが、全体の範囲はデータファイルの内容によって決定します。この場合、標本化される関数は、全体がグラフ内に収まるかもしれ
ませんし、収まらないかもしれません:
set autoscale x plot 'datafile', [0:200] func1(x), [200:500] func2(x)
以下のコマンドにはあいまいさが含まれます。先頭の範囲は、多分最初の関数
の標本化のみに向けたのだと思いますが、実際はそうではなく、すべての描画
要素に適用するように解釈されます:
plot [0:10] f(x), [10:20] g(x), [20:30] h(x)
以下のコマンドは、上の例のあいまいさを除くためにキーワード sample を追加したもので、その範囲指定を plot 全体に適用しないようにしています:
plot sample [0:10] f(x), [10:20] g(x), [20:30] h(x)
以下の例は、3 次元グラフにらせんの曲線を描く一つの方法を提示します:
splot [-2:2][-2:2] sample [h=1:10] '+' using (cos(h)):(sin(h)):(h)
以下は、2 次元の plot コマンドに対する 2 次元サンプリングの例です。
これは、描画スタイル with vectors で表示されるグラフを生成します。
以下参照: vectors (61)。
set urange [ -2.0 : 2.0 ] set vrange [ -2.0 : 2.0 ] plot '++' using ($1):($2):($2*0.4):(-$1*0.4) with vectors
以下は 3 次元の splot コマンドに対する 2 次元サンプリングの例です。
これは、sampling.dem で使用されているものに似たコマンド列です。この
2 つの曲面は、生成されるグラフの範囲全体よりも狭い u, v の範囲で標本
化を行うことに注意してください。
set title "3D sampling range distinct from plot x/y range" set xrange [1:100] set yrange [1:100] splot sample [u=30:70][v=0:50] '++' using 1:2:(u*v) lt 3, \ [u=40:80][v=30:60] '++' using (u):(v):(u*sqrt(v)) lt 4
u, v のサンプリングの範囲指定には、サンプリングデータの数とスペースを
制御する、明示的なサンプリング間隔を入れることもできます:
splot sample [u=30:70:1][v=0:50:5] '++' using 1:2:(func($1,$2))
書式:
plot for [<variable> = <start> : <end> {:<increment>}] plot for [<variable> in "string of words"]
繰り返しの適用範囲 (scope) は、次のコンマ (,) かコマンドの終わり、のい ずれか先に現れたところまでです。ただし、描画する項目の前に定義式 (複数 も可) が並んでいる場合は、コンマが間に入っていてもその例外となります。 繰り返しは媒介変数モード (parametric) では機能しないことに注意してくだ さい。
例:
plot for [j=1:3] sin(j*x)
例:
plot for [dataset in "apples bananas"] dataset."dat" title dataset
この例では、繰り返しはファイル名と対応するタイトルの生成の両方で使われ ています。
例:
file(n) = sprintf("dataset_%d.dat",n) splot for [i=1:10] file(i) title sprintf("dataset %d",i)
この例は、ファイル名で生成される文字列値関数を定義し、そのような 10 個 のファイルを同時に描画します。繰り返しの変数 (この例では 'i') は一つの 整数として扱われ、それを 2 度以上使用できます。
例:
set key left plot for [n=1:4] x**n sprintf("%d",n)
この例は、関数の組を描画します。
例:
list = "apple banana cabbage daikon eggplant" item(n) = word(list,n) plot for [i=1:words(list)] item(i).".dat" title item(i) list = "new stuff" replot
この例では、リストに従って各ステップが進行し、その各項目に対して一つの 描画が行われます。この各項目は動的に取得されますので、そのリストを変更 し、そのまま replot することができます。
例:
list = "apple banana cabbage daikon eggplant" plot for [i in list] i.".dat" title i list = "new stuff" replot
この例は、整数の繰り返し変数ではなく、文字列の繰り返し変数形式を用いて いること以外は前の例と全く同じです。
<end> の整数の代わりに記号 * を使用すれば、繰り返しはすべての有効なデ ータがなくなるまでの繰り返しとなります。これは、各行に含まれるすべての 列の処理、あるいはファイル内のすべてのデータセット (2 行の空行で区切ら れる) の処理、指定に当てはまるすべてのファイルなどを一度に処理するのに 便利です。
例:
plot for [i=2:*] 'datafile' using 1:i with histogram splot for [i=0:*] 'datafile' index i using 1:2:3 with lines plot for [i=1:*] file=sprintf("File_%03d.dat",i) file using 2 title file
書式:
title <text> | notitle [<ignored text>] title columnheader | title columnheader(N) {at {beginning|end}} {{no}enhanced}
ここで <text> は、引用符で囲まれた文字列か、文字列と評価される式のいず れかです。引用符はキーには表示されません。 注意: gnuplot バージョン 5.4 より、<text> が数式や関数である場合、それ は対応する関数や入力データが plot された後に評価します。これにより、 plot 中に計算や入力する量を参照するタイトルを生成できますが、これは以前のバージョンの gnuplot では不可能でした。
入力データの列の最初の項目 (すなわち列の先頭) を文字列フィールドと解釈 し、それをキータイトルとして利用するオプションもあります。以下参照:datastrings (13)。これは、set key autotitle columnhead を指定すればデフ ォルトの挙動となります。
曲線タイトルとサンプルは予約語 notitle を使うことでキーから削除でき ます。何もないタイトル (title ' ') は notitle と同じ意味を持ちます。 サンプルだけが欲しいときは、一つ以上の空白をタイトルの後ろに入れてください (tilte ' ')。notilte の後ろに文字列をつけた場合、その文字列 は無視されます。
key autotitles が設定されて (デフォルト)、かつ title も notitle も指定されなかった場合、曲線のタイトルは plot コマンド上にある関数名 かデータファイル名になります。ファイル名の場合は、指定される任意のデー タファイル修飾子もそのデフォルトタイトルに含まれます。
位置やタイトルの位置揃えなどの凡例のレイアウトは、set key で制御でき ます。
キーワード at により、曲線のタイトルを、自動的に作られる key の箱の 外にでも置くことができるようになります。at {beginning|end} を使用し た場合は、曲線のタイトルをグラフの曲線自身の直前、あるいは直後に置きま す。このオプションは、with lines で描画する場合は有用ですが、他の描 画スタイルでは無意味です。
at <x-position>,<y-position> の形式を使用すれば、曲線のタイトルをペ ージ内の任意の位置に置くことができます。デフォルトでは、その位置指定は スクリーン座標と解釈します。例えば at 0.5, 0.5 は、グラフの軸に縮尺 や境界には関係なく、常にスクリーンのど真ん中を意味します。この方法で配 置するタイトルの書式は、key のオプション指定の影響を受けます。以下参照:set key (100.38)。
例:
以下は y=x をタイトル 'x' で表示します:
plot x
以下は、x の 2 乗をタイトル "x^
2" で、ファイル "data.1" をタイトル"measured data" で表示します:
plot x**2 title "x^2", 'data.1' t "measured data"
以下は、ファイルの先頭行の各列にタイトルを含む複数列のデータを描画します。各タイトルは、独立した凡例ではなく、対応する曲線の後ろに置きます:
unset key set offset 0, graph 0.1 plot for [i=1:4] 'data' using i with lines title columnhead at end
以下は、2 つの別々のグラフの key の場所を 1 箇所にします:
set key Left reverse set multiplot layout 2,2 plot sin(x) with points pt 6 title "Left plot is sin(x)" at 0.5, 0.30 plot cos(x) with points pt 7 title "Right plot is cos(x)" at 0.5, 0.27 unset multiplot
書式:
with <style> { {linestyle | ls <line_style>} | {{linetype | lt <line_type>} {linewidth | lw <line_width>} {linecolor | lc <colorspec>} {pointtype | pt <point_type>} {pointsize | ps <point_size>} {arrowstyle | as <arrowstyle_index>} {fill | fs <fillstyle>} {fillcolor | fc <colorspec>} {nohidden3d} {nocontours} {nosurface} {palette}} }
ここで、<style> は以下のいずれか:
lines dots steps vectors yerrorlines points impulses fsteps xerrorbar xyerrorbars linespoints labels histeps xerrorlines xyerrorlines financebars surface arrows yerrorbar parallelaxes
boxes boxplot ellipses histograms rgbalpha boxerrorbars candlesticks filledcurves image rgbimage boxxyerror circles fillsteps pm3d polygons isosurface zerrorfill
table
最初のグループのスタイルは、線、点、文字の属性を持ち、第 2 のグループ のスタイルは、さらに塗り潰し属性も持っています。以下参照: fillstyle (100.86.4)。 さらにサブスタイルを持つスタイルもあります。個々のスタイルの詳細につい ては、以下参照: plotting styles (II)。 スタイル table は、グラフの代わりに表形式の出力を生成します。以下参照: set table (100.88)。
デフォルトのスタイルは、set style function と set style data で選 択できます。
デフォルトでは、それぞれの関数やデータファイルは、使うことができる型の 最大数に達するまで異なる線種、点種を使います。すべての端末用ドライバは 最低 6 つの異なる点種をサポートしていて、もしたくさん要求された場合、 それらを順に再利用していきます。使用中の出力形式での線種、点種の集合全 体を見たければ、test としてください。
一つの描画で線種や点種を選びたいならば、<line_type> や <point_type> を 指定してください。これらの値は、その描画で使われる線種や点種を指定する 正の整定数 (または数式) です。使用する端末で使える線種、点種を表示する には test コマンドを使ってください。
描画の線の幅や点の大きさは <line_width> や <point_size> で変更できます。 これらはその各々の端末のデフォルトの値に対する相対的な値として指定しま す。点の大きさは全体に通用するように変更できます。詳細は、以下参照:set pointsize (100.73)。しかし、ここでセットされる <point_size> と、 set pointsize でセットされる大きさは、いずれもデフォルトのポイントサ イズに掛けられることに注意してください。すなわち、それらの効果は累積は しません。例えば、set pointsize 2; plot x w p ps 3 は、デフォルトの サイズの 3 倍であって、6 倍ではありません。
ラインスタイルの一部分、あるいは各 plot において pointsize variable という指定も可能です。この場合、入力には追加の 1 列が要求されます。例 えば 2D 描画では 3 列、3D 描画では 4 列のデータが必要になります。個々 の点のサイズは、全体を通しての pointsize に、データファイルからの入力 による値をかけたものとして決定されます。
set style line を使って線種/線幅、点種/点幅の組を定義すれば、そのス タイルの番号を <line_style> にセットすることでそれらを使うことができま す。
2 次元、3 次元両方の描画で (plot と splot コマンド)、事前にコマン ド set palette で設定した滑らかなパレットからの色を使えます。色の値 は、点の z 座標の値か、または using によるオプションの追加列で与える 個別の色座標に対応します。色の値は、小数値 (palette frac) か、または カラーボックスの範囲へ対応づけられた座標値 (palette か palette z) のいずれかで指定できます。以下参照: colorspec (21.1), set palette (100.66),linetype (100.40)。
キーワード nohidden3d は、splot コマンドで生成される描画にのみ適用 されます。通常、グローバルなオプション set hidden3d はグラフ上の全て の描画に適用されますが、各々の描画に nohidden3d オプションをつけるこ とで、それを hidden3d の処理から除外することができます。nohidden3d がマークされた曲面以外の個々の描画要素 (線分、点、ラベル等) は、通常は 他の何らかの描画要素で隠されてしまう場合も全て描画されます。
同様に、キーワード nocontours は、グローバルに set contour 指定が 有効な場合でも、個別の plot に対する等高線描画機能をオフにします。
同様に、キーワード nosurface は、グローバルに set surface 指定が有 効な場合でも、個別の plot に対する 3 次元曲面描画をオフにします。
キーワードは暗示するような形で省略可能です。
linewidth, pointsize, palette オプションは全ての端末装置でサポー トされているわけではないことに注意してください。
例:
以下は、sin(x) を鉛直線で描画します:
plot sin(x) with impulses
以下は、x を点で描画し、x**2 をデフォルトの方式で描画します:
plot x w points, x**2
以下は、tan(x) を関数のデフォルトの方式で、"data.1" を折れ線で描画します:
plot [ ] [-2:5] tan(x), 'data.1' with l
以下は、"leastsq.dat" を鉛直線で描画します:
plot 'leastsq.dat' w i
以下は、データファイル "population" を矩形で描画します:
plot 'population' with boxes
以下は、"exper.dat" をエラーバー付きの折れ線で描画します (エラーバーは3 列、あるいは 4 列のデータを必要とします):
plot 'exper.dat' w lines, 'exper.dat' notitle w errorbars
もう一つの "exper.dat" のエラーバー付きの折れ線 (errorlines) での描画
方法 (エラーバーは 3 列、あるいは 4 列のデータが必要):
plot 'exper.dat' w errorlines
以下は、sin(x) と cos(x) をマーカー付きの折れ線で描画します。折れ線は
同じ線種ですが、マーカーは異なったものを使います:
plot sin(x) with linesp lt 1 pt 3, cos(x) with linesp lt 1 pt 4
以下は、"data" を点種 3 で、点の大きさを通常の 2 倍で描画します:
plot 'data' with points pointtype 3 pointsize 2
以下は、"data" を描画しますが、4 列目から読んだデータを pointsize の値として使用します:
plot 'data' using 1:2:4 with points pt 5 pointsize variable
以下は、2 つのデータ集合に対して、幅のみ異なる線を用いて描画します:
plot 'd1' t "good" w l lt 2 lw 3, 'd2' t "bad" w l lt 2 lw 1
以下は、x*x の曲線の内部の塗りつぶしと色の帯を描画します:
plot x*x with filledcurve closed, 40 with filledcurve y=10
以下は、x*x の曲線と色の箱を描画します:
plot x*x, (x>=-5 && x<=5 ? 40 : 1/0) with filledcurve y=10 lt 8
以下は、滑らかに変化する色の線で曲面を描画します:
splot x*x-y*y with line palette
以下は、2 つの色のついた曲面を、異なる高さで表示します:
splot x*x-y*y with pm3d, x*x+y*y with pm3d at t
print <式> {, <式>, ...}
print コマンドは、1 つ、または複数の式の値を出力します。出力は、以前のコマンド set print でリダイレクトされていない限り、画面へ行われます。以下参照: expressions (16)。以下も参照: printerr (91)。
<式> は、gnuplot で有効な任意の式で、数値でも、文字列定数でも、数字や 文字列を返す関数でも、配列でも、または変数名でも入れることができます。 データブロックを出力することも可能です。print に sprintf や gprintf 関数を組み合わせて、さらに柔軟な書式の出力を行うことも可能です。
例:
print 123 + 456 print sinh(pi/2) print "rms of residuals (FIT_STDFIT) is ", FIT_STDFIT print sprintf("rms of residuals is %.3f after fit.", FIT_STDFIT) print $DATA
カレントディレクトリを文字列変数に保存したり、文字式の中で使いたい場合 は、変数 GPVAL_PWD を使うことができることに注意してください。以下参照:show variables all (100.102)。
raise {plot_window_id} lower {plot_window_id}
コマンド raise と lower は、出力形式のいくつかにしか機能せず、そし
てあなたが使用するウィンドウマネージャや表示優先機能の設定にも依存する
可能性があります。
set term wxt 123 # 最初の描画ウィンドウを生成 plot $FOO lower # 存在する描画ウィンドウのみを下に set term wxt 456 # 2 つ目を生成 (1 つ目の上にかぶる) plot $BAZ raise 123 # 1 つ目の描画ウィンドウを上に
マウス操作、特にズームインとズームアウトでは、適切な場合は replot の 代わりにむしろ refresh を使用します。例:
plot 'datafile' volatile with lines, '-' with labels 100 200 "Special point" e # 色んなマウス操作をここで実行 set title "Zoomed in view" set term post set output 'zoom.ps' refresh
replot コマンドに対する引数は最後に実行した plot または splot コマンドの引数に (暗黙の ',' と共に) 追加され、それから再実行されます。 replot は、範囲 (range) を除いては、plot や splot と同じ引数を とることができます。よって、直前のコマンドが splot ではなく plot の場合は、関数をもう一つの軸刻みでプロットするのに replot を使うこと ができます。
注意:
plot '-' ; ... ; replot
という使い方は推奨されません。それは、これがあなたに再び同じデータすべ ての入力を要求することになるからです。たいていの場合、代わりにコマンド refresh を使えます。これは、以前に読み込んだデータを使ってグラフを再描画します。
multiplot モードでは、replot コマンドはすべての plot ではなく、直 前の plot 部分だけしか再実行しないことに注意してください。
最後に実行した plot (splot) コマンドの内容を修正する方法については 以下も参照: command-line-editing (10)。
直前の描画コマンドの全体を表示させることや、それを history の中に コピーする方法については、以下も参照: show plot (100.70)。
明示的な繰り返し (iteration) を支持し、このコマンドは非推奨とします。 以下参照: iterate (20)。 reread コマンドは、load コマンドで指定した gnuplot のコマンドフ ァイルを、その次のコマンドが読まれる前に、開始点に再設定します。これは、 コマンドファイルの最初から reread コマンドまでのコマンドの無限ループ を本質的に実装していることになります。対話型の入力 (標準入力から) の際 は、reread コマンドは何の効力も持ちません。
reset {bind | errors | session}
コマンド reset は、set コマンドで定義できる、グラフに関する全ての オプションをデフォルトの値に戻します。このコマンドは、load したコマン ドファイルを実行した後でデフォルトの設定を復帰したり、設定をたくさん変 更した後で元の状態に戻したいときなどに便利です。
以下のものは、reset の影響を受けません:
`set term` `set output` `set loadpath` `set linetype` `set fit` `set encoding` `set decimalsign` `set locale` `set psdir` `set overflow` `set multiplot`
reset は、必ずしもプログラム立ち上がった初期状態には戻さないことに注 意してください。それは、初期設定ファイル gnuplotrc や $HOME/.gnuplot 内のコマンドでデフォルトの値を変更した場合は、それもリセットされてしま うからです。しかし reset session とすれば、それらのコマンドも再実行 します。
reset session は、ユーザ定義変数、ユーザ定義関数すべてを削除し、デフ ォルトの設定を復帰し、システム全体の初期設定ファイル gnuplotrc と個人 用の初期設ファイル $HOME/.gnuplot を再実行します。以下参照:initialization (27)。
reset errors は、エラー状態変数 GPVAL_ERRNO と GPVAL_ERRMSG のみをク リアします。
reset bind は、キー定義をデフォルトの状態に復帰します。
save {functions | variables | terminal | set | fit} '<filename>'
どれも指定しなかった場合は、gnuplot は、ユーザ定義関数、変数、set で 設定するオプション、最後に実行した plot (または splot) コマンドの 全てを保存します。
save は、テキスト形式で出力します。また、このファイルは load コマ ンドで読み込むことができます。set オプション付き、または何もオプショ ンをつけずに save を実行した場合、terminal の選択と output のフ ァイル名はコメント記号つきで書き出されます。これはその出力ファイルを 他の環境にインストールされた gnuplot 上で動かす場合に、修正なしに使え るようにする、あるいはうっかりファイルを上書きしてしまったりする危険性 を避ける、といった意味があります。
save terminal は、terminal の状態を、コメント記号をつけずに書き出 します。これは主に、ちょっとの間だけ terminal の設定を入れ替え、その 後保存しておいた terminal の状態を読み込むことで以前の terminal の設定に戻す場合などに役立ちます。ただ、単一の gnuplot セッションでは、現 在の terminal を保存/復元する他の方法であるコマンド set term push と set term pop を使う方がむしろいいかもしれません。以下参照:set term (100.89)。
save fit は、直近の fit コマンドで使用した変数のみを保存します。そ の保存ファイルは、後で via キーワードを使うことで fit コマンドの初期 化用のパラメータファイルとして利用できます。
ファイル名は引用符に囲われていなければなりません。
特別なファイル名 "-" により save コマンドに標準出力に出力させること ができます。popen 関数をサポートするようなシステム (Unix など) では、 save の出力をパイプ経由で他の外部プログラムに渡すことができます。その 場合、ファイル名としてコマンド名の先頭に '|' をつけたものを使います。 これは、gnuplot とパイプを通して通信するプログラムに、gnuplot の内 部設定に関する首尾一貫したインターフェースを提供します。詳細は、以下参照: batch/interactive (8)。
例:
save 'work.gnu' save functions 'func.dat' save var 'var.dat' save set 'options.dat' save term 'myterm.gnu' save '-' save '|grep title >t.gp'
show コマンドはそれらの設定値を表示します。show all でそれら全て を表示します。
set コマンドで変更されたオプションは、それに対応する unset コマン ドを実行することでデフォルトの状態に戻すことができます。以下も参照:reset (98)。これは全てのパラメータの設定をデフォルトの値に戻します。
set と unset コマンドには繰り返し節も利用できます。以下参照:plot for (89.10)。
書式:
set angles {degrees | radians} show angles
set grid polar で指定される角度も、set angles で指定した単位で読まれ 表示されます。
set angles は組み込み関数 sin(x), cos(x), tan(x) の引数や asin(x), acos(x), atan8x), atan2(x), arg(x) の出力にも影響を与えます。双曲線関 数や、ベッセル関数の引数には影響を与えません。しかし、複素数を引数とす る逆双曲線関数の出力には影響が出ます。それらの関数が使われるときは、 set angles radians は入出力の引数の間に一貫性を持った管理を実現して いなければなりません。
x={1.0,0.1} set angles radians y=sinh(x) print y #{1.16933, 0.154051} と表示 print asinh(y) #{1.0, 0.1} と表示
set angles degrees y=sinh(x) print y #{1.16933, 0.154051} と表示 print asinh(y) #{57.29578, 5.729578} と表示
書式:
set arrow {<tag>} from <position> to <position> set arrow {<tag>} from <position> rto <position> set arrow {<tag>} from <position> length <coord> angle <ang> set arrow <tag> arrowstyle | as <arrow_style> set arrow <tag> {nohead | head | backhead | heads} {size <headlength>,<headangle>{,<backangle>}} {fixed} {filled | empty | nofilled | noborder} {front | back} {linestyle | ls <line_style>} {linetype | lt <line_type>} {linewidth | lw <line_width>} {linecolor | lc <colorspec>} {dashtype | dt <dashtype>}
unset arrow {<tag>} show arrow {<tag>}
タグ <tag> は各矢印を識別する整数です。タグを指定しない場合は、その時 点で未使用の最も小さい数が自動的に割り当てられます。タグを使うことで、 特定の矢印を変更したり、削除したりできます。既に存在する矢印の属性を変 更する場合は、タグを明示した set arrow コマンドで変更箇所を指定して ください。
矢印の最初の端点の位置は、常に "from" で指定しますが、もう一つの端点は 以下で説明する 3 つの異なる仕組みのいずれかで指定できます。<position> は x,y あるいは x,y,z で指定します。そしてその前に座標系を選択するた めに first, second, graph, screen, character を置くことがで きます。座標を指定しなければデフォルトでは 0 と見なされます。詳細は以下参照: coordinates (12)。最初の端点に対する座標指定子は、2 番目の端点に は影響しません。
1) "to <position>" は、もう一つの端点の絶対座標を指定します。
2) "rto <position>" は、"from" の位置からのずれを指定します。この場合、 線形軸 (非対数軸)、および graph, screen 座標に対しては、始点と終点 の距離が与えられた相対的な値に対応します。一方、対数軸に対しては、与え られた相対的な値は、始点から終点への倍数に対応します。よって、対数軸の 場合、相対的な値として 0 や負の値を与えることは許されません。
3) "length <coordinate> angle <angle>" は、グラフ平面内での矢印の方向 を指定します。length には任意の座標系を適用できます。angle の単位は常 に度になっています。
矢印の他の属性も、あらかじめ定義した矢のスタイルで、またはコマンド set arrow でそれぞれ与えることが可能です。矢印の他の属性の詳細につい ては以下参照: arrowstyle (100.86.1)。
例:
原点から (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
2 番の矢印を消すには:
unset arrow 2
全ての矢印を消すには:
unset arrow
全ての矢印の情報を (タグの順に) 見るには:
show arrow
書式:
set autoscale {<axis>{|min|max|fixmin|fixmax|fix} | fix | keepfix} set autoscale noextend unset autoscale {<axis>} show autoscale
ここで、<axs> (軸) は x, y, z, cb, x2, y2, xy, paxis <p> のいずれかです。軸名の後ろに min または max を追加する と、それは gnuplot にその軸の最小値、または最大値のみを自動縮尺させ ることになります。
軸名を指定しない場合は、全ての軸が自動縮尺の対象となります。
独立変数軸 (plot のときは x 軸、splot のときは x,y 軸) の自動縮尺 機能は、描画されるデータに合うようにそれらの軸の範囲を調整します。描画 が関数のみ (入力データなし) の場合、これらの軸の自動縮尺機能は、なんの 効果も持ちません。
従属変数軸 (plot のときは y 軸、splot のときは z 軸) の自動縮尺機 能は、描画されるデータや関数に合うようにそれらの軸の範囲を調整します。
軸の範囲の調整は、次の目盛り刻みへの延長を行うことがあります。例えば、 端のデータの座標が目盛り刻みに丁度一致する場合、データと描画境界との間 には何もないスペースができることになります。noextend を使うことで、 この余計なスペースの作成を抑制できます。コマンド set offset を使うこ とで、それをより増やすこともできます。さらなる情報については、以下参照:set xrange (100.122), set offsets (100.62)。
媒介変数モード (parametric) でも自動縮尺機能は有効です (以下参照:set parametric (100.67))。この場合、より多くの従属変数があるので、x, y, z 各軸に関して、より多くの制御が行われます。媒介変数モードでの独立変数 (仮 変数) は plot では t で splot では u, v です。そして媒介変数モード では、自動縮尺機能は (t, u, v, x, y, z) の全ての描画範囲を制御し、x, y, z の範囲の自動設定を完全に行います。
目盛りが第 2 の軸に表示され、しかもこれらの軸に対する描画が行われなか った場合には、x2range と y2range は xrange と yrange の値を受け継ぎま す。これは、範囲のずらしの実行や、範囲を整数個の目盛り幅に自動伸縮する 「前」に行いますので、場合によって予期しない結果をもたらす可能性があり ます。これを避けるのに、第 2 軸の範囲を第 1 軸の範囲に明示的にリンク (link) する方法があります。以下参照: set link (100.41)。
set autoscale noextend
デフォルトでは、自動縮尺機能は軸の範囲の限界を、描画データ全体を含む、
最も近い目盛りラベル位置に設定します。キーワード fixmin, fixmax,
fix, noextend は、次の目盛り位置までの範囲の自動拡大を gnuplot に
行わせないようにします。その場合軸の範囲の限界は、一番端にあるデータ点
の座標値に完全に一致します。set autoscale noextend は、
set autscale fix と同じです。軸の範囲指定コマンドの後ろにキーワード
noextend を追加すれば、一つの軸の範囲の延長機能だけ無効にすることも
できます。例:
set yrange [0:*] noextend
set autoscale keepfix は、fix の設定を変更せずに残したまま、すべての 軸を自動縮尺にします。
以下は y 軸の自動縮尺機能を指定します (他の軸には影響を与えません):
set autoscale y
以下は y 軸の最小値に対してのみ自動縮尺機能を指定します (y 軸の最大値、および他の軸には影響を与えません):
set autoscale ymin
以下は x2 軸の隣の目盛りへの自動範囲拡大機能を無効にし、よって描画データ内、または関数に対する丁度の描画範囲を維持します:
set autoscale x2fixmin set autoscale x2fixmax
以下は x, y 両軸の自動縮尺機能を指定します:
set autoscale xy
以下は x, y, z, x2, y2 全軸の自動縮尺機能を指定します:
set autoscale
以下は x, y, z, x2, y2 全軸の自動縮尺機能を禁止します:
unset autoscale
以下は z 軸のみについて自動縮尺機能を禁止します:
unset autoscale z
以下も参照 極座標のデモ。
書式:
set border {<integer>} {front | back | behind} {linestyle | ls <line_style>} {linetype | lt <line_type>} {linewidth | lw <line_width>} {linecolor | lc <colorspec>} {dashtype | dt <dashtype>} {polar} unset border show border
set view 56,103 のように任意の方向で表示されうる splot では、 x-y 平面上の 4 つの角は 手前 (front), 後ろ (back) , 左 (left), 右 (right) のように呼ばれます。もちろんこの同じ 4 つの角は天井の面にも あります。よって、例えば x-y 平面上の後ろと右の角をつなぐ境界を "底の右後ろ (bottom right back)" と言い、底と天井の手前の角をつなぐ境 界を "鉛直手前 (front vertical)" と呼ぶことにします (この命名法は、読 者が下の表を理解するためだけに使われます)。
枠は、12 ビットの整数に符号化されています: 下位 4 ビットは plot に対 する外枠、splot に対しては底面の外枠、次の 4 ビットは splot の鉛直 な外枠、そして上位 4 ビットは splot の天井面の外枠を制御します。よっ て外枠の設定は、次の表の対応する項目の数字の和になります:
グラフ境界の符号化 | ||
ビット | plot | splot |
1 | 下 | 底の左手前 |
2 | 左 | 底の左後ろ |
4 | 上 | 底の右手前 |
8 | 右 | 底の右後ろ |
16 | 効果なし | 鉛直左 |
32 | 効果なし | 鉛直後ろ |
64 | 効果なし | 鉛直右 |
128 | 効果なし | 鉛直の手前 |
256 | 効果なし | 天井の左後ろ |
512 | 効果なし | 天井の右後ろ |
1024 | 効果なし | 天井の左手前 |
2048 | 効果なし | 天井の右手前 |
4096 | 極座標系 | 効果なし |
デフォルトの設定値は 31 で、これは plot では 4 方向の外枠全て、 splot では底面の枠線全部と z 軸を描くことを意味します。
2 次元描画では境界はすべての描画要素の一番上に描かれます (front)。 もし境界を描画要素の下に描かせたい場合は、set border back としてくだ さい。
3 次元隠線処理 (hidden3d) 描画では、通常は境界を構成する線も描画要素と 同様に隠線処理の対象になります。set border behind とするとこのデフォ ルトの挙動が変わります。
<linestyle>, <linetype>, <linewidth>, <linecolor>, <dashtype> を指定し て、枠線の描画にそれらを反映させることができます (現在の出力装置がサポ ートするものに限定されます)。 さらに、軸の刻み (tics) を描画する際も、それらを境界線上で描画するか、 軸上で描画するかに関わらず、このラインスタイルを使用します。
plot では、第 2 軸を有効にすることで、下と左以外の境界に目盛りを描くことができます。詳細は、以下参照: xtics (100.123)。
"unset surface; set contour base" などによって splot で底面にのみ 描画する場合、鉛直線や天井はそれらが指定されていても描画されません。
set grid のオプション 'back', 'front', 'layerdefault' でも、描画出力 の境界線を書く順番を制御できます。
キーワード polar は、極座標グラフに円形の境界をつけます。
例:
以下は、デフォルトの枠線を描きます:
set border
以下は、plot では左と下、splot では底面の左手前と左後ろの枠線を描きます:
set border 3
以下は、splot で周りに完全な箱を描きます:
set border 4095
以下は、手前の鉛直面と天井のない箱を描きます:
set border 127+256+512 # または set border 1023-128
以下は、plot に対して上と右枠線のみを描き、それらを軸として目盛りづけします:
unset xtics; unset ytics; set x2tics; set y2tics; set border 12
書式:
set boxwidth {<width>} {absolute|relative} show boxwidth
デフォルトでは、隣り合う棒が接するように各々の棒の幅が広げられます。そ れとは異なるデフォルトの幅を設定するには set boxwidth コマンドを使用 します。relative の場合の幅は、デフォルトの幅に対する比であると解釈 されます。
修飾子 relative を指定しなかった場合、棒の幅 (boxwidth) として指定さ れた明示的な値は、現在の x 軸の単位での数字 (absolute) であると解釈 されます。x 軸が対数軸 (以下参照: set log (100.45)) である場合、boxwidth の値 は実際には x=1 でのみ "絶対的" となり、その物理的な長さが軸全体を通じ て保持されます (すなわち、棒は x 座標の増加にともなって狭くなったりは しません)。対数軸の x 軸の範囲が x=1 から離れている場合は、適切な幅を 見出すには何度か試してみる必要があるかも知れません。
デフォルトの値は、boxes や boxerrorbars スタイルの幅指定用の追加の データ列の明示的な値があればそれによって置き換えられます。4 列のデータ の場合、第 4 列目の値が棒の幅として使われます。ただし、その幅が -2.0 の場合には棒の幅は自動計算されます。詳細は、以下参照: style boxes (35),style boxerrorbars (34)。
棒の幅を自動的にセットするには
set boxwidth
とする、あるいは 4 列のデータに対しては以下のようにします。
set boxwidth -2
plot のキーワード using を使っても同じ効果を得ることができます:
plot 'file' using 1:2:3:4:(-2)
棒の幅を自動的な値の半分にするには
set boxwidth 0.5 relative
棒の幅を絶対的な値 2 にするには
set boxwidth 2 absolute
set colorsequence {default|classic|podo}
set colorsequence default は、出力形式に依存しない 8 色の巡回列を選 択します。以下参照: set linetype (100.40), colors (21)。
set colorsequence classic は、出力形式別にそのドライバが用意する線色の列を選択します。色の種類は、4 色から 100 色超まで幅がありますが、そ の多くは、赤、緑、青、紫、水色、黄色、で始まります。これがバージョン 5 以前のデフォルトの挙動です。
set colorsequence podo は、Wong (2011) [Nature Methods 8:441] で推奨 されている、P 型、D 型 (Protanopia, Deuteranopia) の色弱者が容易に区別 できる 8 色の組を選択します。
いずれの場合でも、色列の長さとその色についてはさらにカスタマイズできま す。以下参照: set linetype (100.40), colors (21)。
set clip {points|one|two|radial} unset clip {points|one|two|radial} show clip
デフォルトの状態:
unset clip points set clip one unset clip two unset clip radial
グラフ領域の境界内に中心があるデータ点は、その点を表す記号のサイズがそ の記号を境界線の外にはみだしてしまうような場合でも、通常は描画します。 set clip points は、2 次元描画でそのような点の中心がグラフ領域内にあ る場合でも、そのような点をクリッピングします (つまり描画しません)。点 の中心がグラフ領域外にあるようなデータ点は、決して描画しません。
unset clip の場合は、線分の一方の端点が描画範囲 (xrange と yrange) の外にあれば、その線分は描画しないようにします。
set clip one の場合は、一方の端点が描画範囲内にあって、かつもう一方 の端点が範囲外にあるような線分の、範囲内に含まれる部分を描画するように gnuplot に指示します。 set clip two は、両方の端点が描画範囲外にある線分の、範囲内の部分を 描画するように gnuplot に指示します。 線分全体が描画範囲外であるような線分は決して描画しません。
set clip radial は、極座標モードでのみ効力を持ちます。これは、線のク リッピングを、set rrange [0:MAX] で確定する円状境界に対して行います。 この仕組みは、set clip {one|two} と組み合わせて使用します。すなわち、 R > RMAX である 2 つの点の間の線が R = RMAX の円によって切り取られる部 分は、clip two と clip radial の両方が設定されている場合のみ描画さ れます。
注意:
* set clip は、描画スタイル lines, linespoints, points, arrows, vectors で生成される点、線分のみに影響します。
* pm3d 曲面や他の中身の詰まったオブジェクトの描画に使用する色長方形 のクリッピングの制御は、set pm3d clipping で行います。デフォルトは、 現在の zrange に対する滑らかなクリッピングです。
* オブジェクトのクリッピングは、個々のオブジェクト (object) の clip か noclip 属性で制御します。
* 現在の gnuplot の版では、極座標モードの "plot with vectors" は、テス トしていませんし、最大半径に対するクリッピングもしません。
set cntrlabel {format "format"} {font "font"} set cntrlabel {start <int>} {interval <int>} set cntrlabel onecolor
set cntrlabel は、凡例内 (デフォルト) か、splot ... with labels の
際のグラフ上の等高線のラベルを制御します。後者の場合、ラベルはラベル記
述属性の pointinterval か pointnumber に従って各等高線に沿って配置
されます。デフォルトではラベルは等高線を構成する 5 番目の線分の上に置
かれ、20 個の線分毎に繰り返されます。このデフォルトは、以下と同じです:
set cntrlabel start 5 interval 20
set contours; splot $FOO with labels point pointinterval -1
凡例 (key) には、等高線ラベルをそれぞれの線種 (linetype) を使用して書 きます。デフォルトでは、線種自身が各等高線のレベルを与えるので、それぞ れに対する別々のラベルが現れます。コマンド set cntrlabel onecolor は すべての等高線を同じ線種で描画するので、凡例には一つのラベルのみを書き ます。このコマンドは、古いコマンド unset clabel を置き換えるものです。
書式:
set cntrparam { { linear | cubicspline | bspline | points <n> | order <n> | levels { <n> | auto {<n>} | discrete <z1> {,<z2>{,<z3>...}} | incremental <start>, <incr> {,<end>} } {{un}sorted} {firstlinetype N} } } show cntrparam
このコマンドは 2 つの機能を持っています。一つは等高線上の点を決めるた めの z の値の設定です。等高線のレベルの数 <n> は整数型の定数式でなけれ ばいけません。<z1>, <z2> ... は実数値の数式です。 もう一つは、個々の等高線の見た目の制御です。
等高線の平滑化を制御するキーワード:
linear, cubicspline, bspline — 近似 (補間) 方法を指定します。 linear ならば、等高線は曲面から得られた値を区分的に直線で結びます。 cubicspline (3 次スプライン) ならば、区分的な直線はいくぶんなめらか な等高線が得られるように補間されますが、多少波打つ可能性があります。 bspline (B-spline) は、より滑らかな曲線を描くことが保証されますが、 これは z の等しい点の位置を近似しているだけです。
points — 最終的には、全ての描画は、区分的な直線で行われます。ここ で指定する数は、bspline または cubicspline での近似に使われる線分 の数を制御します。実際には cubicspline と bspline の区間 (曲線線分) の 数は points と線分の数の積に等しくなります。
order — bspline 近似の次数です。この次数が大きくなるにつれて、等高 線はなめらかになります (もちろん、高次の bspline 曲線になるほど、元の 区分的直線からは離れていきます)。このオプションは bspline モードでの み有効です。指定できる値は、2 (直線) から 10 までの整数です。
等高線レベルの選択を制御するキーワード:
levels auto — これがデフォルトです。<n> は仮のレベルの数であり、実 際のレベルの数は、簡単なラベルを生成するように調節されます。曲面の z 座標が zmin から zman の範囲にあるとき、等高線はその間の dz の整数倍に なるように生成されます。ここで、dz は 10 のあるべき乗の 1, 2, 5 倍、の いずれかです (2 つの目盛りの間を丁度割り切るように)。
levels discrete — 等高線は指定された z = <z1>, <z2> ... に対して生 成されます。指定した個数が等高線のレベルの個数となります。discrete モードでは、set cntrparams levels <n> という指定は常に無視されます。
levels incremental — 等高線は z = <start> から始まり、<increment> ずつ増えて行き限界の個数に達するまで書かれます。<end> はその等高線の数 を決定するのに使いますが、これは後の set cntrparam levels <n> によっ て常に変更されます。z 軸が対数軸の場合、set ztics の場合と同様に、 <increment> は倍数として解釈し、<end> は使用しません。
等高線の線種の割り当てを制御するキーワード:
デフォルトでは、等高線は指定の逆順に生成します (unsorted)。すわなち、 set cntrparam levels increment 0, 10, 100 は、100 から始まって、0 で 終わる 11 本の等高線を作ります。キーワード sorted を追加すると、数値 の増加方向の順の生成に変更し、例えば今の例では、最初に 0 の等高線を書 くようになります。
デフォルトでは、等高線は、対応する曲面に使用した線種の、次からの線種列 で描きます。すなわち、splot x*y lt 5 の最初の等高線は線種 6 です。 hidden3d モードが有効な場合、各曲面には 2 つの線種を使うので、デフォ ルトの設定では、最初の等高線と曲面の裏面の描画に同じ線種を使ってしまい ますが、これは望ましくありません。これを避けるには、以下の 2 つの方法があります。 (1) set hidden3d offset N により、曲面の裏面の線種を変更すること。 offset -1 とするのがいいですが、これならすべての等高線の線種とぶつか りません。 (2) オプション set cntrparam firstlinetype N により、曲面で使用する 線種とは独立な、等高線で使用する線種群を指定すること。これは、特に等高 線の線種をカスタマイズしたい場合には有用でしょう。N <= 0 の場合はデフ ォルトに戻ります。
コマンド set cntrparam を引数無しで使用すると、指定したすべてのオプ
ション値をデフォルトにリセットします。
set cntrparam order 4 points 5 set cntrparam levels auto 5 unsorted set cntrparam firstlinetype 0
set cntrparam bspline set cntrparam points 7 set cntrparam order 10
以下はレベルの基準が合えば 5 個のレベルがに自動的に選択されます:
set cntrparam levels auto 5
以下は .1, .37, .9 にレベルを設定します:
set cntrparam levels discrete .1,1/exp(1),.9
以下は 0 から 4 まで、1 ずつ増やすレベルを設定します:
set cntrparam levels incremental 0,1,4
以下はレベルの数を 10 に設定します (増加の最後の値 (end) または自動で
設定されるレベルの数は変更されます):
set cntrparam levels 10
以下はレベルの数は保持したままレベルの開始値と増分値を設定します:
set cntrparam levels incremental 100,50
以下はカスタマイズした等高線の線種群を定義し、使用します:
set linetype 100 lc "red" dt '....' do for [L=101:199] { if (L%10 == 0) { set linetype L lc "black" dt solid lw 2 } else { set linetype L lc "gray" dt solid lw 1 } } set cntrparam firstlinetype 100 set cntrparam sorted levels incremental 0, 1, 100
等高線を描く場所の制御に関しては、以下参照: set contour (100.17)。等高線のラ ベルの書式と線種の制御に関しては、以下参照: set cntrlabel (100.13)。
以下も参照してください。 等高線のデモ (contours.dem)
および ユーザ定義レベルの等高線のデモ (discrete.dem).
色の一覧表、すなわち pm3d の palette の min_z から max_z までの滑 らかなグラデーションは、unset colorbox が使われていない限りカラーボ ックス (colorbox) に描かれます。
set colorbox set colorbox { { vertical | horizontal } {{no}invert} { default | user } { origin x, y } { size x, y } { front | back } { noborder | bdefault | border [line style] } } show colorbox unset colorbox
カラーボックスの位置は、default または user で指定でき、後者の場合 その位置や大きさを origin や size コマンドで設定します。カラーボッ クスは、グラフや曲面の後 (front) あるいは先 (back) に描画させるこ ともできます。
グラデーションの方向は、オプション vertical と horizontal で切替え ることが可能です。
origin x, y と size x, y は user オプションとの組でのみ使用され
ます。x, y の値は、デフォルトではスクリーン座標と解釈されますが、これ
は 3 次元描画用のかしこまったオプションに過ぎません。set view map に
よる splot を含む 2 次元描画では、任意の座標系での指定が可能です。例え
ば以下を試してみてください:
set colorbox horiz user origin .1,.02 size .8,.04
border は境界描画を ON にします (デフォルト) し、noborder は境界描
画を OFF にします。border の後ろに正の整数を与えると、それを境界を描
画する時の line style のタグとして使います。例えば:
set style line 2604 linetype -1 linewidth .4 set colorbox border 2604
カラーボックスの軸は cb と呼ばれ、通常の軸のコマンドで制御されます。 すなわち set/unset/show で cbrange, [m]cbtics, format cb, grid [m]cb, cblabel などが、そして多分 cbdata, [no]cbdtics, [no]cbmtics なども使えるでしょう。
パラメータ無しの set colorbox はデフォルトの位置へ切替えます。 unset colorbox はカラーボックスのパラメータをデフォルト値にリセット し、その上でカラーボックスを OFF にします。
以下も参照: set pm3d (100.71), set palette (100.66), x11 pm3d (113.69.6), set style line (100.86.7)。
set style line 1 linecolor "sea-green"
書式:
set contour {base | surface | both} unset contour show contour
これらの 3 つのオプションは等高線をどこに引くかを指定します。base で は等高線を x/y 軸の刻みのある底面に描かれ、surface では等高線はその 曲面自体の上に描かれ、both では底面と曲面上の両方に描かれます。オプ ションが指定されていない場合は base であると仮定されます。
等高線の描画に影響を与えるパラメータについては、以下参照:set cntrparam (100.14)。等高線のラベルの制御に関しては、以下参照:set cntrlabel (100.13)。
等高線のみのグラフを得るために、曲面自身の描画をしないようにすることも できます (以下参照: unset surface (100.87))。set size を使って、グラフを画 面一杯に描画することも可能ですが、そういった出力形式よりも、等高線のデ ータをデータブロックに書き出し、それを再び 2 次元データとして読み込ん で描画すればよりよい制御が可能になります:
unset surface set contour set cntrparam ... set table $datablock splot ... unset table # 等高線の情報は今 $datablock の中にある set term <whatever> plot $datablock
等高線を描くためには、データは格子状データ ("grid data") である必要が あります。そのようなファイルでは、一つの y-孤立線上の全ての点が順に 並べられていきます。そして隣の y-孤立線上の点が順に並べられ、そして隣、 と続いていきます。y-孤立線同士を分離するには一行の空行 (空白、復帰、改 行以外の文字を含まない行) を挟みます。
set contour が有効な場合、splot with <style> で points, lines, impulses, labels 等の描画要素を等高線に沿って配置できます。with pm3d は、pm3d 曲面を生成し、さらに等高線も書きます。 set contour が有効な際に生成する等高線に、ファイルから読み込んだラベ ルなどのその他の描画要素も混ぜたい場合は、splot コマンド内のその命令の 後ろにキーワード nocontours を追加しないといけません。
以下参照: splot datafile (102.1)。
以下も参照してください。 等高線のデモ (contours.dem)
および ユーザ定義レベルの等高線のデモ (discrete.dem).
set dashtype 5 (2,4,2,6) # 5 番の dashtype を定義または再定義 plot f1(x) dt 5 # その dashtype を使って plot plot f1(x) dt (2,4,2,6) # 上と全く同じグラフ set linetype 5 dt 5 # このパターンを linetype 5 で常に使う set dashtype 66 "..-" # 文字列で新しい dashtype を定義
set datafile missing "<string>" set datafile missing NaN show datafile missing unset datafile
コマンド set datafile missing は、入力データファイル中で欠損データを 記述する特別な文字列があることを gnuplot に指示します。missing に 関するデフォルト値 (文字) はありません。gnuplot は「欠損データ」と「無 効な値」(例えば "NaN" や 1/0) を区別します。例えば、連続するデータ点に 対するグラフの折れ線描画は、無効な値によってそこで切れますが、欠損デー タの場合はそうではありません。
数値が期待される場面で数値ではない文字が現れた場合は、それが missing で指定する文字列にマッチする場合を除いて、通常欠損データではなく、無効 な値として解釈します。
逆に、set datafile missing NaN とすると、数式やデータ中の数値ではな い値 (NaN) はすべて欠損データとして扱います。
以下の例で、gnuplot バージョン 4 とバージョン 5 での違いを示します。
set style data linespoints plot '-' title "(a)" 1 10 2 20 3 ? 4 40 5 50 e set datafile missing "?" plot '-' title "(b)" 1 10 2 20 3 ? 4 40 5 50 e plot '-' using 1:2 title "(c)" 1 10 2 20 3 NaN 4 40 5 50 e plot '-' using 1:($2) title "(d)" 1 10 2 20 3 NaN 4 40 5 50 e
(a) のグラフは、3 行目には有効な値がひとつしかないため、gnuplot 4 と gnuplot 5 で違いがあります。バージョン 4 では、そこに 1 行に 1 つしか データがなかった場合の規則を適用し、行番号を "x" に、データを "y" と見 なし、誤ってその点を (2,3) に描画していました。
文字 '?' が欠損データを意味するものとして指定されている (b) では、古い 版の gnuplot でも新しい版でも同じデータを正しく処理します。
(c), (d) のグラフに見られるように、古い gnuplot では NaN を using の指 定の仕方によって異なった処理をしていました。現在は、gnuplot は入力列と して N と指定されていても ($N) と指定されていても NaN に対しては同じ処 理を行います。以下のデモも参照してください。 imageNaN デモ。
同様に、plot コマンドで using N、using ($N)、using (func($N)) の いずれを使う場合でも、gnuplot 5.4 は列 N に欠損値フラグを通知します。 しかし、「欠損値」がかなり複雑な数式の評価中に出てきた場合、例えば using (column(strcol(1)) などの場合は、それを NaN と評価し、欠損デー タ点ではなく不正データとして取り扱う可能性があります。その場合でもこれ を欠損値として扱いたければ、コマンド set datafile missing NaN を使用 してください。
書式:
set datafile separator {whitespace | tab | comma | "<chars>"}
例:
# タブ区切りのファイルを入力 set datafile separator "\t"
# コンマ区切りのファイルを入力 set datafile separator comma
# 入力ファイルが * か | のいずれかで区切られた列を持つ場合 set datafile separator "*|"
書式:
set datafile commentschars {"<string>"} show datafile commentschars unset commentschars
よって、データファイルの以下の行は完全に無視されます:
# 1 2 3 4
1 # 3 4
例:
set datafile commentschars "#!%"
書式:
set datafile binary <binary list> show datafile binary show datafile unset datafile
例:
set datafile binary filetype=auto set datafile binary array=(512,512) format="%uchar"
show datafile binary # 現在の設定の一覧表示
書式:
set decimalsign {<value> | locale {"<locale>"}} unset decimalsign show decimalsign
引数 <value> は、通常の小数点記号に置き換えて使う文字列です。典型的な ものはピリオド '.' やコンマ ',' ですが他にも有用なものがあるでしょう。 引数 <value> を省略すると、小数点の区切りはデフォルト (ピリオド) から 変更されません。unset decimalsign も <value> を省略するのと同じ効果を 持ちます。
例:
多くのヨーロッパ諸国での正しい出力形式を得るには:
set decimalsign ','
次のことに注意してください: 明示的な文字列を設定した場合、これは軸の目 盛りなどの gnuplot の gprintf() 書式関数で出力される数値のみに影響し、 入力データの書式指定や sprintf() 書式関数で出力される数値には影響しま せん。それらの入力や出力の形式の挙動も変更したい場合は、代わりに以下を使用してください:
set decimalsign locale
これは、gnuplot に、入力と出力の書式を、環境変数 LC_ALL, LC_NUMERIC, LANG の現在の設定に従ったものを使わせるようにします。
set decimalsign locale "foo"
これは、gnuplot に、入力と出力の書式を、ロケール "foo" に従ったものに しますが、そのロケールがインストールされている必要があります。もしロケ ール "foo" が見つからなかった場合、エラーメッセージが出力され、小数点 の設定は変更されません。linux システム上では、そこにインストールされて いるロケールの一覧は "locale -a" で見ることができます。linux のロケー ル文字列はだいたい "sl_SI.UTF-8" のような形式をしていますが、Windows のロケール文字列は "Slovenian_Slovenia.1250"、または "slovenian" のよ うな形式です。ロケール文字列の解釈は、C のランタイムライブラリが行うこ とに注意してください。古い C ライブラリでは、ロケール設定のサポート (例えば数字の 3 桁毎の区切り文字など) を部分的にしか提供していないかも しれません。
set decimalsign locale; set decimalsign "."
これは、現在のロケールに合ったどんな小数点でも、全ての入出力に対して使 用するように設定しますが、gnuplot の内部関数 gprintf() を使って書式化 する数値は明示的に指定された '.' になります (上書き)。
書式:
set dgrid3d {<rows>} {,{<cols>}} { splines | qnorm {<norm>} | (gauss | cauchy | exp | box | hann) {kdensity} {<dx>} {,<dy>} } unset dgrid3d show dgrid3d
デフォルトでは dgrid3d は無効になっています。有効になると、ファイル から読み込まれる 3 次元のデータは「散在した」データ (非格子状データ) であると見なされます。格子は、グラフと等高線の描画のために、散在したデ ータを囲む矩形から得られる寸法と、row_size/col_size で指定される数の行 と列を持つように生成されます。格子は x 方向 (行) と y 方向 (列) に等間 隔です。z の値は散在するデータの z の値の重み付きの平均、またはスプラ イン補間として計算されます。言い変えれば、規則的な間隔の格子が生成され、 全ての格子点で元のデータの滑かな近似値が評価されます。元のデータの代わ りにこの近似値が描画されます。
デフォルトの列の数は行の数に等しく、そのデフォルトの値は 10 です。
元のデータから近似値を計算するためのいくつかのアルゴリズムが用意されて いて、追加のパラメータを指定できるものもあります。これらの補間は、格子 点に近いデータ点ほど、その格子点に対してより強い影響を与えます。
splines アルゴリズムは、薄いつぎ板を元にした補間計算を行います。これ は追加パラメータを取りません。
qnorm アルゴリズムは各格子点で入力データの重み付き平均を計算します。 各点には、格子点からの距離の逆数のあるベキ乗で重み付けします。そのベキ は追加パラメータの整数値として指定できますが、デフォルトは 1 です。 このアルゴリズムがデフォルトになっています。
最後に、重み付き平均の計算用に、いくつかの平滑化重み付け関数 (kernel) が用意されています: z = Sum_i w(d_i) * z_i / Sum_i w(d_i), ここで z_i は i 番目のデータの値で、d_i は現在の格子点と i 番目のデータ点の位置と の距離です。すべての重み付け関数が、現在の格子点に近い方のデータ点には 大きな重み、遠い方のデータ点には小さい重みを付けます。
以下の重み付け関数が使用できます:
gauss : w(d) = exp(-d*d) cauchy : w(d) = 1/(1 + d*d) exp : w(d) = exp(-d) box : w(d) = 1 d<1 の場合 = 0 その他 hann : w(d) = 0.5*(1+cos(pi*d)) d<1 の場合 w(d) = 0 その他
これら 5 つの平滑化重み付け関数のうち一つを使用する場合、2 つまでの追 加パラメータ dx と dy を指定できます。これらは、距離の計算時に座標の違 いをスケール変換するのに使えます: d_i = sqrt( ((x-x_i)/dx)**2 + ((y-y_i)/dy)**2 ), ここで、x,y は現在の 格子点の座標で、x_i,y_i は i 番目のデータ点の座標です。dy のデフォルト の値は dx で、そのデフォルトの値は 1 になっています。パラメータ dx と dy は、データ点が格子点へ「データそれ自身の単位で」の寄与を行う範囲の 制御を可能にします。
オプションキーワード kdensity は、重み付け関数名の後ろで (オプション の) スケール変換のパラメータの前に置くもので、これはアルゴリズムを変更 して、格子点用に計算する値を重みの和 ( z = Sum_i w(d_i) * z_i ) では割 らないようにします。z_i がすべて定数の場合、これは事実上 2 変数の重み 付け評価を描画します: (上の 5 つのうちの一つの) 重み付け関数が各データ 点に置かれ、それらの重みの和がすべての格子点で評価され、そして元のデー タの代わりにこの滑らかな曲面が描画されます。これは、1 次元のデータ集合 に対する smooth kdensity オプションが行うこととおおまかには同じです (使用例は kdensity2d.dem を参照してください)。
非推奨: 後方互換性のため、わずかに異なる書式もサポートされています。ど のアルゴリズムも明示的に選択しなかった場合、qnorm アルゴリズムが仮定 され、3 つ以下の、コンマ (,) 区切りのオプションパラメータを指定した場 合は、それらをそれぞれ行数、列数、そして norm 値であると解釈します。
オプション dgrid3d は、散在するデータを重み付き平均で規則的な格子に 置き変える単純な仕組みに過ぎません。この問題に対するより洗練された手法 が存在しますので、この単純な方法が不十分であれば、gnuplot の外でその ような方法でデータを前処理するべきでしょう。
オンライン上の以下も参照 dgrid3d のデモ
および scatter のデモ
書式:
set dummy {<dummy-var>} {,<dummy-var>} show dummy
デフォルトでは、gnuplot は plot では、媒介変数モード、あるいは極座 標モードでは "t", そうでなければ "x" を独立変数 (仮変数) とし、同様に splot では、媒介変数モードでは (splot は極座標モードでは使えません) "u" と "v", そうでなければ "x" と "y" を独立変数とします。
仮変数は、物理的に意味のある名前、あるいはより便利な名前として使う方が 便利でしょう。例えば、時間の関数を描画する場合:
set dummy t plot sin(t), cos(t)
例:
set dummy u,v set dummy ,s
第二の例は、2 番目の変数を s とします。仮変数名をデフォルトの値に戻す には以下のようにしてください。
unset dummy
書式:
set encoding {<value>} set encoding locale show encoding
有効な値 (value) は以下の通りです。
default - 出力形式にデフォルトのエンコードの使用を命令 iso_8859_1 - UTF-8 より最も一般的な西ヨーロッパエンコード。このエ ンコードは PostScript の世界での 'ISO-Latin1' です。 iso_8859_15 - ユーロ記号を含む iso_8859_1 の亜種 iso_8859_2 - 中央/東ヨーロッパで使用されるエンコード iso_8859_9 - (Latin5 として知られる) トルコで使用されるエンコード koi8r - 良く使われる Unix のキリル文字エンコード koi8u - Unix のウクライナ地方のキリル文字エンコード cp437 - MS-DOS のコードページ cp850 - 西ヨーロッパの OS/2 のコードページ cp852 - 中央/東ヨーロッパの OS/2 のコードページ cp950 - MS 版の Big5 (emf terminal のみ) cp1250 - 中央/東ヨーロッパの MS Windows のコードページ cp1251 - ロシア、セルビア、ブルガリア、マケドニア語 (8 ビット) cp1252 - 西ヨーロッパの MS Windows のコードページ cp1254 - トルコの MS Windows のコードページ (Latin5 の拡張) sjis - Shift_JIS 日本語エンコード utf8 - 各文字の Unicode エントリポイントの、可変長 (マルチバ イト) 表現
コマンド set encoding locale は、他のオプションとは違い、これは現在 のロカールを実行時の環境から決定しようとします。たいていのシステムでは これは環境変数 LC_ALL, LC_CTYPE, LANG のいずれかによって制御されます。 この仕組みは、例えば wxt, pdf 出力形式で、UTF-8 や EUC-JP のよう なマルチバイト文字エンコードを通すために必要です。このコマンドは日付や 数字などのロカール特有の表現には影響を与えません。 以下も参照: set locale (100.44), set decimalsign (100.21)。
一般にエンコードの設定は、それが適切なフォントの選択に影響を与えるよう に、出力形式の設定の前に行なう必要があります。
書式:
set errorbars {small | large | fullwidth | <size>} {front | back} {line-properties} unset errorbars show errorbars
small は 0.0 (交差線なし)、large は 1.0 と同じです。サイズを指定し なければデフォルトの値は 1.0 です。
キーワード fullwidth は、errorbar を伴う boxplot と histograms にの み関連します。これは errorbar の両端の幅を、対応する箱の幅と同じに設定 しますが、箱の幅自体を変更することはありません。
キーワード front, back は、塗り潰し長方形のついた errorbar のみに 関連します (boxes, candlesticks, histograms)。
誤差線 (errorbar) は、デフォルトでは関連する箱の境界線と同じ線属性で描 画しますが、これを誤差線用に用意した線属性に変更できます。
set errorbars linecolor black linewidth 0.5 dashtype '.'
書式:
set fit {nolog | logfile {"<filename>"|default}} {{no}quiet|results|brief|verbose} {{no}errorvariables} {{no}covariancevariables} {{no}errorscaling} {{no}prescale} {maxiter <value>|default} {limit <epsilon>|default} {limit_abs <epsilon_abs>} {start-lambda <value>|default} {lambda-factor <value>|default} {script {"<command>"|default}} {v4 | v5} unset fit show fit
オプション logfile は、fit コマンドがその出力を書き出す場所を定義 します。 引数 <filename> は、単一引用符か二重引用符で囲む必要がありま す。ファイル名を指定しなかった場合、または unset fit を使用した場合 は、ログファイルはデフォルトの値である "fit.log"、または環境変数 FIT_LOG の値にリセットされます。与えられたログファイル名が / か \ で 終っている場合、それはディレクトリ名と解釈され、ログファイルはそのディ レクトリの "fit.log" となります。
デフォルトでは、そのログファイルに書かれる情報は、対話型出力にも出力し ます。set fit quiet はその対話型出力をオフにし、results は最終結果 のみを出力します。brief は、追加で fit のすべての繰り返しに関して 1 行の要約を提供します。verbose は、バージョン 4 のような詳細な繰り返 しの報告を行います。
オプション errorvariables を ON にすると、fit コマンドで計算された 個々の当てはめパラメータの誤差が、そのパラメータの名前に "_err" をつけ た名前のユーザ定義変数にコピーされます。これは主に、当てはめ関数とデー タの描画グラフの上にパラメータとその誤差を参照用に出力するのに使われま す。例:
set fit errorvariables fit f(x) 'datafile' using 1:2 via a, b print "error of a is:", a_err set label 1 sprintf("a=%6.2f +/- %6.2f", a, a_err) plot 'datafile' using 1:2, f(x)
オプション errorscaling を指定すると (デフォルト)、パラメータの計算 誤差を補正χ自乗 (reduced χ-square) で伸縮します。これは、結果として 補正χ自乗値になる、当てはめ計算の標準偏差 (FIT_STDFIT) に等しいデータ 誤差を提供することと同等になります。オプション noerrorscaling では、 評価誤差は、伸縮されない当てはめパラメータの標準偏差になります。 データの重みを指定しなければ、パラメータの誤差は常に伸縮されます。
オプション prescale をオンにすると、Marquardt-Levenberg ルーチンに渡 す前に、各パラメータの値をそれらの初期値に従って事前にスケール変換しま す。これは、各パラメータの大きさにかなり大きな違いがある場合に、大変有 効です。ただし、初期値が完全に 0 の当てはめパラメータには、決してこの スケール変換は行いません。
反復数の限界値は、オプション maxiter で制限できます。それを 0 か default とすると、それは限界がないことを意味します。
オプション limit は、収束を検出するためのもっとも小さい数字の限界 (1e-5) のデフォルトの値を変更するのに使えます。自乗残差の和がこの数値 未満の比率の変化しかしない場合は、当てはめは「収束した」と判断されます。 オプション limit_abs は、自乗残差の和の変化の限界 (絶対値) を追加し ます。デフォルトは 0 です。
アルゴリズムに関する別の制御をしたい場合、そして Marquardt-Levenberg アルゴリズムを良く知っている場合、それに影響を与える以下のオプションが利用できます: lambda の初期値は、通常自動的に ML-行列から計算されますが、必要ならばオプション start_lambda を使ってそれを与えることができます。それを default とすると、再び自動設定が有効になります。オプ ション lambda_factor は、対象とする関数のχ自乗値が意味ありげに増加 する/減少するときは常に lambda を増加させる/減少させる因子を設定しま す。それを default とすると、デフォルトの因子である 10.0 にします。
オプション script は、fit を中断したときに実行する gnuplot コマン ドを指定するものです。以下参照: fit (80)。この設定はデフォルトの replot や環境変数 FIT_SCRIPT よりも優先順位は上です。
オプション covariancevariables をオンにすると、最終的なパラメータ間 の共分散をユーザ定義変数に保存します。各パラメータの組に対してその共分 散を保存する変数名は、"FIT_COV_" に最初のパラメータ名と "_" と 2 つ目 のパラメータをつなげた名前になります。例えばパラメータ "a" と "b" に対 しては、その共分散変数名は "FIT_COV_a_b" となります。
バージョン 5 では、コマンド fit の書式は変更され、キーワード error が指定されていない場合は単位重み (unitweights) がデフォルトになりま した。オプション v4 で gnuplot バージョン 4 のデフォルトの挙動に戻り ます。以下も参照: fit (80)。
set fontpath "/directory/where/my/fonts/live" set term postscript fontfile <filename>
[version 5.4 では非推奨]
fontpath のディレクトリは、postscript 出力形式が作る PostScript 出力 内に埋め込むフォントにのみ関係します。 他の gnuplot 出力形式には何の影響も与えません。 あなたがフォントを埋めこまなければ、このコマンドはあなたには必要ありま せんし、埋めこむ場合でも、以下に示す他のパスにフォントが見つからない場合にのみ必要なだけです。
以前の版の gnuplot は、フォントを含む複数のディレクトリツリーを探索することでフォント管理ソフトをまねていました。 しかし現在は、以下の場所を検索する方法に置き換わっています。 (1) set term postscript fontfile コマンドで与えた絶対パス (2) 現在のディレクトリ (カレントディレクトリ) (3) set loadpath で指定したディレクトリのすべて (4) set fontpath で指定したディレクトリ (5) 環境変数 GNUPLOT_FONTPATH に指定されているディレクトリ
注意: libgd の出力形式 (png gif jpeg sixel) 用にファイル名で指定するフ ォントの検索パスは、環境変数 GDFONTPATH で制御できます。
書式:
set format {<axes>} {"<format-string>"} {numeric|timedate|geographic} show format
ここで、<axes> (軸) は x, y, xy, x2, y2, z, cb、または何
も指定しないか (その場合その書式はすべての軸に適用されます) のいずれか
です。以下の 2 つのコマンドは全く同等です:
set format y "%.2f" set ytics format "%.2f"
書式文字列の長さは 100 文字まで、と制限されています。デフォルトの書式 文字列は "% h" で、LaTeX 系の出力形式では "$%h$" です。他に "%.2f" や "%3.0em" のような書式が好まれることも多いでしょう。"set format" の後ろ に何もつけずに実行すると、デフォルトに戻します。
空文字列 "" を指定した場合、刻み自身は表示しますが見出しはつけません。 刻み自身を消すには、 unset xtics または set tics scale 0 を使用し てください。
書式文字列では、改行文字 ( \n) や拡張文字列処理 (enhanced text) 用のマ ークアップも使えます。 この場合は、単一引用符 (') でなく (") を使って ください。以下も参照: syntax (30)。 "%" が頭につかない文字はそのまま表示されます。よって、書式文字列内にスペースや文字列などを入れることができます。例えば "%g m" とすれば、 数値の後に " m" が表示されます。"%" 自身を表示する場合には "%g %%" の ように 2 つ重ねます。
刻みに関するより詳しい情報については、以下も参照: set xtics (100.123)。また、 この方法で出力される数字にデフォルト以外の小数分離文字を使うやり方については、以下参照: set decimalsign (100.21)。 以下も参照。 エレクトロン (電子) デモ (electron.dem).
目盛りラベルの数値書式指定子 | |
書式 | 説明 |
%f |
固定小数点表記 |
%e , %E |
指数表記; 指数の前に "e", "E" をつける |
%g , %G |
%e (または %E ) と %f の略記 |
%h , %H |
%g に "e%S" でなく "x10^{%S}" か "*10^{%S}" をつける |
%x , %X |
16 進表記 |
%o , %O |
8 進表記 |
%t |
10 進の仮数部 |
%l |
現在の対数尺の底を基数とする仮数部 |
%s |
現在の対数尺の底を基数とする仮数部; 補助単位 (scientific power) |
%T |
10 進の指数部 |
%L |
現在の対数尺の底を基数とする指数部 |
%S |
補助単位の指数部 (scientific power) |
%c |
補助単位文字 |
%b |
ISO/IEC 80000 記法 (ki, Mi, Gi, Ti, Pi, Ei, Zi, Yi) の仮数部 |
%B |
ISO/IEC 80000 記法 (ki, Mi, Gi, Ti, Pi, Ei, Zi, Yi) の接頭辞 |
%P |
πの倍数 |
補助単位 ('scientific' power) は、指数が 3 の倍数であるようなものです。 補助単位指数 ("%c") の文字への変換は -18 から +18 までの指数に対して サポートされています。この範囲外の指数の場合、書式は通常の指数形式に 戻ります。
ほかに使うことのできる修飾詞 ("%" と書式指定子の間に書くもの) には、 次のいくつかがあります: "-" は数字を左詰めにし、"+" は正の数にも符号を つけ、" " (空白一つ) は負の数に "-" をつけるべき場所に正の数の場合に空 白を一つつけ、"#" は小数点以下の数字が 0 だけであっても小数点をつけ、正の整数は出力幅を定め、出力幅指定の直前の "0" (文字でなく数字) は先頭 に空いた部分を空白で埋める代わりに 0 で埋め、小数点の後に非負の整数を 書いたものは精度を意味します (整数の場合は最小桁、小数の場合は小数点以下の桁数)。
これらの全ての修飾詞をサポートしていない OS もあるでしょうし、逆にこれ 以外のものをもサポートする OS もあるでしょう。疑わしい場合は、適切な資 料を調べ、そして実験してみてください。
例:
set format y "%t"; set ytics (5,10) # "5.0" と "1.0" set format y "%s"; set ytics (500,1000) # "500" と "1.0" set format y "%+-12.3f"; set ytics(12345) # "+12345.000 " set format y "%.2t*10^%+03T"; set ytic(12345)# "1.23*10^+04" set format y "%s*10^{%S}"; set ytic(12345) # "12.345*10^{3}" set format y "%s %cg"; set ytic(12345) # "12.345 kg" set format y "%.0P pi"; set ytic(6.283185) # "2 pi" set format y "%.0f%%"; set ytic(50) # "50%"
set log y 2; set format y '%l'; set ytics (1,2,3) #"1.0", "1.0", "1.5" と表示される (3 は 1.5 * 2^1 なので)
丸めと指数が必要となるような書式で 9.999 の様な数字が書かれる場合は 問題が起こることがあります。
軸のデータ型が日時データ (time/date) の場合、書式文字列は 'strftime'関数 ('gnuplot' 外。"man strftime" としてみてください) に関する有効な 指定を行う必要があります。使える入力書式指定の一覧に関しては、以下参照:set timefmt (100.96)。
日時書式は以下の通りです。
日付指定子 | |
書式 | 説明 |
%a |
曜日名の省略形 (Sun,Mon,...) |
%A |
曜日名 (Sunday,Monday,...) |
%b , %h |
月名の省略形 (Jan,Feb,...) |
%B |
月名 (January,February,...) |
%d |
日 (01–31) |
%D |
"%m/%d/%y" の簡略形 (出力のみ) |
%F |
"%Y-%m-%d" の簡略形 (出力のみ) |
%k |
時 (0–23; 1 桁または 2 桁) |
%H |
時 (00–23; 常に 2 桁) |
%l |
時 (1–12; 1 桁または 2 桁) |
%I |
時 (01–12; 常に 2 桁) |
%j |
その年の通算日 (001–366) |
%m |
月 (01–12) |
%M |
分 (00–60) |
%p |
"am" または "pm" |
%r |
"%I:%M:%S %p" の簡略形 (出力のみ) |
%R |
"%H:%M" の簡略形 (出力のみ) |
%S |
秒 (出力では 00–60 の整数、入力では実数) |
%s |
1970 年最初からの秒数 |
%T |
"%H:%M:%S" の簡略形 (出力のみ) |
%U |
その年の通算週 (CDC/MMWR 疫学的週) (入力では無視) |
%w |
曜日番号 (0–6, 日曜 = 0) |
%W |
その年の通算週 (ISO 8601 の週番号) (入力では無視) |
%y |
西暦 (0-99、1969-2068 年の下 2 桁) |
%Y |
西暦 (4 桁) |
%z |
タイムゾーン、[+-]hh:mm |
%Z |
タイムゾーン名、文字列は無視 |
書式 %W (ISO の週番号) に関する詳細は、以下参照: tm_week (100.28.4)。 書式 %U (CDC/MMWR: アメリカ疾病予防管理センター疫学週報の疫学的週番号) は、週が月曜開始でなく日曜開始であることを除けば %W と同様です。 警告: バージョン 5.4.2 より前の gnuplot では、書式 %W と %U はいずれも 信頼できません。"week_date.dem" の単位テストを参照してください。
相対時刻書式は、時刻 0 地点のいずれかの側の時間間隔の長さを表現します。 相対時刻書式は以下の通りです。
時刻指定子 | |
書式 | 説明 |
%tD |
時刻 0 への相対的な正負の日付 |
%tH |
エポック時への相対的な正負の時 (24 での巻戻しなし) |
%tM |
エポック時への相対的な正負の分 |
%tS |
直前の tH, tM 項目に対応する正負の秒数 |
数字を表す書式には、先頭に 0 を埋めるために "0" (ゼロ) を前につけるこ とができ、また最小の出力幅を指定するために正の整数を前につけることもで きます。書式 %S と %t は精度指定も受けつけるので、小数の時/分/秒を書く こともできます。
日付書式の例:
x の値が、1976 年 12 月 25 日の深夜少し前の時刻に対応する秒数であると 仮定します。この位置の軸の刻みラベル文字列は、以下のようになります:
set format x # デフォルトでは "12/25/76 \n 23:11" set format x "%A, %d %b %Y" # "Saturday, 25 Dec 1976" set format x "%r %D" # "11:11:11 pm 12/25/76"
時刻書式の例:
日付書式指定は、秒数での時間の値を、ある特定の日の時計の時刻にエンコー ドします。よって、時は 0 から 23 まで、分は 0 から 59 までのみを動きま すが、それらの負の値は、エポック (1970 年 1 月 1 日) より前の日付に対 応します。秒数での時間の値を、時間 0 に対する相対的な時/分/秒の数値と して出力させるには、時間書式 %tH %tM %tS を使用します。-3672.50 秒の値 は以下のように出力されます。
set format x # デフォルトでは "12/31/69 \n 22:58" set format x "%tH:%tM:%tS" # "-01:01:12" set format x "%.2tH hours" # "-1.02 hours" set format x "%tM:%.2tS" # "-61:12.50"
standard = 0 の場合、これは ISO 8601 週曜日規則での週番号を返します。 これは、gnuplot の時刻書式 %W に対応します。 standard = 1 の場合、これは CDC (アメリカ疾病予防管理センター) 疫学的 週曜日規則 (「疫学的週」) での週番号を返します。 これは、gnuplot の時刻書式 %U に対応します。 これらに対応する、週曜日からカレンダー時刻に変換する逆関数については、 以下参照: weekdate_iso (100.28.5), weekdate_cdc (100.28.6)。
解説: ISO の YYYY 年の 1 番の週は、YYYY 年 1 月 1 に一番近い月曜日から 始まります。これは、前の年になる可能性もあります。例えば、2008 年 12 月 30 日火曜日は、ISO の週曜日では 2009-W01-2 (2009 年の週番号 1 の第 2 日) となります。逆に、1 月の 1 日から 3 日までは、ISO の週番号 1 の 月曜より前になることがありえます。この場合、これらの日は、前の年の最後 の週番号の週に含まれることになります。例えば、2021 年 1 月 1 日金曜日 は、ISO の週曜日では 2020-W53-5 です。
アメリカ疾病予防管理センター (CDC) の定める疫学的週は、同様の週曜日規 則ですが、ISO 規則とは、月曜開始ではなく、日曜開始であるところが違いま す。
time = weekdate_iso( year, week [, day] )
この関数は、ISO 8601 週曜日での year(西暦), week(週番号), day(日番号) の要素を、Unix エポックの 1970 年 1 月 1 日からの秒数でのカレンダー時 刻に変換します。週曜日系での名目上の年 (year) は、カレンダーでの年と必 ずしも一致しないことに注意してください。週番号 week は 1 から 53 の間 の整数です。日番号 day はオプションで、それが 0 かまたは省略した場合は その週の開始時刻を返し、そうでなければ day は 1 (月曜) から 7 (日曜) までの整数です。 カレンダー日を、ISO 規則での週番号に変換する逆関数に関する情報について は、以下参照:tm_week (100.28.4)。
例:
# 1 列目に ISO 週番号を持つファイルからのデータの描画 # 週 感染者 死亡者 # 2020-05 432 1 calendar_date(w) = weekdate_iso( int(w[1:4]), int(w[6:7]) ) set xtics time format "%b\n%Y" plot FILE using (calendar_date(strcol(1))) : 2 title columnhead
time = weekdate_cdc( year, week [, day] )
この関数は、CDC/MMWR (アメリカ疾病予防管理センター/疫学週報) の疫学的 週曜日での year(西暦), week(週番号), day(日番号) の要素を、Unix エポッ クの 1970 年 1 月 1 日からの秒数でのカレンダー時刻に変換します。CDC 週 曜日規則は、ISO 規則とは、週が 1 = 日曜から 7 = 土曜まで、と定義されて いる点に違いがあります。3 番目のパラメータが 0 または省略した場合は、 その週の開始時刻が返ります。 以下参照: tm_week (100.28.4), weekdate_iso (100.28.5)。
書式:
show functions
gnuplot における関数の定義とその使い方については、以下参照:expressions (16)。 以下も参照 ユーザ定義関数でのスプライン (spline.dem)
および 関数と複素変数を翼に使用 (airfoil.dem)。
書式:
set grid {{no}{m}xtics} {{no}{m}ytics} {{no}{m}ztics} {{no}{m}x2tics} {{no}{m}y2tics} {{no}{m}rtics} {{no}{m}cbtics} {polar {<angle>}} {layerdefault | front | back} {{no}vertical} {<line-properties-major> {, <line-properties-minor>}} unset grid show grid
格子線は任意の軸の任意の大目盛り/小目盛りに対して有効/無効にでき、その 大目盛りと小目盛りに対する線種、線幅も指定でき、現在の出力装置がサポー トする範囲で、あらかじめ定義したラインスタイルを使用することもできます (以下参照: set style line (100.86.7))。
2 次元描画では極座標格子も選択できます。これは、gnuplot が極座標モード (polar) のときの set grid のデフォルトの挙動ですが、明示的に set grid polar <angle> rtics とすれば、極座標モードであるなしに関わ らず実行できます。同心円は r 軸の主目盛/副目盛で交差するように描き、動 径は <angle> の角を空けて描きます。同心円の周囲の目盛りの刻みは、 set ttics で制御しますが、これは動径の格子線を新たには生成しません。
set grid が描く前に、必要な目盛りは有効になっていなければなりません。 gnuplot は、存在しない目盛りに対する格子の描画の命令は単に無視します。 しかし、後でその目盛りが有効になればそれに対する格子も描きます。
小格子線に対する線種を何も指定しなければ、大格子線と同じ線種が使われま す。デフォルトの極座標の角度は 30 度です。
front を指定すると、格子線はグラフのデータの上に描かれます。back が指定された場合は格子線はグラフのデータの下に描かれます。front を使 えば、密集したデータで格子線が見えなくなることを防ぐことができます。デ フォルトでは layerdefault で、これは 2D 描画では back と同じです。 3D 描画のデフォルトは、格子とグラフの枠を 2 つの描画単位に分離し、格子 は後ろに、枠は描画データまたは関数の前に書きます。ただし、hidden3d モードでは、それがそれ自身の並び換えをしていますので、格子線の順番のオ プションは全て無視され、格子線も隠線処理にかけられます。これらのオプシ ョンは、実際には格子線だけでなく、set border による境界線とその目盛 りの刻み (以下参照: set xtics (100.123)) にも影響を及ぼします。
3 次元描画では、x 軸と y 軸の刻み位置に対する格子線は、デフォルトでは z=0 に平行な底面上にしか描きませんが、キーワード vertical は、格子線 を xz 面と yz 面にも zmin から zmax まで描くようにします。
z の格子線は描画の底面に描かれます。これは描画の周りに部分的な箱が描画 されている場合にはいいでしょう。以下参照: set border (100.6)。
書式:
set hidden3d {defaults} | { {front|back} {{offset <offset>} | {nooffset}} {trianglepattern <bitpattern>} {{undefined <level>} | {noundefined}} {{no}altdiagonal} {{no}bentover} } unset hidden3d show hidden3d
gnuplot の通常の表示とは異なり、隠線処理では与えられた関数、またはデー タの格子線を、実際の曲面がその曲面の背後にあって隠されている描画要素は 見せないのと同じように処理します。これが機能するためには、その曲面が '格子状' (以下参照: splot datafile (102.1)) である必要があり、またそれらは with lines か with linespoints で描かれていなければいけません。
hidden3d が有効なときは、格子線だけでなく、面部分や土台の上の等高線 (以下参照: set contour (100.17)) も隠されます。複数の面を描画している場合は、 各曲面は自分自身と他の曲面で隠される部分も持ちます。曲面上への等高線の 表示 (set contour surface) は機能しません。
グラフ上に曲面が一つもない状態でも、hidden3d は points, labels, vectors, impulses の 3 次元の描画スタイルに影響を与えます。 vectors は、隠されない部分は線分 (矢先なし) として表示されます。グラ フ内の各々の描画をこの処理から明示的に除外したいときは、with 指定に 特別のオプション nohidden3d を追加してください。
hidden3d は、pm3d モードで描画された、単色塗りの曲面には影響を与えませ ん。pm3d の曲面に対して同様の効果を純粋に得たいならば、これの代わりに set pm3d depthorder を使ってください。複数の pm3d 曲面に通常の hidden3d 処理を組み合わせるには、オプション set hidden3d front を 使用してください。これは、hidden3d 処理の全ての要素を、pm3d 曲面を含む 残りの他の描画要素の後に強制的に描画するものです。
関数値は格子孤立線の交点で評価されます。見ることの出来る線分を求めると きは個々の関数値、あるいはデータ点の間はそのアルゴリズムによって線形補 間されます。これは、hidden3d で描画する場合と nohidden3d で描画す る場合で関数の見かけが異なることを意味します。なぜならば、後者の場合関 数値は各標本点で評価されるからです。この違いに関する議論については、 以下参照: set samples (100.83), set isosamples (100.35)。
曲面の隠される部分を消去するのに使われるアルゴリズムは、このコマンドで 制御されるいくつかの追加オプションを持っています。defaults を指定す ればそれらはすべて、以下で述べるようなデフォルトの値に設定されます。 defaults が指定されなかった場合には、明示的に指定されたオプションの みが影響を受け、それ以外のものは以前の値が引き継がれます。よって、それ らのオプションの値をいちいち修正することなく、単に set {no}hidden3d のみで隠線処理をオン/オフできることになります。
最初のオプション offset は '裏側' の線を描画する線の線種に影響を与え ます。通常は曲面の表裏を区別するために、裏側の線種は、表側の線種より一 つ大きい番号の線種が使われます。offset <offset> によって、その追加す る値を、デフォルトの 1 とは異なる増分値に変更できます。nooffset オプ ションは offset 0 を意味し、これは表裏で同じ線種を使うことになります。
次のオプションは trianglepattern <bitpattern> です。<bitpattern> は 0 から 7 までの数字で、ビットパターンと解釈されます。各曲面は三角形に 分割されますが、このビットパターンの各ビットはそれらの三角形の各辺の表 示を決定します。ビット 0 は格子の水平辺、ビット 1 は格子の垂直辺、ビッ ト 2 は、元々の格子が 2 つの三角形に分割されるときの対角辺です。デフォ ルトのビットパターンは 3 で、これは全ての水平辺と垂直辺を表示し、対角 辺は表示しないことを意味します。対角辺も表示する場合は 7 を指定します。
オプション undefined <level> は、定義されていない (欠けているデータ または未定義の関数値) か、または与えられた x,y,z の範囲を超えているデ ータ点に適用させるアルゴリズムを指示します。そのような点は、それでも 表示されてしまうか、または入力データから取り除かれます。取り除かれて しまう点に接する全ての曲面要素は同様に取り除かれ、よって曲面に穴が生 じます。<level> = 3 の場合、これは noundefined と同じで、どんな点も 捨てられません。これは他の場所であらゆる種類の問題を引き起こし得るので 使わないべきです。<level> = 2 では未定義の点は捨てられますが、範囲を超 えた点は捨てられません。<level> = 1 では、これがデフォルトですが、範囲 を超えた点も捨てられます。
noaltdiagonal を指定すると、undefined が有効のとき (すなわち <level> が 3 でない場合) に起こる以下の場合のデフォルトでの取扱いを変更できます。入力曲面の各格子状の部分は一方の対角線によって 2 つの三角形に分割 されます。通常はそれらの対角線の全てが格子に対して同じ方向を向いていま す。もし、ある格子の 4 つの角のうち一つが undefined 処理によりとり除 かれていて、その角が通常の方向の対角線に乗っている場合は、その両方の三 角形が取り除かれてしまいます。しかし、もしデフォルトの設定である altdiagonal が有効になっている場合、その格子については他方向の対角線 が代わりに選択され、曲面の穴の大きさが最小になるようにします。
bentover オプションは今度は trianglepattern とともに起こる別のこと を制御します。かなりしわくちゃの曲面では、下の ASCII 文字絵に書いたよ うに、曲面の 1 つの格子が 2 つに分けられた三角形の表と裏の反対側が見え てしまう場合 (すなわち、元の四角形が折り曲げられている ('bent over') 場合) があります:
C----B 元の 4 角形: A--B 表示される 4 角形: |\ | ("set view 0,0") | /| ("set view 75,75" perhaps) | \ | |/ | | \ | C--D | \| A D
曲面の格子の対角辺が <bitpattern> の 2 bit によって見えるようにはなっ てはいない場合、上の対角辺 CB はどこにも書かれないことになり、それが結 果の表示を理解しにくいものにします。デフォルトで定義される bentover オプションは、このような場合それを表示するようにします。もしそうしたく ないなら、nobentover を選択してください。 以下も参照 隠線処理のデモ (hidden.dem)
set history {size <N>} {quiet|numbers} {full|trim} {default}
gnuplot の終了時にヒストリファイルに保存する行数を、history size の値 に制限します。set history size -1 とすると、ヒストリファイルに書き出 す行数の制限がなくなります。
デフォルトでは、コマンド history は各コマンドの前に行番号を出力しま す。history quiet は、今回の実行に対してのみ番号を省略しますが、 set history quiet は、今後のすべての history の番号を省略します。
オプション trim は、現在のコマンドに対する前の同じものを削除すること で、コマンド履歴内の重複する行の数を減らします。
デフォルトの設定: set history size 500 numbers trim
書式:
set isosamples <iso_1> {,<iso_2>} show isosamples
各曲面グラフは <iso_1> 個の u-孤立線と <iso_2> 個の v-孤立線を持ちます。 <iso_1> のみ指定すれば、<iso_2> は <iso_1> と同じ値に設定されます。 デフォルトでは、u, v それぞれ 10 本の標本化が行われます。標本数をもっと 多くすればより正確なグラフが作られますが、時間がかかります。これらの パラメータは、データファイルの描画には何も影響を与えません。
孤立線とは、曲面の一つの媒介変数を固定して、もう一つの媒介変数によって 描かれる曲線のことです。孤立線は、曲面を表示する単純な方法を与えます。 曲面 s(u,v) の媒介変数 u を固定することで u-孤立線 c(v) = s(u0,v) が 作られ、媒介変数 v を固定することで v-孤立線 c(u) = s(u,v0) ができます。
関数の曲面グラフが隠線処理なしで描かれている場合、set samples は 各孤立線上で標本化される点の数を制御します。以下参照: set samples (100.83),set hidden3d (100.32)。等高線描画ルーチンは、関数の点の標本化は各孤立線の交点 で行われると仮定しているので、関数の曲面と等高線の解像度を変更するとき は、isosamples と同じように samples を変更するのが望ましいでしょう。
set isosurface {mixed|triangles} set isosurface {no}insidecolor <n>
デフォルトでは、等値曲面の内部は、個別の色で塗ります。色の選択法は、 hidden3d 曲面の場合と同じで、基本となる線種にオフセットの <n> を追加し た値を使用します。曲面の内側と外側の両方を同じ色で塗るには、 set isosurface noinsidecolor を使用してください。
set jitter {overlap <yposition>} {spread <factor>} {wrap <limit>} {swarm|square|vertical}
set jitter # 1 文字幅内の点の jitter set jitter overlap 1.5 # 1.5 文字幅内の点の jitter set jitter over 1.5 spread 0.5 # 同上、しかし x の移動は半分幅
データの 1 つ、または両方の座標が離散値に制限されている場合、多くの点 が完全に互いの真上に乗っかる場合があります。jitter (揺らぎ) は、これら 重なる点を、それらの座標にずらし値を与えることでその点を房状に広げます。 点が重なっていると見なすための閾値は、文字幅単位、あるいは任意の座標オ プションを使って指定できます。以下参照: coordinates (12)。jitter は、2 次 元グラフの with points と with impulses に影響を与えます。これは、 3 次元のボクセルデータの描画にも影響を与えます。
デフォルトの jitter 動作は、点を x 方向のみ移動します。これは、「ビー スォームグラフ」(bee swarm plot) と呼ばれる独特のパターンを作ります。 オプションのキーワード square は、移動する点の x 座標に加えて、 overlap で指定した距離だけは少なくとも離れた別々の階層にいるように y 座標も揃えます。
jitter を x ではなく y (のみ) に沿わせるには、キーワード vertical を 使用してください。
文字単位での最大の移動距離は、キーワード wrap で制限をかけられます。
重なりの判定基準と、揺らぎの大きさは、いずれもデフォルトでは 1 文字単 位であることに注意してください。よってグラフの見た目は、出力形式のフォ ントサイズ、キャンバスサイズ、拡大率によって変更してしまいます。これを 避けるには、重なりの判定基準を y 座標系の単位 (キーワード first) で 指定し、点のサイズと拡大係数を適切な値に調整してください。以下参照:coordinates (12), pointsize (100.73)。
警告: jitter は "pointsize variable" とは両立しません。
set jitter は、3 次元のボクセルデータでも有用です。ボクセル格子デー タは、均等に配置された点の規則正しい格子であるため、多くの視方向で、点 が重なったり、モアレパターンを生成したりします。それらの副作用は、各格 子点からランダムに移動させた場所に描画する記号を置くことで避けることが 可能です。
書式:
set key {on|off} {default} {{inside | outside | fixed} | {lmargin | rmargin | tmargin | bmargin} | {at <position>}} {left | right | center} {top | bottom | center} {vertical | horizontal} {Left | Right} {{no}enhanced} {{no}opaque {fc <colorspec>}} {{no}reverse} {{no}invert} {samplen <sample_length>} {spacing <line_spacing>} {width <width_increment>} {height <height_increment>} {{no}autotitle {columnheader}} {title {"<text>"} {{no}enhanced} {center | left | right}} {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
凡例 (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 (100.38.5)。
グラフのタイトルの行揃えは Left, Right (デフォルト) で指示します。 ラベル文字列と曲線のサンプルは左右入れ替えることができます (reverse) し、 全体を枠で囲むこともできます (box {...})。その枠の線は、線種 (linetype), 線幅 (linewidth)、あるいは定義済のラインスタイル (linestyle) を指定することもできます。
凡例の文字列は、デフォルトで拡張文字列モード (enhanced) に設定されて いますが、これはオプション {no}enhanced で変更でき、キーのタイトルだ けや、個々のグラフ毎に変更することも可能です。
デフォルトでは、凡例は一つのグラフと同時に作られます。すなわち、凡例の 記号とタイトルは、それに対応するグラフと同時に描かれます。それは、新し いグラフが時には凡例の上に要素をかぶせて配置しうることを意味します。 set key opaque は、凡例をすべてのグラフの描画が終った後に生成させま す。この場合、凡例の領域を背景色か指定した色で塗りつぶし、その後で凡例 の記号とタイトルを書きます。 set key noopaque でデフォルトに復帰できます。
デフォルトでは、最初の描画のラベルが凡例の一番上に現われ、それに続くラ ベルがその下に並んで行きます。オプション invert は、最初のラベルを凡 例の一番下に置き、それに続くラベルをその上に並べて行きます。このオプシ ョンは、凡例のラベルの縦の並びの順番を、積み上げ形式のヒストグラム (histograms) の箱の順番に合わせるときに便利でしょう。
<height_increment> は、凡例の箱の高さに加えたり減らしたりする高さ (何 文字分か) を表す数値です。これは主に、凡例の回りに箱を描く場合で、凡例 の並びの回りの境界線をより大きくしたい場合のものです。
全体に渡るタイトルを凡例の上につけることもできます (title "<text>")。 単一引用符 (') と二重引用符 (") の違いについては、以下も参照: syntax (30)。 タイトルの行揃えはデフォルトでは中央合わせで、それはキーワード right や left で変更することもできます。
set key のデフォルトは、on, right, top, vertical, Right, noreverse, noinvert, samplen 4, spacing 1, notitle, nobox です。凡例の枠の線種はデフォルトではグラフ描画の外枠と同じものが使われ ます。set key default とするとデフォルトの設定に戻ります。
凡例内には、各グラフに対して、その描画スタイルを示す線分か記号か形、お よびそのタイトルが 1 行で表現されます。plot コマンドでキーワード notitle を使うと、凡例行の生成を抑制します。等高線描画では、各等高線 に対応した行が凡例内に追加されます (以下参照: cntrlabel (100.13))。ファイル名 や関数名の代わりにキーワード keyentry を与えたダミーの plot コマンド を使うことで、凡例内に追加の行を入れることができます。以下参照:keyentry (100.38.3)。
TeX, LaTeX 系の出力形式や、整形情報が文字列に埋め込まれる出力形式を使 う場合は、gnuplot は凡例の位置決めのための文字列の幅を評価することし かできません。よって凡例を左に置く場合は、set key left Left reverse という組合せを使うのがいいでしょう。
なお、2 次元グラフでは、fixed オプションは完全に inside と同じです。
splot で等高線を書く場合、デフォルトでは異なる線種の個々の等高線レベ ルに対して、別々の凡例の項目を生成します。これを変更するには、以下参照:set cntrlabel (100.13)。
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
plot $HEATMAP matrix with image notitle, \ keyentry with boxes fc palette cb 0 title "no effect", \ keyentry with boxes fc palette cb 1 title "threshold", \ keyentry with boxes fc palette cb 3 title "typical range", \ keyentry with labels nopoint title "as reported in [12]", \ keyentry with boxes fc palette cb 5 title "strong effect"
plot "datafile" using (($2+$3)/$4) title columnhead(3) with lines
注意: set key autotitle columnheader とすると、たとえ凡例 (key) が unset key で無効になっている場合でも、1 列目をデータとしてではなく、 列のヘッダとして処理します。これは、stats や fit のように凡例を作 らないコマンドに対しても同様です。データの先頭行をグラフのタイトルでは なく columnheader として使用したい場合は、set datafile columnheaders としてください。
また、いずれの場合でも、plot コマンドに明示的な title や notitle キーワードを指定すれば、それは set key autotitle による設定より優先 されます。
配置の仕組みを理解ための最も重要な概念は、グラフ領域、すなわち内か外か ということと、グラフ領域の境界との間の余白 (margin) を考えることです。 グラフ領域に沿って、キーワード left/center/right (l/c/r) と top/center/bottom (t/c/b) は、凡例 (key) をその領域の内側のどこに置 くかを制御します。
モード inside では、凡例はキーワード left (l), right (r), top (t), bottom (b), center (c) によって以下の図のように描画領域の境界に向かって出力されます:
t/l t/c t/r
c/l c c/r
b/l b/c b/r
モード outside でも上と同様に自動的に配置されますが、グラフ領域の境 界に対して、というよりもむしろ見た目に対して、というべきでしょう。すな わち、グラフの境界は、グラフ領域の外の凡例の場所を作るために、内側に移 動することになります。しかし、これは他のラベルの邪魔をしますし、もしか したら出力デバイスによってはエラーを引き起こすかもしれません。凡例の出 力に合わせてどの描画境界が移動するかは、上に述べた凡例の位置、および重 ね上げの方向に依存します。4 方向の中心揃えのオプション (center) に関 しては、どの境界が動くのかに関するあいまいさはありませんが、角への出力 のオプションについては、重ね上げ方向が vertical の場合は左または右の 境界が、horizontal の場合は上または下の境界が、それぞれ内側に適切に 移動します。
余白 (margin) の書き方は、重ね上げの方向にかかわない自動的な配置を可能 にしています。lmargin (lm), rmargin (rm), tmargin (tm), bmargin (bm) のうちの一つを、矛盾しない 1 方向のキーワードと組み合わ せて使用した場合、以下の図に示した場所に凡例が配置されます:
l/tm c/tm r/tm
t/lm t/rm
c/lm c/rm
b/lm b/rm
l/bm c/bm r/bm
キーワード above と over は tmargin と同じ意味です。以前のバージョンとの互換性のために、above と over は l/c/r や重ね上げ方向のキーワードなしで使用すると、center で horizontal を使います。キーワ ード below と under は bmargin と同じ意味です。互換性のために、 below と under は l/c/r や重ね上げ方向のキーワードなしで使用すると center で horizontal を使います。さらに、outside も互換性のため に t/b/c や重ね上げ方向のキーワードがなければ、top, right, vertical (つまり上の t/rm と同じ) を使用します。
凡例の位置 (<position>) は、以前のバージョンと同様単に x,y,z を指定してもいいですが、その最初のサンプル行の座標の座表系を選択するための 5つのキーワード (first, second, graph, screen, character) を 頭につけることもできます。詳細は、以下参照: coordinates (12)。<position> が与えられた場合の left, right, top, bottom, center の効果は、 label コマンドで配置される文字列の場合と同じように基準位置の位置揃えに 使用されます。すなわち、left は凡例が <position> の右に置かれて左合 わせで出力されます。他の場合も同様です。
グラフ曲線のサンプルの線分の長さは samplen で指定できます。その長さ は目盛りの長さと、<sample_length>*(文字幅) の和として計算されます。 sapmlen は、グラフ上の点のサンプルの位置にも (もしサンプル線分自身が 書かれなくても) 影響を与えています。それは、点の記号はサンプル線分の中 央に書かれるためです。
凡例のベースライン間隔は、現在のフォントサイズに対する「1 行空き」 (single space) になっています。これは set key spacing <line-spacing> で変更できます。
<width_increment> は、文字列の長さに加えたり減らしたりする幅 (何文字分 か) を表す数値です。これは、凡例に外枠を書き、文字列に制御文字を使う場 合にだけ有用でしょう。gnuplot は外枠の幅を計算するときは、ラベル文字 列の文字数を単純に数えるだけなので、それを修正するのに使えます。
set multiplot layout 3,2 columnsfirst set style data boxes plot $D using 0:6 lt 1 title at 0.75, 0.20 plot $D using 0:12 lt 2 title at 0.75, 0.17 plot $D using 0:13 lt 3 title at 0.75, 0.14 plot $D using 0:14 lt 4 title at 0.75, 0.11 set label 1 at screen 0.75, screen 0.22 "Custom combined key area" plot $D using 0:($6+$12+$13+$14) with linespoints title "total" unset multiplot
書式:
set label {<tag>} {"<label text>"} {at <position>} {left | center | right} {norotate | rotate {by <degrees>}} {font "<name>{,<size>}"} {noenhanced} {front | back} {textcolor <colorspec>} {point <pointstyle> | nopoint} {offset <offset>} {nobox} {boxed {bs <boxstyle>}} {hypertext} unset label {<tag>} show label
位置 (<position>) は x,y か x,y,z のどちらかで指定し、座標系を指定する にはその座標の前に first, second, polar, graph, screen, character をつけます。詳細は、以下参照: coordinates (12)。
タグ (<tag>) は見出しを識別するための整数値です。タグを指定しなかった 場合未使用のもので最も小さい値が自動的に割り当てられます。現在の見出し を変更するときはそのタグと変更したい項目を指定して set label コマン ドを使います。
<label text> は文字列定数でも構いませんし、文字列変数、または文字列の 値を持つ式でも構いません。以下参照: strings (28), sprintf (16.3), gprintf (100.28.1)。
デフォルトでは、指定した点 x,y,z に見出しの文章の左端が来るように配置 されます。x,y,z を見出しのどこに揃えるかを変更するには変数 <justification> を指定します。これには、left, right, center の いずれかが指定でき、それぞれ文章の左、右、真中が指定した点に来るよう に配置さるようになります。描画範囲の外にはみ出るような指定も許されま すが、座標軸の見出しや他の文字列と重なる場合があります。
箱枠付きのラベルをサポートする出力形式もあります。以下参照:set style textbox (100.86.13)。回転させた文字列の箱付けは、すべての出力形式が可 能なわけではありません。
rotate を指定するとラベルは縦書きになります。rotate by <degrees> を指定すると、文字列のベースラインを指定した角に設定します。ただし、文 字列の回転をサポートしていない出力形式もあります。
フォントとそのサイズは、出力形式がフォントの設定をサポートしていれば font "<name>{,<size>}" で明示的に選択できます。そうでない出力形式で は、デフォルトのフォントが使われます。
通常は、現在の出力形式がサポートしていれば、ラベル文字列の全ての文字列 に拡張文字列処理モード (enhanced text mode) が使用されます。 noenhanced を使用することで、特定のラベルを拡張文字列処理から外すこ とができます。これは、ラベルが例えばアンダースコア (_) を含んでいる場 合などに有用です。以下参照: enhanced text (14)。
front が与えられると、見出しはデータのグラフの上に書かれます。back が与えられると (デフォルト)、見出しはグラフの下に書かれます。front を使うことで、密なデータによって見出しが隠されてしまうことを避けること が出来ます。
textcolor <colorspec> は見出し文字列の色を変更します。<colorspec> は
線種、rgb 色、またはパレットへの割当のいずれかが指定できます。
以下参照: colorspec (21.1), palette (16.3)。textcolor は、tc と省略可能です。
`tc default` は、文字色をデフォルトにします。 `tc lt <n>` は、文字色を線種 <n> (line type)と同じものにします。 `tc ls <n>` は、文字色を line style <n> と同じものにします。 `tc palette z` は、見出しの z の位置に対応したパレット色になります。 `tc palette cb <val>` は、色見本 (colorbar) の <val> の色になります。 `tc palette fraction <val>` (0<=val<=1) は、[0:1] から `palette` の 灰色階調/カラーへの写像に対応した色になります。 `tc rgb "#RRGGBB"`, `tc rgb "0xRRGGBB"` は、任意の 24-bit RGB 色を 設定します。 `tc rgb 0xRRGGBB` も同じです (16 進定数値には引用符は不要)。
<pointstyle> がキーワード lt, pt, ps とともに与えられると (以下参照: style (89.12))、与えられたスタイルと、与えられた線種の色で見出し位置に 点 (point) が描画され、見出し文字列は少し移動されます。このオプション は mouse 拡張された出力形式でのラベルの配置に、デフォルトで使用され ています。見出し文字列近くの点の描画機能を off (これがデフォルト) にす るには、nopoint を使用してください。
その移動は、デフォルトでは、<pointstyle> が与えられれば pointsize の 単位で 1,1 で、<pointstyle> が与えられていなければ 0,0 です。移動は、 追加の offset <offset> でも制御できます。ここで、<offset> は x,y か または x,y,z の形式ですが、それに座標系を選択して、その前に first, second, graph, screen, character のいずれかをつけることもでき ます。詳細は、以下参照: coordinates (12)。
もし一つ (あるいはそれ以上の) 軸が時間軸である場合、座標は timefmt の書式にしたがって引用符で囲まれた文字列で与える必要があります。以下参照: set xdata (100.118), set timefmt (100.96)。
set label に関して有効なオプションは、描画スタイル labels でも有効 です。以下参照: labels (50)。この場合、textcolor, rotate, pointsize の属性の後ろにキーワード variable をつけて、それらを固定値でないよう にすることが可能です。その場合個々のラベルの対応する属性値は、using 指定の追加列により決定します。
(1,2) の位置に "y=x" と書く場合:
set label "y=x" at 1,2
Symbol フォントのサイズ 24 の "シグマ" (Σ) をグラフの真中に書く場合:
set label "S" at graph 0.5,0.5 center font "Symbol,24"
見出し "y=x^
2" の右端が (2,3,4) に来るようにし、タグ番号として 3 を使う
場合:
set label 3 "y=x^2" at 2,3,4 right
その見出しを中央揃えにする場合:
set label 3 center
タグ番号 2 の見出しを削除する場合:
unset label 2
全ての見出しを削除する場合:
unset label
全ての見出しをタグ番号順に表示する場合:
show label
x 軸が時間軸であるグラフに見出しを設定する例:
set timefmt "%d/%m/%y,%H:%M" set label "Harvest" at "25/8/93",1
データと、新たに当てはめられたパラメータによる当てはめ関数を描画したい
場合、fit の後でかつ plot の前に以下を実行します:
set label sprintf("a = %3.5g",par_a) at 30,15 bfit = gprintf("b = %s*10^%S",par_b) set label bfit at 30,20
当てはめられるパラメータのついた関数の定義式を表示したい場合:
f(x)=a+b*x fit f(x) 'datafile' via a,b set label GPFUN_f at graph .05,.95 set label sprintf("a = %g", a) at graph .05,.90 set label sprintf("b = %g", b) at graph .05,.85
見出し文字列を小さい点から少しだけ移動する場合:
set label 'origin' at 0,0 point lt 1 pt 2 ps 3 offset 1,-1
pm3d を使った 3 次元のカラー曲面上のある点の位置に、その z の値 (この
場合 5.5) に対応した色を見出し文字列につける場合:
set label 'text' at 0,0,5.5 tc palette z
set label at 0,0 "Plot origin" hypertext point pt 1 plot 'data' using 1:2:0 with labels hypertext point pt 7 \ title 'mouse over point to see its order in data set'
wxt と qt 出力形式では、文字列が表示されたあとにハイパーテキスト部分を 左クリックするとそのハイパーテキストがクリップボードにコピーされます。
試験段階の機能 (仕様の細かい部分は変更の可能性あり)
"image{<xsize>,<ysize>}:<filename>{
\n<caption text>}" の形式の文字列は
ポップアップボックス内で画像ファイルを表示させるようにします。サイズ指
定によりデフォルトのサイズ 300x200 を変更できます。認識する画像ファイ
ルの型は出力形式によって違いますが、*.png は常に OK です。画像ファイル
名の後ろに書いた文字列は、通常のハイパーテキストと同様に表示します。
例:
set label 7 "image:../figures/Fig7_inset.png\nFigure 7 caption..." set label 7 at 10,100 hypertext point pt 7
例えば、線種 1 と 2 を以下のように再定義してみます:
set linetype 1 lw 2 lc rgb "blue" pointtype 6 set linetype 2 lw 2 lc rgb "forest-green" pointtype 8
すると、それらの線種の最初の見た目がどうであったかに関わらず、lt 1 を 使用しているすべてのものが、その後は太い青線になります。この性質は、lt 1 によって作られた一時的なラインスタイルの定義のようなものにも適用され ます。同様に、線種 2 は、その後は太い緑線になります。
この仕組みは、gnuplot で使用する線種列に対する個人的な好みを設定するの にも使えます。それを行うには、実行時初期化ファイル /.gnuplot に、例え ば以下のようなそれ用のコマンド列を追加することをお勧めします:
set linetype 1 lc rgb "dark-violet" lw 2 pt 1 set linetype 2 lc rgb "sea-green" lw 2 pt 7 set linetype 3 lc rgb "cyan" lw 2 pt 6 pi -1 set linetype 4 lc rgb "dark-red" lw 2 pt 5 pi -1 set linetype 5 lc rgb "blue" lw 2 pt 8 set linetype 6 lc rgb "dark-orange" lw 2 pt 3 set linetype 7 lc rgb "black" lw 2 pt 11 set linetype 8 lc rgb "goldenrod" lw 2 set linetype cycle 8
こうすると、あなたが gnuplot を実行する度に線種はこれらの値に初期化さ れます。線種はあなたが好む数だけ初期化できます。再定義しない場合は、そ れはデフォルトの属性を持ち続けます。例えば線種 3 を再定義から外せば、 それは青で pt 3, lw 1 となります。
同様のスクリプトファイルで、テーマベースの色選択の定義を行ったり、特定 の描画タイプ、あるいは特定の出力形式用に色をカスタマイズしたりすること も可能です。
コマンド set linetype cycle 8 は、大きな番号の線種に対しては色や線幅 に関するこれらの定義を再利用することを gnuplot に伝えます。すなわち、 線種 (linetype) 9-16, 17-24 等に対しては、これと同じ色、幅の列を使用し ます。ただし、点の属性 (pointtype, pointsize, pointinterval) は、この コマンドの影響は受けません。unset linetype cycle はこの機能を無効に します。大きな線種番号の線の属性を明示的に定義した場合は、それは小さい 番号の線種の属性の再利用よりも優先されます。
set link {x2 | y2} {via <expression1> inverse <expression2>} unset link
コマンド set link は、x 軸と x2 軸、または y 軸と y2 軸の間の対応を 設定します。<expression1> は、第 1 軸の座標を第 2 軸に写像する数式です が、<expression2> は第 2 軸の座標を第 1 軸に写像する数式です。
例:
set link x2
これは、このコマンドの最も単純な形式で、x2 軸を範囲 (range) も伸縮 (scale) も方向も x 軸と全く同じにします。set xrange, set x2range や set auto x などのコマンドは、この場合 x 軸にも x2 軸にも作用しま す。
set link x2 via x**2 inverse sqrt(x) plot "sqrt_data" using 1:2 axes x2y1, "linear_data" using 1:2 axes x1y1
このコマンドは、x 軸と x2 軸の、順方向と逆方向の対応を設定しています。 順方向の対応は、x2 軸の刻みラベルと、マウスの x2 座標を生成するのに使 い、逆方向の対応は、x2 軸系で指定された座標を描画するのに使います。こ の対応は、非負の x 座標にのみ有効であることに注意してください。y2 軸に 対応させた場合、<expression1> と <expression2> には仮変数として y を使 う必要があります。
書式:
set loadpath {"pathlist1" {"pathlist2"...}} show loadpath
パス名は単一のディレクトリ名、または複数のパス名のリストとして入力しま す。複数のパスからなるパスリストは OS 固有のパス区切り、例えば Unix で はコロン (':'), MS-DOS, Windows, OS/2 ではセミコロン (';') 等で区切り ます。show loadpath, save, save set コマンドは、OS 固有のパス区 切りをスペース (' ') で置き換えます。
環境変数 GNUPLOT_LIB が設定されている場合、その内容は loadpath に追 加されますが、show loadpath は、set loadpath と GNUPLOT_LIB の値を 別々に表示しますし、save, save set コマンドは、GNUPLOT_LIB の値の 方は無視します。
書式:
set locale {"<locale>"}
<locale> にはインストールされたシステムで使うことの出来る任意の言語を 指定できます。可能なオプションについてはシステムのドキュメントを参照し てください。コマンド set locale "" は、環境変数 LC_TIME, LC_ALL, ま たは LANG からロカールの値を決定しようとします。
小数点に関する locale を変更したい場合は、以下参照: set decimalsign (100.21)。 文字エンコードを現在のロカールのものに変更したい場合は、以下参照:set encoding (100.24)。
set logscale <axes> {<base>} unset logscale <axes> show logscale
ここで、<axes> (軸) は、x, x2, y, y2, z, cb, r の任意の 順序の組み合せが可能です。<base> は、対数目盛りの底です (デフォルトの 底は 10)。軸を指定しなかった場合は、r 以外のすべての軸が対象となります。コマンド unset logscale は、すべての軸の対数目盛りを解除します。 対数軸に対してつけられる目盛りの刻みは、等間隔ではないことに注意してく ださい。以下参照: set xtics (100.123)。
例:
x, z 両軸について対数目盛りを設定する:
set logscale xz
y 軸について底 2 とする対数目盛りを設定する:
set logscale y 2
pm3d plot 用に z と色の軸に対数目盛りを設定する:
set logscale zcb
z 軸の対数目盛りを解除する:
unset logscale z
書式:
set mapping {cartesian | spherical | cylindrical}
デフォルトではカーテシアン座標 (通常の x,y,z 座標) が使われます。
球面座標では、データは 2 つか 3 つの列 (またはその個数の using エン トリ) として与えられます。最初の 2 つは、set angles で設定された単位 での方位角 (theta) と仰角 (phi) (すなわち "経度" と "緯度") とみなされ ます。半径 r は、もし 3 列目のデータがあればそれが使われ、もしなければ 1 に設定されます。各変数の x,y,z との対応は以下の通りです:
x = r * cos(theta) * cos(phi) y = r * sin(theta) * cos(phi) z = r * sin(phi)
これは、"極座標系" というより、むしろ "地学上の座標系" (緯度、経度) に 相当することに注意してください (すなわち、phi は z 軸となす角、という より赤道から計った仰角、になります)。
円柱座標では、データはやはり 2 つか 3 つの列で与えられ、最初の 2 つは theta (set angle で指定された単位の) と z と見なされます。半径 r は 球面座標の場合と同様、3 列目のデータがあればそれが、なければ 1 と設定 されます。各変数の x,y,z との対応は以下の通りです:
x = r * cos(theta) y = r * sin(theta) z = z
mapping の効果は、splot コマンド上の using によるフィルタで実現 することも可能ですが、多くのデータファイルが処理される場合は mapping の方が便利でしょう。しかし、mapping を使っていても、もしファイルのデ ータの順番が適切でなかったら結局 using が必要になってしまいます。
mapping は plot では何もしません。 world.dem: mapping のデモ。
書式:
set lmargin {{at screen} <margin>} set rmargin {{at screen} <margin>} set tmargin {{at screen} <margin>} set bmargin {{at screen} <margin>} set margins <left>, <right>, <bottom>, <top> show margin
<margin> のデフォルトの単位には、適切と思われる、文字の高さと幅が使わ れます。正の値は余白の絶対的な大きさを定義し、負の値 (または無指定) は gnuplot によって自動計算される値を使うことになります。3 次元描画では 左の余白 (lmargin) のみが文字の大きさを単位として設定できます。
キーワード at screen は、その余白の指定が全体の描画領域に対する割合 であることを意味します。これは、多重描画 (multiplot) モードでの 2D, 3D グラフの角を正確に揃えるのに使えます。この配置は現在の set origin や や set size の値を無視するようになっていて、それは多重描画内のグラフ の配置の別の方法として使われることを意図しています。
描画の余白は通常目盛り、目盛りの見出し、軸の見出し、描画のタイトル、 日付、そして境界の外にある場合の凡例 (key) のサイズ等を元に計算されま す。しかし、目盛りの刻みが境界でなく軸の方についている場合 (例えば set xtics axis によって)、目盛りの刻み自身とその見出しは余白の計算に は含まれませんし、余白に書かれる他の文字列の位置の計算にも含まれません。 これは、軸と境界が非常に近い場合、軸の見出しが他の文字列を上書きする可 能性を示唆します。
^
-6) を示す接頭辞として小文字の u を使い
ます。コマンド set micro は、それとは異なる印字用文字 (unicode
U+00B5) を使用するよう gnuplot に指示します。その文字を表現するのに使
用されるバイト列は、現在の encoding に依存します。以下参照:format specifiers (100.28.2), encoding (100.24)。
このコマンドは試験段階のもので、仕様の細かい部分は変更する可能性があり ます。
set minussign
は、gprintf() の数字の出力に、ハイフンの代わりにマイナス符号文字を使用 するよう指示します。UTF-8 ロケールではそれは Unicode U+2212 に対応する マルチバイト文字列になり、Window コードページ 1252 ロケールでは、これ は 8 ビット文字の ALT+150 ("en dash") になります。コマンド set minussign は、軸の刻みのラベルと、gprintf を明示的に呼び出して生 成された文字列に影響を与えますが、その他の場合のハイフンを含む文字列に は何ら影響を与えません。以下参照: gprintf (100.28.1)。
LaTeX は、それ自身が負の符号を自前で処理する仕組みを持っているため、こ のコマンドは、LaTeX 系の出力形式を使用している場合は無視されることに注 意してください。postscript 出力形式を使用する場合も、gnuplot の postscript 用前処理ルーチンが ascii のハイフンコード \055 を minus という名前の異なる文字に変換するので、このコマンドは必要はありません。
このコマンドは試験段階のもので、仕様の細かい部分は変更する可能性があり ます。
例 (utf8 ロケールを仮定):
set minus A = -5 print "A = ",A # ハイフンを含む文字列を出力 print gprintf("A = %g",A) # U+2212 文字を含む文字列を出力 set label "V = -5" # ハイフンを含むラベル set label sprintf("V = %g",-5) # ハイフンを含むラベル set label gprintf("V = %g",-5) # U+2212 を含むラベル
set monochrome {linetype N <linetype properties>}
コマンド set monochrome は、線種群の別の設定法を選択しますが、それは
色の違いではなく、点線/破線パターンや線幅の違いによるものです。このコ
マンドは、gnuplot の以前のバージョンのある出力形式で monochrome オプションとして提供していたものに置き換わるもので、後方互換性のため、それらの出力形式で "mono" オプションを指定すると、暗黙で set monochrome を呼び出します。
例えば、
set terminal pdf mono
set terminal pdf set mono
白黒モード (monochrome) の選択は、明示的な RGB 色、パレット色を使用し てのカラーの線の描画を妨げるものではありませんが、以下も参照:set palette gray (100.66.4)。 デフォルトでは 6 つの白黒線種が定義されていますが、それらの属性を変更 したり、白黒線種を追加することは、フル形式でそのコマンドを使用すること でできます。白黒線種にほどこされた変更は、カラーの線種には影響を与えま せんし、その逆も同様です。カラー線種に復帰するには、unset monochrome か、set color としてください。
マウスモードは 2 種類用意されています。2 次元モードは、plot コマンド と splot の 2 次元射影 (すなわち、z の回転角が 0, 90, 180, 270, 360 度の set view、および set view map) で動作します。このモードでは、 マウス位置が追跡され、マウスボタンや矢印キーを使って拡大したり視点移動 したりできます。グラフに対応する凡例のタイトルや別なウィジェットアイコ ンなどをクリックすることで、個々のグラフの描画をオン/オフに切り替える ことをサポートする出力形式もあります。
splot による 3 次元グラフに対しては、グラフの視方向 (view) と縮尺の 変更が、それぞれマウスボタン 1 と 2 (によるドラッグ) で行えます。ボタ ン 2 の垂直方向のドラッグを shift キーと同時に行うと、z 軸の一番下の位 置 (xyplane) を上下します。これらのボタンにさらに <ctrl> キーを押す と、座標軸は表示されますが、データの表示は消えます。これは大きなデータ に対して有用でしょう。マウスボタン 3 は、z 軸の向き (azimuth) を制御し ます (以下参照: set view azimuth (100.105.1))。
マウスは多重描画 (multiplot) モード内では無効ですが、unset multiplot で多重描画が完結すれば、マウス機能は ON になります。ただし、その作用は multiplot 内の最後の描画 (replot で描画されるようなもの) に対してのみ です。
書式:
set mouse {doubleclick <ms>} {nodoubleclick} {{no}zoomcoordinates} {zoomfactors <xmultiplier>, <ymultiplier>} {noruler | ruler {at x,y}} {polardistance{deg|tan} | nopolardistance} {format <string>} {mouseformat <int> | <string> | function <f(x,y)>} {{no}labels {"labeloptions"}} {{no}zoomjump} {{no}verbose} unset mouse
オプション noruler と ruler は、定規 (ruler) 機能を off, on にしま す。ruler には座標を与えて原点を設定することもできます。ruler が on の間、ruler の原点からマウスまでのユーザ単位での距離が連続的に表示 されます。デフォルトでは、ruler のトグルスイッチは 'r' にキー割り当て されています。
オプション polardistance は、マウスカーソルから定規 (ruler) までの距 離を極座標でも表示 (距離、および角度または傾き) するかどうかを決定しま す。これはデフォルトのキー割り当て '5' に対応します。
ボタン 2 の gnuplot の永続的なラベルを定義するには、オプション labels を使用します。デフォルトは nolabels で、ボタン 2 は単に一時 的なラベルをマウス位置に描画します。ラベルは現在の mouseformat の設 定に従って書かれます。labeloptions 文字列は、コマンド set label コ マンドに渡されます。そのデフォルトは "point pointstyle 1" で、これはラ ベル位置に小さいプラス (+) を描画します。一時的なラベルは、その次の replot、またはマウスズーム操作では現れません。永続的なラベルは、ラベ ルの点の上で Ctrl キーを押してボタン 2 をクリックすることで消すことが できます。実際のラベルの位置にどれ位近くでクリックしなければいけないか の閾値も pointsize で決定されます。
オプション verbose が ON の場合、実行時の報告コマンドが表示されます。 このオプションはドライバウィンドウ上で 6 を打つことで ON/OFF がスイ ッチできます。デフォルトでは verbose は OFF になっています。
ドライバウィンドウ上で 'h' を打つと、マウスとキー割当の短い説明が表示 されます。これは、ユーザ定義のキー割当、すなわち bind コマンドによる hotkeys (以下参照: bind (23.1)) も表示されます。ユーザ定義の hotkeys は デフォルトのキー割当を無効にします。 以下も参照: bind (23.1), label (100.39)。
この設定は、"set mouse mouseformat" を置き換えるものです。
set mouse mouseformat i set mouse mouseformat "custom format" set mouse mouseformat function string_valued_function(x, y)
最後の文字列を返すカスタム関数の指定は「試験段階」です。それは、スクリ ーン座標からグラフ座標への逆の対応が x, y の両方を組で考慮する必要があ るような座標系の読み出しを可能にします。例については、map_projection デモを参照してください。
例:
`set mouse mouseformat "mouse x,y = %5.2g, %10.3f"`.
以下の書式が利用可能です:
0 デフォルト (1 と同じ) 1 軸の座標 1.23, 2.45 2 グラフ座標 (0 から 1 まで) /0.00, 1.00/ 3 x = timefmt y = 軸座標 [(`set timefmt` の設定), 2.45] 4 x = 日付 y = 軸座標 [31. 12. 1999, 2.45] 5 x = 時刻 y = 軸座標 [23:59, 2.45] 6 x = 日付/時刻 y = 軸座標 [31. 12. 1999 23:59, 2.45] 7 `set mouse mouseformat <format-string>` による書式 8 `set mouse mouseformat function <func>` による書式
オプション zoomcoordinates は、拡大の際に、拡大の枠の端にその座標を 書くかどうかを決定し、デフォルトでは ON になっています。
オプション zoomjump が ON の場合、ボタン 3 による拡大範囲の選択を開 始すると、マウスポインタは自動的に少しだけずれた位置に移動します。これ は、ごく小さい (または空でさえある) 拡大範囲を選択してしまうことを避け るのに便利でしょう。デフォルトでは zoomjump は OFF です。
書式:
set multiplot { title <page title> {font <fontspec>} {enhanced|noenhanced} } { layout <rows>,<cols> {rowsfirst|columnsfirst} {downwards|upwards} {scale <xscale>{,<yscale>}} {offset <xoff>{,<yoff>}} {margins <left>,<right>,<bottom>,<top>} {spacing <xspacing>{,<yspacing>}} } set multiplot {next|previous} unset multiplot
出力形式 (terminal) によっては、コマンド unset multiplot が与えられ るまで何の描画も表示されないことがあります。この場合このコマンドにより ページ全体の描画が行なわれ、gnuplot は標準の単一描画モードになります。 それ以外の出力形式では、各 plot コマンドがそれぞれ表示を更新します。
コマンド clear は、次の描画に使う長方形領域を消すのに使えます。典型 的には、大きいグラフの内部に小さなグラフを挿入するような場合に必要です。
定義済の見出しやベクトルは、各描画において、毎回現在のサイズと原点に従 って書かれます (それらが screen 座表系で定義されていない場合)。それ 以外の全ての set で定義されるものも各描画すべてに適用されます。もし 1 度の描画にだけ現われて欲しいものを作りたいなら、それが例えば日付 (timestamp) だとしたら、set multiplot と unset multiplot で囲まれ たブロック内の plot (または splot, replot) 命令の一つを set time と unset time ではさんでください。
multiplot のタイトルは、個々の描画タイトルがあったとしても、それとは別 のもので、ページの上部にそのためのキャンバス全体の幅にわたるスペースが 確保されます。
layout が指定されていない場合、あるいはより良い位置決めをしたい場合は、 コマンド set origin と set size 各描画で正しい位置に設定する必要が あります。詳細は、以下参照: set origin (100.63), set size (100.84)。
例:
set multiplot set size 0.4,0.4 set origin 0.1,0.1 plot sin(x) set size 0.2,0.2 set origin 0.5,0.5 plot cos(x) unset multiplot
これは、cos(x) のグラフを、sin(x) の上に積み重ねて表示します。
set size と set origin は全体の描画領域を参照し、それは各描画で利 用されます。以下も参照: set term size (9)。描画境界を一列に揃えたいなら ば、set margin コマンドで、境界の外の余白サイズを同じサイズに揃える ことが出来ます。その使用に関しては、以下参照: set margin (100.48)。余白サイズ は文字サイズ単位の絶対的な数値単位を使用することに注意してください。よ って残ったスペースに描かれるグラフは表示するデバイスの表示サイズに依存 します。例えば、プリンタとディスプレイの表示は多分違ったものになるでし ょう。
オプション layout により、各描画の前にそれぞれ与えていた set size や set origin コマンドなしに、単純な複数グラフの描画を作成できます。 それらの設定は自動的に行なわれ、いつでもその設定を変更できます。 layout では表示は <rows> 行と <cols> 列の格子に分割され、各格子は、 その後に続く対応する名前のオプションによって行 (rowsfirst)、あるいは列 (columnsfirst) が先に埋められて行きます。描画グラフの積み上げは下方向 (downwards) に、または上方向 (upwards) に伸びるようにできます。デ フォルトは rowsfirst で downwards です。 コマンド set multiplot next と set multiplot previous は、レイアウ トオプションを使用している場合のみに関係します。next は、格子内の次 の位置をスキップし、空白を残します。prev は、直前に描画した位置の直 前の格子位置に戻ります。
各描画は scale で伸縮を、offset で位置の平行移動を行なうことができ ます。scale や offset の y の値が省略された場合は、x の値がそれに使用 されます。unset multiplot により自動配置機能はオフになり、そして set size と set origin の値は set multiplot layout の前の状態に 復帰されます。
例:
set size 1,1 set origin 0,0 set multiplot layout 3,2 columnsfirst scale 1.1,0.9 [ ここには 6 つまでの描画コマンド ] unset multiplot
上の例では 6 つの描画が 2 列の中に上から下へ、左から右へと埋められて行 きます。各描画は水平サイズが 1.1/2、垂直サイズが 0.9/3 となります。
他にも、そのレイアウト内のすべてのグラフに一様なマージンをオプション layout margins と spacing で設定することができますが、これは一緒に 使う必要があります。margins は、格子配置の複数グラフ全体の外側に対す るマージンを設定します。
spacing は、隣接する部分グラフ間の隙間を与えますが、character か screen 単位で指定することもできます。単一の値を指定すると、それは x, y の両方の方向に使用されますが、2 つの異なる値を指定することもできます。
一つの値に単位がなければ、直前のマージン設定のものを使用します。
例:
set multiplot layout 2,2 margins 0.1, 0.9, 0.1, 0.9 spacing 0.0
この場合、左にあるグラフの左の境界は、スクリーン座標の 0.1 に置かれ、 右にあるグラフの右の境界はスクリーン座標 0.9 の場所に置かれる、等とな ります。各グラフの隙間は 0 に指定しているので、内側の境界線は重なりま す。
例:
set multiplot layout 2,2 margins char 5,1,1,2 spacing screen 0, char 2
これは、左のグラフの境界は、キャンバスの左端から 5 文字幅の場所に、右 のグラフの右の境界は、キャンバスの端から 1 文字幅の場所にあるようなレ イアウトを生成します。下のマージンは 1 文字分の高さ、上のマージンは 2 文字分の高さになります。グラフ間の水平方向の隙間はありませんが、縦方向 には 2 文字分の高さに等しい隙間があります。
例:
set multiplot layout 2,2 columnsfirst margins 0.1,0.9,0.1,0.9 spacing 0.1 set ylabel 'ylabel' plot sin(x) set xlabel 'xlabel' plot cos(x) unset ylabel unset xlabel plot sin(2*x) set xlabel 'xlabel' plot cos(2*x) unset multiplot
以下も参照 multiplot のデモ (multiplt.dem)
書式:
set mxtics {<freq> | default} unset mxtics show mxtics
これらの書式は mytics, mztics, mx2tics, my2tics, mrtics, mttics, mcbtics に対しても同じです。
<freq> は大目盛り間の、小目盛りによって分割される区間の数 (小目盛りの 数ではありません) です。通常の線形軸に対してはデフォルトの値は 2 か 5 で、これは大目盛りによって変化します。よって大目盛り間に 1 つ、または 4 つの小目盛りが入ることになります。default を指定することによって小 目盛りの数はデフォルトの値に戻ります。
軸が対数軸である場合、分割区間の数はデフォルトでは有意な数にセットされ ます (10 個の長さを元にして)。<freq> が与えられていればそちらが優先さ れます。しかし、対数軸では通常の小目盛り (例えば 1 から 10 までの 2, 3, ..., 8, 9 の刻み) は、9 つの部分区間しかありませんが、<freq> の設定は 10 とすることでそうなります。
小目盛りを任意の位置に設定するには、("<label>" <pos> <level>, ...) の 形式を set {x|x2|y|y2|z}tics で使用してください。ただし、<label> は 空 ("") で、<level> を 1 にします。
コマンド set m{x|x2|y|y2|z}tics は、大目盛りが一様の間隔の場合にのみ 働きます。もし全ての大目盛りが set {x|x2|y|y2|z}tics によって手動で 配置された場合は、この小目盛りのコマンドは無視されます。自動的な大目盛 りの配置と手動の小目盛りの配置は、set {x|x2|y|y2|z}tics と set {x|x2|y|y2|z}tics add とを使うことで共存できます。
例:
set xtics 0, 5, 10 set xtics add (7.5) set mxtics 5
set logscale y set ytics format "" set ytics 1e-6, 10, 1 set ytics add ("1" 1, ".1" 0.1, ".01" 0.01, "10^-3" 0.001, \ "10^-4" 0.0001) set mytics 10
デフォルトでは小目盛りの表示は、線形軸ではオフで、対数軸ではオンになっ ています。その設定は、大目盛りに対する axis|border と {no}mirror の指定を継承します。これらに関する情報については、以下参照:set xtics (100.123)。
set nonlinear <axis> via f(axis) inverse g(axis) unset nonlinear <axis>
このコマンドはコマンド set link に似ていますが、2 つのリンクされた軸 の一方のみを表示する点が違います。隠される軸は線形軸のままです。表示す る軸に沿う座標は、g(x) を適用して隠れている軸の座標から割り当てられ、 f(x) は表示する軸の座標を隠れている線形軸に対応させます。変換式と逆変 換式の両方を指定する必要があります。
これがどのように機能するかを理解するには、x2 軸が対数軸の場合を考えて みてください。
set x2ange [1:1000] set nonlinear x2 via log10(x) inverse 10**x
この例は、set log x2 と同じ効果を生みます。この場合隠れている軸は、 [log10(xmin):log10(xmax)] を計算することで [0:3] の範囲になります。
変換関数 f(), g() は、非線形軸毎に適切なダミー変数を使って定義する必要
があります。
axis: x x2 dummy variable x axis: y y2 dummy variable y axis: z cb dummy variable z axis: r dummy variable r
set xrange [-3:3] set nonlinear x via norm(x) inverse invnorm(x)
この例は確率スケール ("プロビット") の x 軸を作成し、累積正規分布関数 Phi(x) のグラフが線形の y 軸に対して直線となります。
logit(p) = log(p/(1-p)) logistic(a) = 1. / (1. + exp(-a)) set xrange [.001 : .999] set nonlinear y via logit(y) inverse logistic(y) plot logit(x)
この例はロジットスケールの y 軸を作成し、線形の x 軸に対する logit(x) のグラフが直線になります。
f(x) = (x <= 100) ? x : (x < 500) ? NaN : x-390 g(x) = (x <= 100) ? x : x+390 set xrange [0:1000] noextend set nonlinear x via f(x) inverse g(x) set xtics add (100,500) plot sample [x=1:100] x, [x=500:1000] x
この例は "切断軸" を作成します。x 座標は左に 0 から 100、右に 500 から 1000 が並び、その間に 10 幅の小さな隙間ができます。100 < x < 500 の間 のデータは描画されず、これは期待通りの動作をします。
3 次元グラフのオブジェクト指定では、グラフ座標は使えません。3 次元の長 方形と楕円は、スクリーン座標だけに制限されています。
書式:
set object <index> <object-type> <object-properties> {front|back|behind|depthorder} {clip|noclip} {fc|fillcolor <colorspec>} {fs <fillstyle>} {default} {lw|linewidth <width>} {dt|dashtype <dashtype>} unset object <index>
<object-type> は、rectangle, ellipse, circle, polygon のいずれ かです。個々のオブジェクトの型は、その型に特有の性質もいくつか持ってい ます。
オプション front, back, behind は、グラフ自身の描画の前、あるい
は後のどちらに描くかを制御します。以下参照: layers (22)。
front を指定すると、オブジェクトはすべての描画要素の前 (上) に描画さ
れますが、front と指定されたラベルよりは後ろ (下) になります。back
を指定すると、すべての描画要素、すべてのラベルの後ろに配置されます。
behind は、軸や back の長方形を含むすべてのものの後ろに配置されま
す。よって、
set object rectangle from screen 0,0 to screen 1,1 behind
デフォルトでは、オブジェクトは、少なくとも 1 つの頂点がスクリーン座標 で与えられていない限り、グラフ境界でクリッピングされます。noclip と 設定すると、グラフ境界でのクリッピングは無効になりますが、スクリーンサ イズに対するクリッピングは行われます。
オブジェクトの塗り潰しの色は <colorspec> で指定します。fillcolor は fc と省略できます。塗り潰しスタイルは <fillstyle> で指定します。詳細 は、以下参照: colorspec (21.1), fillstyle (100.86.4)。キーワード default を指定す ると、これらの属性は描画が実際に行われるときのデフォルトの設定を受け継 ぎます。以下参照: set style rectangle (100.86.9)。
set object <index> rectangle {from <position> {to|rto} <position> | center <position> size <w>,<h> | at <position> size <w>,<h>}
長方形の位置は、対角に向かい合う 2 つの頂点 (左下と右上) の位置、ある いは中心点の位置と横幅 (<w>) と縦幅 (<h>) で指定できます。いずれの場合 も点の位置は、軸の座標 (first, second)、グラフ領域内の相対座標 (graph)、スクリーン座標 (screen) のいずれかを使用できます (以下参照: coordinates (12))。オプション at と center は同じ意味です。
例:
# 座標軸で囲まれた領域全体の背景を水色に set object 1 rect from graph 0, graph 0 to graph 1, graph 1 back set object 1 rect fc rgb "cyan" fillstyle solid 1.0
# 左下角が 0,0, 右上角が 2,3 の赤い四角を一つ置く set object 2 rect from 0,0 to 2,3 fc lt 1
# 青い境界の空 (塗り潰さない) 長方形を置く set object 3 rect from 0,0 to 2,3 fs empty border rgb "blue"
# 頂点は移動しないまま、塗り潰しと色をデフォルトに変更 set object 2 rect default
スクリーン座標で長方形の角を指定すると、それは現在のグラフ領域の端を越 えることも可能ですが、その他の場合は長方形はグラフ内に収まるようにクリ ッピングされます。
set object <index> ellipse {at|center} <position> size <w>,<h> {angle <orientation>} {units xy|xx|yy} {<other-object-properties>}
楕円の位置は、中心を指定し、その後ろに幅と高さ (主軸と副軸) を指定しま す。キーワード at と center は同じ意味です。中心の位置の指定には、 軸の座標 (first, second)、グラフ領域内の相対座標 (graph)、スクリ ーン座標 (screen) のいずれかを使用できます (以下参照: coordinates (12))。 主軸と副軸の長さは、軸の座標で与えなければいけません。楕円の向き (orientation) は、水平軸と楕円の主軸との間の角度で指定します。角度を与 えなければ、デフォルトの楕円の向きが代わりに使われます (以下参照:set style ellipse (100.86.10))。キーワード units は、楕円の軸の縮尺の制御に使 用します。units xy は、主軸は x 軸の単位で、副軸は y 軸の単位で計算 しますが、units xx は両軸とも x 軸の単位で縮尺し、units yy は両軸 とも y 軸の単位になります。 デフォルトは xy ですが、set style ellipse units の設定でいつでも変 更できます。
注意: x 軸と y 軸の縮尺が等しくない場合 (そして units xy の場合)、回 転後の主軸と副軸の比は正しくはなりません。
set object ellipse size <2r>,<2r> と set object circle <r> とは、 一般には同じことにはならないことに注意してください。circle の半径は常 に x 軸の単位で計られ、よって x 軸と y 軸の縮尺が違ったり、描画のアス ペクト比が 1 でなくても、常に円が生成されます。units が xy に設定 されていれば、'set object ellipse' では、最初の <2r> は x 軸の単位で、 後ろの <2r> は y 軸の単位で計られますが、これは x 軸と y 軸の縮尺が同 じで、かつ描画のアスペクト比が 1 である場合のみ円を生成することを意味 します。しかし、units を xx や yy にセットすれば、コマンド set object で指定した直径は同じ単位で計算されるので、楕円は正しいア スペクト比を持ち、描画をリサイズしてもそのアスペクト比は保持されます。
set object <index> circle {at|center} <position> size <radius> {arc [<begin>:<end>]} {no{wedge}} {<other-object-properties>}
円の位置は、中心を指定し、その後ろに半径を指定します。キーワード at と center は同じ意味です。2 次元グラフでは、位置と半径は任意の座標系 で指定できます。以下参照: coordinates (12)。3 次元グラフの円にはグラフ座 標は使えません。そのどの場合でも、半径は軸、グラフ、スクリーンの水平方 向の縮尺に対して計られ、水平方向と垂直方向の縮尺にずれがあっても、結果 が常に正しく円になるように直されます。円をグラフの座標で描きたい (つま り水平軸と垂直軸のスケールが違う場合にはそれが楕円として表示されるよう にしたい) 場合は、代わりに set object ellipse を使ってください。
デフォルトでは、完全な円が描画されます。オプションの arc に開始角と 終了角を度を単位として指定すると円弧を描画します。円弧は、常に反時計回 りに描かれます。
以下も参照: set style circle (100.86.8), set object ellipse (100.61.2)。
set object <index> polygon from <position> to <position> ... {to <position>}
from <position> rto <position> ... {rto <position>}
多角形の位置は、頂点の位置の列を与えることで指定できます。それらには、 任意の座標系が使えます。相対的な座標 (rto) を指定する場合は、その座標 系は前の頂点と同じ座標系でなければいけません。以下参照: coordinates (12)。
例:
set object 1 polygon from 0,0 to 1,1 to 2,0 set object 1 fc rgb "cyan" fillstyle solid 1.0 border lt -1
3 次元多角形ではないオブジェクトにこの機能を設定すると、それは多分全く 描画されません。
書式:
set offsets <left>, <right>, <top>, <bottom> unset offsets show offsets
各オフセットは定数、または数式が使え、それらのデフォルトの値は 0 です。 デフォルトでは、左右のオフセットは x1 軸と同じ単位で指定し、上下のオフ セットは y1 軸と同じ単位で指定しますが、キーワード "graph" を用いるこ とで全グラフサイズに対する割合としてオフセットを指定することもできます。 非線形軸 (nonlinear axes) に対しては、"graph" によるオフセットのみ可能 です。
正のオフセットの値は、軸の範囲を指定された方向へ伸ばします。例えば正の 下方向のオフセットは y の最小値をより小さな値にします。負のオフセット 値は、自動縮尺とクリッピングに対して悪く影響します。
例:
set autoscale noextend set offsets graph 0.05, 0, 2, 2 plot sin(x)
この sin(x) のグラフの y の範囲は [-3:3] になります。それは、関数の y の範囲は [-1:1] に自動縮尺されますが、垂直方向のオフセットが端にそれぞ れ 2 を追加するためです。x の範囲は [-11:10] になりますが、これはデフ ォルトが [-10:10] で、左に全範囲の 0.05 の割合分広げられるためです。
書式:
set origin <x-origin>,<y-origin>
書式:
set output {"<filename>"} show output
ファイル名は引用符で囲まなければなりません。ファイル名が省略された場合 は、直前の set output で開かれたファイルがクローズされ、新たな出力が 標準出力 (STDOUT) に送られます。(もし、set output "STDOUT" とすると 出力は "STDOUT" という名前のファイルに送られるかもしれません ! ["かも しれない" というのは、例えば x11 や wxt などの terminal (出力形式) では set output が無視されるからです。])
set terminal と set output の両方を指定する場合、set terminal を 先に指定する方が安全です。それは、ある種の terminal では、OS が必要と するフラグをセットすることがあるからです。例えば、バイナリファイルに対 して別々の open コマンドを必要とするような OS などがそれに該当します。
パイプをサポートする環境では、パイプ出力も有用です。例えば以下の通りです:
set output "|lpr -Plaser filename" set term png; set output "|display png:-"
MS-DOS では、set output "PRN" とすると標準のプリンタに出力されます。 VMS では出力は任意のスプール可能なデバイスに送ることが出来ます。
set overflow {float | NaN | undefined} unset overflow
gnuplot のこのバージョンは、64 ビット整数演算をサポートします。これは、
2^
53 から 2^
63 (おおまかには 10^
16 から 10^
19) の整数評価の方が、IEEE
754 の浮動小数演算を使用する評価よりも精度の高い値を保持することを意味
します。しかし IEEE 浮動小数表現は、精度は犠牲にする代わりに、おおまか
には [-10^
307 : 10^
307] の全範囲をカバーしますが、整数演算は、その結果
が [-2^
63 : 2^
63] の範囲外になる場合はオーバーフローします。そのオーバ
ーフローが起きた場合に何をさせるかはコマンド set overflow により制御
できます。そのオプションは、以下を参照してください。
set overflow は、set overflow float と同じで、結果を整数として返す 代わりに実数値として返します。これがデフォルトです。
コマンド unset overflow は、整数演算のオーバーフローを無視するように します。エラーは出ません。32 ビット整数演算しかできない環境で、5.4 よ り前のバージョンの gnuplot の挙動に近づけたい場合は、これを使用すると いいでしょう。
コマンド reset は、オーバーフロー処理の状態に影響を与えません。
前のバージョンの gnuplot は、32 ビット演算に制限され、整数オーバーフロ ーは無視していました。しかし、組み込み演算の一部は、整数引数を与えても 完全に整数演算を行うとは限らないことに注意してください。これには、指数 演算 N**M や、和の演算 (以下参照: summation (16.5)) などが含まれます。これ らの演算は、現在は整数引数を与えた場合は整数値を返し、それらを内在的に オーバーフローの影響を受けやすくすることで set overflow の状態に支配 されるようにしています。
^
63 : 2^
63]) をオーバーフロ
ーした場合、その結果は代わりに浮動小数値として返します。これは、エラー
としては扱われません。
例:
gnuplot> set overflow float gnuplot> A = 2**62 - 1; print A, A+A, A+A+A 4611686018427387903 9223372036854775806 1.38350580552822e+19
^
63 : 2^
63]) をオーバーフロ
ーした場合、その結果は NaN (非数) を返します。これは、エラーとしては扱
われません。
例:
gnuplot> set overflow NaN gnuplot> print 10**18, 10**19 1000000000000000000 NaN
^
63 : 2^
63]) をオーバーフロ
ーした場合、その結果は未定義値となります。これは、エラーとして扱われま
す。
例:
gnuplot> set overflow undefined gnuplot> A = 10**19 ^ undefined value
+ - * / **
これらの演算はすべて、引数がすべて整数ならば、その評価でオーバーフロー が起きない限り、整数値の結果を返します。
set overflow は、以下の論理演算、ビット演算には影響しません。
<< >> | ^ &
和の評価の過程のどこかでオーバーフローが起きた場合は、 set overflow float とすると、最終的な和が整数の制限範囲内におさまる 場合であっても、実数値を返すようになります。
書式:
set palette set palette { { gray | color } { gamma <gamma> } { rgbformulae <r>,<g>,<b> | defined { ( <gray1> <color1> {, <grayN> <colorN>}... ) } | file '<filename>' {datafile-modifiers} | functions <R>,<G>,<B> } { cubehelix {start <val>} {cycles <val>} {saturation <val>} } { model { RGB | HSV | CMY } } { positive | negative } { nops_allcF | ps_allcF } { maxcolors <maxcolors> } } show palette show palette palette <n> {{float | int}} show palette gradient show palette fit2rgbformulae show palette rgbformulae show colornames
set palette は (すなわちオプションなしでは) デフォルトの値を設定しま す。それ以外の場合、オプションは任意の順に与えることができます。 show palette は、現在のパレットの属性を表示します。
show palette gradient は、パレットの勾配 (gradient) の定義が (それが 適切であれば) 表示されます。show palette rgbformulae は、定義済で利 用できる、灰色値からカラーへの変換公式が表示されます。 show colornames は、認識できる色名を表示します。
show palette palette <n> は、<n> 個の離散的な色を持つパレットの、現 在のパレットの設定によって計算される RGB の値の組とパレットの表を、画 面、または set print で指定されたファイルに書き出します。デフォルト の広い表は、追加のオプション float または int によって、3 列の [0..1] の実数値だけにするか [0..255] の整数値だけにするかをそれぞれ指定できま す。この方法で gnuplot のカラーパレットを、Octave のような他の画像アプ リケーションに渡すことができます。この他にも、コマンド test palette で、現在のパレットの R,G,B 成分の対応状態 (profile) を描画しその値をデ ータブロック $PALETTE に残させることもできます。
以下のオプションは、色付けの属性を決定します。
このパレットを使用する図は、gray か color になります。例えば、 pm3d カラー曲面では、範囲 [min_z,max_z] が灰色の範囲 [0:1] に対応し ていて、微小曲面四角形の 4 つの角の z 座標の平均値をこの範囲の中に対応 させることで各微小部分の灰色の値 (gray) が得られます。この値は、灰色階 調の色地図での灰色の値として直接使うことができますし、カラーの色地図で は、その灰色の値から (R,G,B) への変換、すなわち [0:1] から ([0:1],[0:1],[0:1]) への写像が使われます。
基本的に、2 種類の異なる写像方式が利用可能です: 1 つは灰色からカラーへ の解析的な公式、もう一つは離散的な対応表の補間によるものです。 palette rgbformulae と palette functions が解析的な公式用で、 palette defined と palette file が補間表用です。palette rgbformulae は postscript 出力のサイズを小さくすることができます。
コマンド show palette fit2rgbformulae は、現在の set palette に最 も良く対応する set palette rgbformulae を見つけ出します。当然、それ は rgbformulae パレット以外に対しても意味を持ちます。このコマンドは主 に、パレットの rgbformulae 定義が gnuplot と同じ物を使っている外部プロ グラム、例えば zimg などにとって有用です ( http://zimg.sourceforge.net
)。
set palette gray は、灰色階調のみのパレットにし、 set palette rgbformulae, set palette defined, set palette file, set palette functions はカラーパレットにします。灰色パレットから直前 のカラーパレットへ、set palette color で簡単に復帰できます。
set palette gamma <gamma> による自動的なガンマ補正は、灰色のパレット (set palette gray) と、cubehelix カラーパレット形式に行われます。 gamma = 1 の場合は、線形の光度グラデーションを生成します。以下参照:test palette (105)。
出力形式の多くは、有限個の色数しかサポートしていません (例えば gif で は 256 個)。デフォルトの gnuplot の線種色を割り当てた後の残りの有効な 色領域は、デフォルトでは pm3d 用に保存されます。よって、複数のパレット を使用するような multiplot は、最初のパレットがすべての有効な色の配置 として使用されてるので、失敗してしまうでしょう。このような制限は、十分 小さい値 N で set palette maxcolors <N> を使うことで緩和できます。こ のオプションは、N 個の離散的な色を、連続的なパレットから等間隔なサンプ リングで選択します。不等間隔な N 個の離散色を使いたい場合は、一つの連 続的なパレットの代わりに set palette defined を使用してください。
RGB 色空間が作業を行うのに常にもっとも有用な色空間であるとは限らない、 という理由で、色空間は model を使うことで、RGB, HSV, CMY のい ずれかに変更できます。RGB 以外の色空間では set palette defined の表で色名を使うと、それはおかしな色になります。全ての説明は RGB 色空間用 に書きますが、それぞれの色空間で、例えば R は H, C のことを意味 することに注意してください (G, B も同様)。
全ての色空間で、全ての値は [0,1] に制限されています。
RGB は赤、緑、青を、CMY は水色 (Cyan)、紫 (Magenta)、黄 (Yellow) を、 HSV は色相 (Hue)、彩度 (Saturation)、明度 (Value) をそれぞれ意味します。 色モデルのより詳しい情報については以下を参照してください: http://en.wikipedia.org/wiki/Color_space
注意: 以前のバージョンの gnuplot では、YIQ と XYZ の色空間モデルもサポートしていましたが、その実装は完全ではないか、正しくありませんでした。
RGB の色空間では、いくつかの良い割り当て公式があります:
7,5,15 ... 伝統的 pm3d (黒-青-赤-黄) 3,11,6 ... 緑-赤-紫 23,28,3 ... 海 (緑-青-白); 他の組み合わせも試してみてください 21,22,23 ... 温度色 (黒-赤-黄-白) 30,31,32 ... 白黒のカラー表示化 (黒-青-紫-黄-白) 33,13,10 ... 虹 (青-緑-黄-赤) 34,35,36 ... AFM 温度色 (黒-赤-黄-白)
HSV 色空間でのフルカラーパレット:
3,2,2 ... 赤-黄-緑-水色-青-紫-赤
rgbformulae という名前で呼ばれていても、例の通り、それらの関数は実際 には <H>,<S>,<V> または <X>,<Y>,<Z>, ... といった色の成分を決定するか もしれないということに注意してください。
図の色を反転させるには positive や negative を使ってください。
他の色体系に対する最も良い rgbformulae の集合は、以下のコマンドで見つけることができることを覚えておいてください。
show palette fit2rgbformulae
書式:
set palette defined { ( <gray1> <color1> {, <grayN> <colorN>}... ) }
<grayX> は [0,1] に割り当てられるべき灰色値で、<colorX> はそれに対応す る RGB 色です。カラー値は 3 種類の方法で指定することができます:
<color> := { <r> <g> <b> | '<color-name>' | '#rrggbb' }
赤、緑、青に対応する空白で区切られた 3 つの値 (それぞれ [0,1] 内)、引 用符でくくられた色名、または引用符でくくられた X 形式の指定方式、のい ずれかです。グラデーションの定義では、これらの 3 種の型を自由に組み合 わせることができますが、色空間として RGB でないものが選択された場合色 名 "red" は少し違ったものになるでしょう。使用できる色名は show colornames でその一覧を見ることができます。
<r> と書いても、HSV 色空間ではそれは <H> 成分を、といったように選択さ れたカラーモデルに依存して意味が違うことに注意してください。
<gray> の値は実数の昇順に並べる必要があります。その列の値は自動的に [0,1] に変換されます。
カッコつきのグラデーションの定義なしで set palette defined とした場 合、RGB 色空間にし、あらかじめ設定されたフルスペクトルグラデーションを 使用します。グラデーションを表示するには show palette gradient を使 用してください。
例:
灰色のパレット (役に立たないが教訓的な) を生成するには:
set palette model RGB set palette defined ( 0 "black", 1 "white" )
青黄赤のパレット (全てが等価の) を生成するには:
set palette defined ( 0 "blue", 1 "yellow", 2 "red" ) set palette defined ( 0 0 0 1, 1 1 1 0, 2 1 0 0 ) set palette defined ( 0 "#0000ff", 1 "#ffff00", 2 "#ff0000" )
虹のようなパレットを生成するには:
set palette defined ( 0 "blue", 3 "green", 6 "yellow", 10 "red" )
HSV 色空間でのフルカラースペクトル:
set palette model HSV set palette defined ( 0 0 1 1, 1 1 1 1 ) set palette defined ( 0 0 1 0, 1 0 1 1, 6 0.8333 1 1, 7 0.8333 0 1)
MATLAB で使われるデフォルトパレットの近似:
set pal defined (1 '#00008f', 8 '#0000ff', 24 '#00ffff', \ 40 '#ffff00', 56 '#ff0000', 64 '#800000')
等間隔な少しの色だけのパレットを生成するには:
set palette model RGB maxcolors 4 set palette defined ( 0 "yellow", 1 "red" )
'交通信号' (滑らかではなく gray = 1/3, 2/3 で跳びを持つ):
set palette model RGB set palette defined (0 "dark-green", 1 "green", \ 1 "yellow", 2 "dark-yellow", \ 2 "red", 3 "dark-red" )
例:
フルカラーパレットを生成するには:
set palette model HSV functions gray, 1, 1
黒から金色への良いパレット:
set palette model RGB functions 1.1*gray**0.25, gray**0.75, 0
ガンマ補正の白黒のパレット:
gamma = 2.2 color(gray) = gray**(1./gamma) set palette model RGB functions color(gray), color(gray), color(gray)
D A Green (2011) http://arxiv.org/abs/1108.5083
set palette cubehelix start 0.5 cycles -1.5 saturation 1 set palette gamma 1.5
例によって、<filename> が '-' の場合は、データがインライン形式で引き 続いて与えられ、一つの e のみの行でそれが終了することを意味します。
グラデーションを表示するには show palette gradient を使用してくださ い。
例:
RGB のパレットを [0,255] の範囲で読み込む:
set palette file 'some-palette' using ($1/255):($2/255):($3/255)
等距離の虹色 (青-緑-黄-赤) パレット:
set palette model RGB file "-" 0 0 1 0 1 0 1 1 0 1 0 0 e
バイナリパレットファイルも同様にサポートされています。以下参照:binary general (89.2.1)。R,G,B の double のデータの 64 個の 3 つ組をファイル
palette.bin に出力し、それを読み込む例:
set palette file "palette.bin" binary record=64 using 1:2:3
ガンマ補正は、cubehelix カラーパレット形式には適用されますが、他の色形 式には適用されません。しかし、明示的な色関数にガンマ補正を実装するのは 難しくありません。
例:
set palette model RGB set palette functions gray**0.64, gray**0.67, gray**0.70
補間されたグラデーションを使ってガンマ補正を行うには、適当な色に中間の 値を指定します。
set palette defined ( 0 0 0 0, 1 1 1 1 )
の代わりに例えば以下を指定してください:
set palette defined ( 0 0 0 0, 0.5 .73 .73 .73, 1 1 1 1 )
または、線形補間が "ガンマ補正" の補間に十分良く適合するまでより良い中 間の点を探してください。
pm3d 曲面を PostScript ファイルへ書いている場合、gnuplot に付属する
awk スクリプト pm3dCompress.awk を使うことで、そのファイルサイズを
50% まで小さくできるかもしれません。データが四角形の格子状になっている
場合は、スクリプト pm3dConvertToImage.awk を使うことでより大きな圧縮
率が得られる可能性があります。
使用法:
awk -f pm3dCompress.awk thefile.ps >smallerfile.ps awk -f pm3dConvertToImage.awk thefile.ps >smallerfile.ps
書式:
set parametric unset parametric show parametric
2 次元グラフにおいては、媒介変数表示関数はひとつの媒介変数に対する 2 つの関数で定められます。例としては plot sin(t),cos(t) とすることによっ て円が描けます (アスペクト比が正しく設定されていれば。以下参照:set size (100.84))。gnuplot は、両方の関数が媒介変数による plot のために 与えられていなければエラーメッセージを出します。
3 次元グラフにおいては面は x = f(u,v), y = g(u,v), z = h(u,v) で定め られます。よって 3 つの関数を組で指定する必要があります。例としては、 cos(u)*cos(v),cos(u)*sin(v),sin(u) とすることによって球面が描けます。 gnuplot は、3 つ全部の関数が媒介変数による splot のために与えられ ていなければエラーメッセージを出します。
これによって表現できる関数群は、単純な f(x) 型の関数群の内包することに なります。なぜならば、2 つ (3 つ) の関数は x, y (, z) の値を独立に計算 する記述ができるからです。実際、t,f(t) のグラフは、一番目の関数のよう な恒等関数を用いて x の値が計算される場合に f(x) によって生成されるグ ラフと等価です。同様に、3 次元での u,v,f(u,v) の描画は、f(x,y) と等価 です。
媒介変数表示関数は、x の関数、y の関数 (、z の関数)の順に指定し、それ らは共通の媒介変数およびその変域で定義されることに留意して下さい。
さらに、set parametric の指定は、新しい変数変域を使用することを暗に 宣言します。通常の f(x) や f(x,y) が xrange、yrange (、zrange) を使用 するのに対して、媒介変数モードではそれに加えて、trange, urange, vrange を使用します。これらの変域は set trange, set urange, set vrange によって直接指定することも、plot や splot で指定することもできます。 現時点では、これらの媒介変数のデフォルトの変域は [-5:5] となっています。 将来的にはこれらのデフォルト値をもっと有意なものに変更する予定です。
set paxis <axisno> {range <range-options> | tics <tic-options>} set paxis <axisno> label <label-options> { offset <radial-offset> } show paxis <axisno> {range | tics}
set paxis <axisno> label <label-options> は、spiderplot 用で、その他 では無視されます。平行座標描画の軸は、plot コマンドの title オプショ ンでラベル付けできます。これは xtic ラベルを生成するので、set xtics も必要となることに注意してください。
軸の線種属性は、set style parallelaxis で制御します。
set pixmap <index> "filename" at <position> {width <w> | height <h> | size <w>,<h>} {front|back|behind} {center} show pixmaps unset pixmaps unset pixmap <index>
コマンド set pixmap は、その後に続く plot で表示されるオブジェクトを 定義するコマンド set object と似ています。そのピクスマップを構成する R/G/B/alpha の値の長方形配列が png, jpeg, gif ファイルのいずれかから読 み込まれます。gnuplot 出力上の位置とピクスマップが占有する範囲は、任意 の座標系 (以下参照: coordinates (12)) で指定できます。at <position> で 与えた座標は、キーワード center が指定されていない限り、ピクスマップ の左下角を意味します。
width <x-extent> を使用して描画するピクスマップの x の範囲を 指定し た場合、元の画像のアスペクト比が保持され、軸のスケールや回転ではアスペ クト比もピクスマップの向きも変更しません。height <y-extent> を使用し て y の範囲を指定した場合も同様です。size <x-extent> <y-extent> を使 用して x と y の範囲の両方を指定した場合、元のアスペクト比を変更します。 サイズを指定しなければピクセル単位での元のサイズを使用します (よってそ の実際のサイズは、出力形式に依存します)。
ピクスマップは、グラフの境界でクリッピングしません。オブジェクトやレイ ヤの一般的な挙動に対する例外として、behind レイヤに割り当てたピクス マップは、multiplot では最初の plot でのみ描画します。これは、一つの背 景用のピクスマップを、multiplot のすべてのパネルで共有することを可能に します。
例:
# すべてのグラフの背景としてグラデーションを使用 # キャンバス全体を埋めるよう x, y の両方をリサイズする set pixmap 1 "gradient.png" set pixmap 1 at screen 0, 0 size screen 1, 1 behind
# グラフの各ページの右下にロゴをを配置 set pixmap 2 "logo.jpg" set pixmap 2 at screen 0.95, 0 width screen 0.05 behind
# ある 3 次元座標に小さい画像を配置 # それは描画されている曲面に張り付いているように移動するが、 # 常に前を向き直立し続ける set pixmap 3 "image.png" at my_x, my_y, f(my_x,my_y) width screen .05 splot f(x,y)
さらにコマンドshow plot add2history は、この現在の描画コマンドを history に書き出します。これは、replot を使って直前の描画コマンド に曲線を追加した場合、そしてコマンド行全体をすぐに編集したい場合に便利 です。
書式 (オプションは任意の順で与えることができます):
set pm3d { { at <position> } { interpolate <steps/points in scan, between scans> } { scansautomatic | scansforward | scansbackward | depthorder {base} } { flush { begin | center | end } } { ftriangles | noftriangles } { clip {z} | clip1in | clip4in } { {no}clipcb } { corners2color { mean|geomean|harmean|rms|median|min|max|c1|c2|c3|c4 } } { {no}lighting {primary <fraction>} {specular <fraction>} {spec2 <fraction>} } { {no}border {retrace} {<linestyle-options>}} { implicit | explicit } { map } } show pm3d unset pm3d
pm3d の曲面は、splot コマンドに与えた順に連続して描画することに注意し てください。先に描かれたグラフは、後のグラフで隠される可能性があります。 それを避けるために、scan オプションの depthorder を使用することがで きます。
pm3d 曲面は、表示枠の天井 (top) や底面 (bottom) に射影できます。
以下参照: pm3d position (100.71.4)。
以下のコマンドは、異なった高さで 3 つの色付きの曲面を描きます:
set border 4095 set pm3d at s splot 10*x with pm3d at b, x*x-y*y, x*x+y*y with pm3d at t
以下も参照: set palette (100.66), set cbrange (100.153), set colorbox (100.15)。そしてデモフ ァイル demo/pm3d.dem も参考になるでしょう。
splot 'fred.dat' with lines, 'lola.dat' with lines
splot 'fred.dat' with lines, 'lola.dat' with pm3d
gnuplot の起動時はそのモードは explicit (明示的) になっています。歴 史的、そして互換性のために、コマンド set pm3d; (すなわちオプションが ない場合) と set pm3d at X ... (すなわち at が最初のオプションの場 合) はモードを implicit (暗黙的) に変更します。コマンド set pm3d; は、その他のオプションをそれらのデフォルトの状態に設定します。
デフォルトのデータ/関数の描画スタイルを pm3d にしたい場合は、例えば
set style data pm3d
まず、地図/曲面がどのように描かれるのかについて記述します。入力データ は、関数を評価して得られるかまたは splot data file から得られます。 曲面は、走査 (孤立線) の繰り返しで構成されます。pm3d アルゴリズムでは、 最初の走査で検出された隣り合う 2 点と、次の走査で検出された他の 2 点の 間の領域が、これら 4 点の z の値 (または追加された 'color' 用の列の値、 以下参照: using (89.3.11)) に従って灰色で (または カラーで) 塗られます。デフォ ルトでは 4 つの角の値の平均値が使われますが、それはオプション corners2color で変更できます。それなりの曲面を描くためには、隣り合う 2 点の走査が交差してはいけなくて、近接点走査毎の点の数が違いすぎてはい けません。もちろん、最も良いのは走査の点の数が同じことです。他には何も 必要ではありません (例えばデータは格子状である必要もない)。他にもこの pm3d アルゴリズムは、入力された (計測された、あるいは計算された) 領域 の外には何も描かない、という長所があります。
曲面の色づけは、以下のような入力データに関して行われます:
1. 関数、または 1 つか 3 つのデータ列からなるデータの splot: 上に述べ た四角形の 4 つの角の z 座標の平均値 (または corners2color) から、灰 色の範囲 [0:1] を与える zrange または cbrange の範囲 [min_color_z,max_color_z] への対応により、灰色/カラーの値が得られます。 この値は、直接灰色の色地図用の灰色の値として使うことができます。正規化 された灰色の値をカラーに対応させることもできます。完全な説明は、以下参照: set palette (100.66)。
2. 2 つか 4 つのデータ列からなるデータの splot: 灰色/カラーの値は、z の値の代わりに最後の列の座標を使って得られますので、色と z 座標が独立 なものになります。これは 4 次元データの描画に使うことができます。
他の注意:
1. 物理学者の間では、gnuplot の文書やソースに現われる 'iso_curve' (孤 立線) という言葉よりも、上で言及した '走査 (scan)' という言葉の方が使 われています。1 度の走査と他の走査の記録により色地図を評価する、という のはそういう意味です。
2. 'gray' や 'color' の値 (scale) は、滑らかに変化するカラーパレットへ の、連続な変数の線形写像です。その写像の様子は描画グラフの隣に長方形で 表示されます。この文書ではそれを "カラーボックス (colorbox)" と呼び、 その変数をカラーボックス軸の変数と呼びます。以下参照: set colorbox (100.15),set cbrange (100.153)。
set pm3d lighting primary 0.50 specular 0.0 # ハイライトなし set pm3d lighting primary 0.50 specular 0.6 # 強いハイライト
塗られた四角形は、次から次へと描画されて行きます。曲面を描画する場合 (at s)、後の四角形が前のものに重なり (上書きし) ます (gnuplot は塗ら れた多角形の網の重なりの相互作用を計算するような仮想現実ツールではあり ません)。 最初に走査されるデータを最初に描くか最後に描くかを切替えるス イッチオプション scansforward と scansbackward を試してみてくださ い。デフォルトは scansautomatic で、これは gnuplot 自身に走査の順を 推測させます。一方で、オプション depthorder は四角形の順序を完全に再 構成します。塗りつぶしは深さ順に並び変えされた後で行われ、これによりか なり複雑な曲面でも視覚的なものにすることができます。詳細は、以下参照:pm3d depthorder (100.71.5)。
set pm3d {scansautomatic | scansforward | scansbackward | depthorder}
デフォルトでは、pm3d の単色塗り曲面を構成する四角形は、それらが曲面の 格子点に沿って出会う順番に塗り潰されます。この順番は、オプション scansautomatic|scansforward|scansbackward で制御できます。これら の走査 (scan) オプションは、一般には隠面処理とは両立しません。
2 回の連続する走査で点の数が同じでなかった場合、四角形の点の取り始めを、 両方の走査の最初から (flush begin) にするか、最後から (flush end) にするか、真中から (flush center) にするかを決定しなければいけません。 flush (center|end) は scansautomatic とは両立せず、よって flush center または flush end を指定して scansautomatic が設定さ れた場合、それは無言で scansforward に変更されます。
2 回の連続する走査で点の数が同じでなかった場合、個々の走査で点が足りな い場合に、走査の最後に色三角形を描くかどうかをオプション ftriangles は指示します。これは滑らかな色地図の境界を描くのに使われます。
gnuplot は、曲面の単色塗りにおいては、本当の隠面処理は行いませんが、た
いていは遠い方から近い方へ順に四角形要素を塗り潰すことで十分なできあが
りになります。このモードは、以下のオプションを使うことで選択できます:
set pm3d depthorder
オプション depthorder は、splot with boxes で作った細長い長方形に
適用すると、良くない結果を生む傾向があります。その場合、キーワード
base を追加することで、z=0 の平面と箱の共通部分で深さのソートを行う
ため少しましになります。その形式のグラフは、光源モデル (lighting) を追
加すれば更に改善できます。
例:
set pm3d depthorder base set pm3d lighting set boxdepth 0.4 splot $DATA using 1:2:3 with boxes
set pm3d {clip {z} | clip1in | clip4in} set pm3d {no}clipcb
pm3d 曲面や他の 3 次元オブジェクトを構成する四辺形は、デフォルトでは現 在の zrange に関して滑らかにクリッピングします。これは、gnuplot 5.0 以前とは異なる挙動です。
それとは別に、4 つの角全部が x, y, z の範囲内である四辺形全体 (set pm3d clip4in)、または少なくとも 1 つの角が x, y, z の範囲内であ る四辺形全体 (set pm3d clip1in)を描画することにより、クリッピングす ることもできます。オプション clip, clip1in, clip4in は相互に排他 的です。
空間座標 x, y, z ベースのクリッピングとは別に、四辺形を描画するかどう かを最終的なパレットカラー値で決定することもできます。 clipcb: (デフォルト) cbmin 未満のパレットカラー値は cbmin にクリッピ ングし、cbmax より大きいパレットカラー値は cbmax にクリッピングします。 noclipcb: cbrange 外のパレットカラー値の四辺形は何も描画しません。
各四辺形には一つの灰色/カラー値 (グラデーションではない) を割り当てま す。その値は、corners2color <option> に従って四辺形の 4 つの角の z 座標から計算します。そして、その値を現在のパレットから色を選択するのに 使用します。以下参照: set palette (100.66)。 一つの splot コマンド内でパレットを変更することはできません。
4 列目にデータを与えた場合、個々の四角形の彩色は上と同様に行いますが、 色の値は z の値とは別とみなされます。別の彩色オプションにより、4 列目 のデータに RGB 色を与えることもできます。以下参照: rgbcolor variable (21.1.3)。 この場合、描画コマンドは以下のようにする必要があります:
splot ... using 1:2:3:4 with pm3d lc rgb variable
z の値の範囲と曲面の色の値の範囲は、set zrange, set cbrange, set log z, set log cb 等によって独立に調整し得ることに注意してくだ さい。
set pm3d border {retrace} {line-properties} set pm3d noborder
このオプションは、各四角形の境界線を、四角形が描かれているように描画し ます。追加の線属性 (線種、色、線幅) は任意で、デフォルトでは、幅 1 の 黒の実線で境界を書きます。
set pm3d border retrace は、四辺形の塗るのと同じ色で境界を塗らせます。 これは、結果として noborder と同じことになりますが、出力モードによっ ては、隣接した塗り潰し四辺形の間のアンチエイリアスによる副産物に苦しむ かもしれません。境界を再描画 (retrace) することで、出力ファイルは大き くなってしまいますが、これらの副産物を隠すことができます。
splot FOO with pm3d fillcolor <colorspec>
描画スタイル with pm3d は、splot コマンド上で fillcolor 追加オプショ ンを受けつけます。その指定は、pm3d 曲面全体に適用されます。以下参照:colorspec (21.1)。たいていの fillcolor 指定では単一色の単色塗りになりますが 曲面の表裏の要素を区別するための光源モデルが存在しない場合は見た目を解 釈するのが難しいでしょう。以下参照: pm3d lighting (100.71.3)。
2,3 特別な例を紹介します。with pm3d fillcolor palette は、デフォルト の pm3d のパレットベースの配色と全く同じ結果を生成しますので、役に立つ オプションではありません。 with pm3d fillcolor linestyle N は多少意味があります。これは、 gnuplot の hidden3d モードを使った場合の配色の仕組みと同様、pm3d 曲 面の上側と下側に異なる色を割り当てる変種です。線種 N を上側の曲面に、 線種 N+1 を下側の曲面に使用します。「上側」と「下側」は、走査 (scan) 順序に依存しますので、pm3d scansbackward と pm3d scansforward では 配色が逆になることに注意してください。この配色オプションは、 pm3d depthorder とでは最適に機能しますが、それは残念ながら走査順序の 制御を許しませんので、代わりに線種 N と N+1 で定義される色を入れ替えな いといけないかもしれません。
正の m, n に対しては各四角形、または三角形は、それぞれの方向に m 回、 n 回補間されます。負の m, n では補間の頻度は、少なくとも |m|, |n| 点が 描画されるように選択されます。これは特別な格子関数と見なすことができま す。
注意: interpolate 0,0 は、自動的に最適な補間曲面点数を選択します。
注意: corners2color で幾何平均 (geomean) のような非線形評価が設定され ていたとしても、現在の色の補間は常に線形補間で行われます。
非推奨なオプション set pm3d hidden3d N は、以下と同等です。 set pm3d border ls N
書式:
set pointsize <multiplier> show pointsize
デフォルトは 1.0 倍です。画像データ出力では、大きいポイントサイズの方 が見やすいでしょう。
一つの描画に対するポイントサイズは plot コマンドの上でも変更できます。 詳細は、以下参照: plot with (89.12)。
ポイントサイズの設定は、必ずしも全ての出力形式でサポートされているわけ ではないことに注意してください。
書式:
set polar unset polar show polar
極座標モードでは、仮変数 (t) は角度θを意味します。t のデフォルトの範 囲は [0:2*pi] ですが、単位として度が選択されていれば [0:360] となりま す (以下参照: set angles (100.1))。
コマンド unset polar は描画方法をデフォルトの xy 直交座標系に戻しま す。
set polar コマンドは splot ではサポートされていません。splot に 対する同様の機能に関しては、以下参照: set mapping (100.47)。
極座標モードでは t の数式の意味は r=f(t) となり、t は回転角となります。 trange は関数の定義域 (角度) を制御し、rrange, xrange, yrange はそれぞ れグラフの x,y 方向の範囲を制御することになります。これらの範囲と rrange は自動的に設定されるか、または明示的に設定できます。詳細に関し ては、以下参照: set rrange (100.81), set xrange (100.122)。
例:
set polar plot t*sin(t) set trange [-2*pi:2*pi] set rrange [0:3] plot t*sin(t)
最初の plot はデフォルトの角度の範囲の 0 から 2*pi を使います。動径 方向とグラフのサイズは自動的に伸縮されます。2 番目の plot は角度の定 義域を拡張し、グラフのサイズを原点から 3 の幅に制限します。これは x,y のそれぞれの方向を [-3:3] に制限することになります。
デフォルトでは極座標グラフは角度 0 (θ=0) が右向きで、増加は反時計回り となるように向きづけられています。その 0 の向きと増加方向の両方を明示 的に変更可能です。以下参照: set theta (100.91)。
set size square とすると gnuplot はアスペクト比 (縦横の比) を 1 に するので円が (楕円でなく) 円に見えるようになります。同心円の周囲の目盛 りの刻みは、set ttics で指定できます。 以下も参照 極座標のデモ (polar.dem)
書式:
set print set print "-" set print "<filename>" [append] set print "|<shell_command>" set print $datablock [append]
パラメータなしの set print は、出力を <STDERR> に復帰させます。"-" という <filename> は <STDOUT> を意味します。append フラグはファイル を追加 (append) モードで開くことを意味します。パイプをサポートするプラ ットホーム上では、<filename> が "|" で始まっていたら、<shell_command> へのパイプが開かれます。
コマンド print の対象は名前付きデータブロックでも構いません。データ ブロック名は '$' で始まります。以下参照: inline data (19)。 データブロックへ文字列を出力する場合、改行文字が入っていると、それは 複数のデータブロック行を生成するように展開されます (仕様の変更)。
1) `set psdir` を指定した場合はそのディレクトリ 2) 環境変数 GNUPLOT_PS_DIR で指定したディレクトリ 3) 組み込まれたヘッダー、またはデフォルトのシステムディレクトリ 4) `set loadpath` で指定したディレクトリ
set rgbmax {1.0 | 255} unset rgbmax
書式:
set samples <samples_1> {,<samples_2>} show samples
デフォルトではサンプル数は 100 点と設定されています。この値を増やすと より正確な描画が出来ますが遅くなります。このパラメータはデータファイル の描画には何の影響も与えませんが、補間/近似のオプションが使われている 場合はその限りではありません。2 次元描画については plot smooth を、 3 次元描画に関しては、以下参照: set dgrid3d (100.22)。
2 次元のグラフ描画が行なわれるときは <samples_1> の値のみが関係します。
隠線処理なしで曲面描画が行なわれるときは、samples の値は孤立線毎に評価 されるサンプル数の指定になります。各 v-孤立線は <samples_1> 個のサンプ ル点を持ち、u-孤立線は <samples_2> 個のサンプル数を持ちます。<samples_1> のみ指定すると、<samples_2> の値は <samples_1> と同じ値に設定されます。 以下も参照: set isosamples (100.35)。
set size {{no}square | ratio <r> | noratio} {<xscale>,<yscale>} show size
<xscale> と <yscale> は描画全体の拡大の倍率で、描画全体とはグラフとラ ベルと余白の部分を含みます。
重要な注意:
gnuplot の以前の版では、`set size` の値を、出力する描画領域 (キャンバス) のサイズを制御するのにも使っていた出力形式もありま したが、すべての出力形式がそうだったわけではありませんでした。 現在は、ほとんどの出力形式が以下のルールに従います:
set term <terminal_type> size <XX>, <YY> は、出力ファイルのサイズ、 または "キャンバス" のサイズを制御します。サイズパラメータの有効な値に ついては、個々の出力形式のヘルプを参照してください。デフォルトでは、グ ラフはそのキャンバス全体に描画されます。
set size <XX>, <YY> は、描画自体をキャンバスのサイズに対して相対的に 伸縮させます。1 より小さい伸縮値を指定すると、グラフはキャンバス全体を 埋めず、1 より大きい伸縮値を指定すると、グラフの一部分のみがキャンバス 全体に合うように描画されます。1 より大きい伸縮値を指定すると、ある出力 形式では問題が起こるかもしれないことに注意してください。
ratio は、指定した <xscale>, <yscale> の描画範囲内で、グラフのアスペ クト比 (縦横比) を <r> にします (<r> は x 方向の長さに対する y 方向の 長さの比)。
<r> の値を負にするとその意味は違って来ます。<r>=-1 のとき、x 軸、y 軸 の双方の単位 (つまり 1) の目盛りの長さが同一になるよう設定されます。こ れは、3 次元用のコマンド set view equal xy の 2 次元での同等物です。 <r>=-2 のとき、y 軸の単位目盛りの長さは x 軸の単位目盛りの長さの 2 倍 に設定されます。<r> が負の値に関して以下同様です。
gnuplot が指定されたアスペクト比のグラフをちゃんと書けるかは選択され る出力形式に依存します。グラフの領域は出力の指定された部分にちゃんと収 まり、アスペクト比が <r> であるような最大の長方形となります (もちろん 適当な余白も残しますが)。
set size square は set size ratio 1 と同じ意味です。
noratio と nosquare はいずれもグラフをその出力形式 (terminal) での デフォルトのアスペクト比に戻しますが、<xscale> と <yscale> はそのデフ ォルトの値 (1.0) には戻しません。
ratio と square は 3 次元描画では意味を持ちませんが、set view map を使用した 3 次元描画の 2 次元射影には影響を与えます。 以下も参照:set view equal (100.105.2)。これは、3 次元の x 軸と y 軸を強制的に同じスケールに します。
例:
グラフが現在のキャンバスを埋めるような大きさに設定します:
set size 1,1
グラフを通常の半分の大きさで正方形にします:
set size square 0.5,0.5
グラフの高さを横幅の 2 倍にします:
set size ratio 2
set style data spiderplot unset border unset tics set key noautotitle set size ratio 1.0
書式:
set style function <style> set style data <style> show style function show style data
指定できる描画要素のデフォルトスタイルも設定できます。
書式:
set style arrow <n> <arrowstyle> set style boxplot <boxplot style options> set style circle radius <size> {clip|noclip} set style ellipse size <size> units {xy|xx|yy} {clip|noclip} set style fill <fillstyle> set style histogram <histogram style options> set style line <n> <linestyle> set style rectangle <object options> <linestyle> <fillstyle> set style textbox {<n>} {opaque|transparent} {{no}border} {fillcolor}
書式:
set style arrow <index> default set style arrow <index> {nohead | head | backhead | heads} {size <length>,<angle>{,<backangle>} {fixed}} {filled | empty | nofilled | noborder} {front | back} { {linestyle | ls <line_style>} | {linetype | lt <line_type>} {linewidth | lw <line_width} {linecolor | lc <colorspec>} {dashtype | dt <dashtype>} } unset style arrow show style arrow
<index> は整数で、それで矢のスタイル (arrowstyle) を特定します。
default を指定すると、全ての arrow スタイルパラメータはそのデフォル トの値になります。
<index> の arrowstyle が既に存在する場合、他の全ては保存されたまま、与 えられたパラメータのみが変更されます。<index> が存在しなければ、指定さ れなかった値はデフォルトの値になります。
コマンド plot または splot から呼び出した arrow スタイルには、デー タ毎可変な線色 (lc variable や lc rgb variable) を入れることもでき、 それはそれに対応する using 指定によるデータの追加列が必要となります。 この場合、set arrow で作成する個別の arrow に対しては、そのスタイル は多分有益なものではありません。
nohead を指定することで、矢先のない矢、すなわち線分を書くこともでき ます。これは描画の上に線分を描く別な方法を与えます。デフォルトでは 1 つの矢先がついています。heads の指定で線分の両端に矢先が描かれます。
矢先の大きさは size <length>,<angle> または size <length>,<angle>,<backangle> で変更できます。<length> は矢先 の各枝の長さで、<angle> は矢先の枝と矢軸がなす角度 (単位は度) です。 <length> の単位は x 軸と同じですが、それは <length> の前に first, second, graph, screen, character をつけることで変更できます。 詳細は、以下参照: coordinates (12)。
デフォルトでは、とても短い矢の矢先は小さくしますが、これは、size コ マンドの後ろに fixed を使うことで無効にできます。
<backangle> は、矢先の後ろの部分の矢軸との切り角 (<angle> と同じ方 向、単位は度) になりますが、スタイルが nofilled の場合はこれを無視し ます。
filled を指定すると、矢先の回りの線 (境界線) を描き、矢先を塗りつぶ します。noborder を指定すると、矢先は塗りつぶしますが、境界線は描き ません。この場合、矢先の先端がベクトルの終点ピッタリの場所に置かれ、そ の矢先は全体として少し小さくなります。点線で矢を描く場合は、点線の境界 線は汚いので、常に noborder を使うべきです。矢先の塗りつぶしは、すべ ての出力形式がサポートしているとは限りません。
線種はユーザの定義したラインスタイルのリストから選ぶこともできますし (以下参照: set style line (100.86.7))、用意されている <line_type> の値 (デフ ォルトのラインスタイルのリストの番号) そして <linewidth> (デフォルト の幅の倍数) を使ってここで定義することもできます。
しかし、ユーザー定義済のラインスタイルが選択された場合、その属性 (線種、 幅) は、単に他の set style arrow コマンドで適当な番号や lt, lw などを指定しても、変更はできないことに注意して下さい。
front を指定すると、矢はグラフのデータの上に描かれます。back が指 定された場合 (デフォルト) は矢はグラフのデータの下に描かれます。front を使えば、密集したデータで矢が見えなくなることを防ぐことができます。
例:
矢先がなく、倍の幅が矢を描くには:
set style arrow 1 nohead lw 2 set arrow arrowstyle 1
その他の例については、以下参照: set arrow (100.2)。
書式:
set style boxplot {range <r> | fraction <f>} {{no}outliers} {pointtype <p>} {candlesticks | financebars} {medianlinewidth <width>} {separation <x>} {labels off | auto | x | x2} {sorted | unsorted}
boxplot の箱は、常にデータ点の第一四分位から第三四分位の値の範囲にかか
っています。箱から延長される箱ひげの限界は、2 つの異なる方法で制御でき
ます。デフォルトでは、箱ひげは、その箱のそれぞれの端から、四分位範囲の
1.5 倍 (すなわち、その箱の厳密な垂直方向の高さ) に等しい範囲にまで延長
されます。箱ひげそれぞれは、データ集合のある点に属する y の値で終了す
るように、メジアンに向かって切り捨てられます。四分位範囲の丁度 1.5 倍
の値の点がない場合もありますから、箱ひげはその名目上の範囲よりも短くな
る場合もあります。このデフォルトは以下に対応します。
set style boxplot range 1.5
もう一つの方法として、箱ひげがかかる点の総数の割合 (fraction) を指定す
ることができます。この場合、その範囲はメジアン値から、データ集合の指定
した分を囲い込むまで、対称に延長されます。このときも、個々の箱ひげはデ
ータ集合内の点の端までに制限されます。データ集合の 95% の点をはるには
以下のようにします。
set style boxplot fraction 0.95
箱ひげの範囲の外にある任意の点は、outliers (孤立した標本値) と見なされ ます。デフォルトではそれらをひとつひとつ円 (pointtype 7) で描きますが、 オプション nooutliers はこれを無効にします。 描画されない outliers は、autoscaling には影響を与えません。
デフォルトでは boxplot は candlesticks と似たスタイルで描画しますが、 financebars と似たスタイルで描画するためのオプションもあります。
箱の境界と同じ線種を使って、メジアンを示す横断線を描きますが、そのメジ
アン線をより太くしたければ、以下のようにできます。
set style boxplot medianlinewidth 2.0
boxplot の using 指定が 4 列目を持つ場合、その列の値はある因子変数の離 散的なレベル値であると見なします。この場合、その因子変数のレベルの数と 同じだけの複数の boxplot が描かれます。それらの boxplot の隣り合うもの 同士の距離はデフォルトでは 1.0 (x 軸の単位で) ですが、この間隔はオプシ ョン separation で変更できます。
オプション labels は、これらの boxplot (それぞれデータ集合のある部分 に対応する) のどこに、どのようにラベルをつけるかを決定します。デフォル トでは因子の値を水平軸 (x か x2 のいずれか plot で使われている方) の目 盛ラベルに出力します。これはオプションの labels auto に対応します。 オプション labels x, labels x2 によって、強制的に x 軸、x2 軸にそ れぞれ出力させることもできますし、labels off でオフにすることもでき ます。
デフォルトでは、因子変数の異なるレベルに対応する boxplot は整列化はせ ず、データファイルにそのレベルが現れる順番に描画します。この挙動はオプ ションの unsorted に対応しますが、オプション sorted を使用すると、 まずレベルを辞書順にソートし、その順に boxplot を描画します。
オプション separation, labels, sorted, unsorted は、plot に 4 列目の指定を与えた場合のみ効力を持ちます。
以下参照: boxplot (36), candlesticks (38), financebars (43)。
書式:
set style data <plotting-style> show style data
選択項目については、以下参照: plotting styles (II)。show style data は 現在のデフォルトのデータ描画スタイルを表示します。
set obj で生成する長方形 (rectangle) の塗り潰しスタイルには、別のデ フォルトがあることに注意してください。 以下参照: set style rectangle (100.86.9)。
書式:
set style fill {empty | {transparent} solid {<density>} | {transparent} pattern {<n>}} {border {lt} {lc <colorspec>} | noborder}
オプション empty は、塗り潰し領域を塗り潰しません。これがデフォルト です。
オプション solid は、出力形式がサポートしている場合、その色での単色 塗りを行います。パラメータ <density> は塗りつぶし色の強さを表していて <density> が 0.0 なら箱は空、<density> が 1.0 なら箱はその内部は現在の 線種と完全に同じ色で塗られます。出力形式によっては、この強さを連続的に 変化させられるものもありますが、その他のものは、部分的な塗りつぶしの幾 つかのレベルを実装しているに過ぎません。パラメータ <density> が与えら れなかった場合はデフォルトの 1 になります。
オプション pattern は、出力ドライバによって与えられるパターンでの塗 りつぶしを行います。利用できる塗りつぶしパターンの種類と数は出力ドライ バに依存します。塗りつぶしの boxes スタイルで複数のデータ集合を描画す る場合そのパターンは、複数の曲線の描画における線種の周期と同様、有効な パターンを、パターン <n> から始めて周期的に利用します。
塗り潰し色 (fillcolor <colorspec>) は、塗り潰しスタイル (fill style) から分離されています。すなわち、fillstyle は描画要素やオブジェクトで別 々の色を持ったまま共有することができます。fillstyle を受けつける大抵の 場所で fillcolor を指定できます。fillcolor は fc の省略形も使えます。 指定しない場合は、塗り潰し色は現在の線種 (linetype) から取ります。 例:
plot FOO with boxes fillstyle solid 1.0 fillcolor "cyan"
# 塗り潰しは強度半分、境界は同じ色で全強度 set style fill solid 0.5 border # 塗り潰しは半分透過、境界は実線の黒 (線種 -1) set style fill transparent solid 0.5 border -1 # 現在の色でのパターン塗り潰し、境界は線種 5 の色で plot ... with boxes fillstyle pattern 2 border lt 5 # 水色 (cyan) での領域の塗り潰し、境界は青 plot ... with boxes fillcolor "cyan" fs solid border linecolor "blue"
注意: fill スタイルの border (境界) 属性は、デフォルトモードの closed (閉曲線) の with filledcurves のグラフにしか影響を与えません。
透明な塗りつぶし領域を含むグラフを見たり作ったりするのには、別な制限が ありうることに注意してください。例えば、png 出力形式では、"truecolor" オプションが指定されている場合にのみ透明化の塗り潰しが利用できます。 PDF ファイルには透明化領域が正しく記述されていても、PDF の表示ソフトに よってはそれを正しく表示できないこともありえます。実際に PostScript プ リンタでは問題はないのに、Ghostscript/gv ではパターン塗りつぶし領域を 正しく表示できません。
書式:
set style function <plotting-style> show style function
書式:
set style increment {default|userstyles} show style increment
デフォルトでは、同じグラフ上の次の描画は、現在の出力形式でデフォルトで 定義されている線種の次のもので行われます。 しかし、set style increment user を選択すると、デフォルトの線種では なく、ユーザ定義ラインスタイル番号のものを使用させることができます。
例:
set style line 1 lw 2 lc rgb "gold" set style line 2 lw 2 lc rgb "purple" set style line 4 lw 1 lc rgb "sea-green" set style increment user
plot f1(x), f2(x), f3(x), f4(x)
これは、関数 f1, f2, f4 は新たにユーザ定義されたラインスタイルで描画さ れます。ユーザ定義ラインスタイルが見つからない場合は、代わりにそれに対 応するデフォルトの線種が利用されます。例えば、上の例では、f3(x) はデフ ォルトの線種 3 で描画されます。
書式:
set style line <index> default set style line <index> {{linetype | lt} <line_type> | <colorspec>} {{linecolor | lc} <colorspec>} {{linewidth | lw} <line_width>} {{pointtype | pt} <point_type>} {{pointsize | ps} <point_size>} {{pointinterval | pi} <interval>} {{pointnumber | pn} <max_symbols>} {{dashtype | dt} <dashtype>} {palette} unset style line show style line
default は、全てのラインスタイルパラメータをそれと同じ index を持つ 線種 (linetype) に設定します。
<index> の linestyle が既に存在する場合、他の全ては保存されたまま、与 えられたパラメータのみが変更されます。<index> が存在しなければ、指定さ れなかった値はデフォルトの値になります。
このようにつくられるラインスタイルは、デフォルトの型 (線種, 点種) を 別なものに置き換えることはしないので、ラインスタイル、デフォルトの型、 どちらも使えます。ラインスタイルは一時的なもので、コマンド reset を 実行すればいつでもそれらは消え去ります。線種自体を再定義したい場合は、 以下参照: set linetype (100.40)。
線種と点種は、その index 値をデフォルトとします。その index 値に対する 実際の記号の形は、出力形式によって異なり得ます。
線幅と点の大きさは、現在の出力形式のデフォルトの幅、大きさに対する乗数 です (しかし、ここでの <point_size> は、コマンド set pointsize で与 えられる乗数には影響を受けないことに注意してください)。
pointinterval は、スタイル linespoints でグラフ中に描かれる点の間 隔を制御します。デフォルトは 0 です (すべての点が描画される)。例えば、 set style line N pi 3 は、点種が N、点の大きさと線幅は現在の出力形式 のデフォルトで、with linespoints での描画では点は 3 番目毎に描画され るようなラインスタイルを定義します。その間隔を負の値にすると、それは間 隔は正の値の場合と同じですが、点の記号の下になる線を書かないようにしま す (出力形式によっては)。
pointnumber 属性は、pointinterval と似ていますが、N 個おきに描くよ うにする代わりに、全体の点の個数を N 個に限定するところが違います。
全ての出力装置が linewidth や pointsize をサポートしているわけでは ありません。もしサポートされていない場合はそれらのオプションは無視され ます。
出力形式に依存しない色を linecolor <colorspec> か linetype <colorspec> (省略形は lc, lt) のいずれかを使って割り当てることができます。この 場合、色は RGB の 3 つ組で与えるか、gnuplot の持つパレットの色名、現在 のパレットに対する小数指定、または cbrange への現在のパレットの対応に 対する定数値、のいずれかで与えます。以下参照: colors (21), colorspec (21.1),set palette (100.66), colornames (100.16), cbrange (100.153)。
set style line <n> linetype <lt> は、出力形式に依存した点線/破線のパ ターンと色の両方をセットします。set style line <n> linecolor <colorspec> や set style line <n> linetype <colorspec> は、現在の点線/破線のパタ ーンを変更せずに新しい線色を設定します。
3 次元モード(splot コマンド) では、"linetype palette z" の省略形とし て特別にキーワード palette を使うことも許されています。その色の値は、 splot の z 座標 (高さ) に対応し、曲線、あるいは曲面に沿って滑らかに変 化します。
例: 以下では、番号 1, 2, 3 に対するデフォルトの線種をそれぞれ赤、緑、青とし、デフォルトの点の形をそれぞれ正方形、十字、三角形であるとします。このとき 以下のコマンド
set style line 1 lt 2 lw 2 pt 3 ps 0.5
は、新しいラインスタイルとして、緑でデフォルトの 2 倍の幅の線、および 三角形で半分の幅の点を定義します。また、以下のコマンド
set style function lines plot f(x) lt 3, g(x) ls 1
は、f(x) はデフォルトの青線で、g(x) はユーザの定義した緑の線で描画しま す。同様に、コマンド
set style function linespoints plot p(x) lt 1 pt 3, q(x) ls 1
は、p(x) を赤い線で結ばれたデフォルトの三角形で、q(x) は緑の線で結ばれ た小さい三角形で描画します。
splot sin(sqrt(x*x+y*y))/sqrt(x*x+y*y) w l pal
は、palette に従って滑らかな色を使って曲面を描画します。これはそれを サポートした出力形式でしかちゃんとは動作しないことに注意してください。 以下も参照: set palette (100.66), set pm3d (100.71)。
set style line 10 linetype 1 linecolor rgb "cyan"
は、RGB カラーをサポートするすべての出力形式で、ラインスタイル 10 に実 線の水色を割り当てます。
書式:
set style circle {radius {graph|screen} <R>} {{no}wedge} {clip|noclip}
このコマンドは、描画スタイル "with circles" で使われるデフォルトの半径 を設定します。これは、データ描画で 2 列のデータ (x,y) しか与えなかった 場合、あるいは関数描画のときに適用されます。デフォルトは、以下のようになっています: "set style circle radius graph 0.02"。nowedge は、扇形 の円弧部分から中心に向かう 2 本の半径を描かないようにしますが、デフォ ルトは wedge です。このパラメータは完全な円に対しては何もしません。 clip は円を描画境界でクリッピングしますが、noclip はこれを無効にし ます。デフォルトは clip です。
コマンド set object で定義された長方形には別々のスタイルを設定できま す。しかし、個別のスタイル指定をしなければ、そのオブジェクトはコマンド set style rectangle によるデフォルトを受け継ぎます。
書式:
set style rectangle {front|back} {lw|linewidth <lw>} {fillcolor <colorspec>} {fs <fillstyle>}
以下参照: colorspec (21.1), fillstyle (100.86.4)。fillcolor は fc と省略できます。
例:
set style rectangle back fc rgb "white" fs solid 1.0 border lt -1 set style rectangle fc linsestyle 3 fs pattern 2 noborder
デフォルトの設定は、背景色での単色塗り (solid fill) で、境界は黒になっ ています。
書式:
set style ellipse {units xx|xy|yy} {size {graph|screen} <a>, {{graph|screen} <b>}} {angle <angle>} {clip|noclip}
このコマンドは、楕円の直径を同じ単位で計算するかどうかを制御します。 デフォルトは xy で、これは楕円の主軸 (第 1 軸) の直径は x (または x2) 軸と同じ単位で計算し、副軸 (第 2 軸) の直径は y (または y2) 軸の単位で 計算します。このモードでは、楕円の両軸の比は、描画軸のアスペクト比に依 存します。xx か yy に設定すれば、すべての楕円の両軸は同じ単位で計 算されます。これは、描画される楕円の両軸の比は、回転しても正しいままで すが、水平方向か垂直方向の一方の縮尺の変更により正しくなくなることを意 味します。
これは、object として定義された楕円、コマンド plot によって描画され る楕円の両方に影響を与える全体的な設定ですが、units の値は、描画毎、 オブジェクト毎に設定を再定義できます。
楕円のデフォルトのサイズも、キーワード size で設定できます。デフォル トのサイズは、2 列のみのデータ、または関数の plot 命令で適用されます。 2 つの値は、楕円の (2 つの主軸、2 つの副軸に向かい合う) 主軸直径と副軸 直径として使用されます。
デフォルトは、"set style ellipse size graph 0.05,0.03" です。
最後になりますが、デフォルトの向きをキーワード angle で設定もできま す。向きは、楕円の主軸とグラフの x 軸の方向となす角で、単位は度で与え る必要があります。
clip は楕円を描画境界でクリッピングしますが、noclip はこれを無効に します。デフォルトは clip です。
楕円の object の定義に関しては以下も参照: set object ellipse (100.61.2)。2 次元 の描画スタイルに関しては以下参照: ellipses (40)。
書式:
set style parallelaxis {front|back} {line-properties}
これは、with parallelaxes グラフの垂直軸を書く際の線種とレイヤーを指 定します。以下参照: with parallelaxes (53), set paxis (100.68)。
書式:
set style spiderplot {fillstyle <fillstyle-properties>} {<line-properties> | <point-properties>}
# デフォルトのクモの巣グラフを太い境界で塗り潰しなしの多角形に set style spiderplot fillstyle empty border lw 3 # 以下は各軸に円 (pt 6) を追加する plot for [i=1:6] DATA pointtype 6 pointsize 3
書式:
set style textbox {<boxstyle-index>} {opaque|transparent} {fillcolor <color>} {{no}border {<bordercolor>}}{linewidth <lw>} {margins <xmargin>,<ymargin>}
このコマンドは、属性 boxed による label の表示を制御します。箱付き文 字列をサポートしない出力形式はこのスタイルを無視します。 注意: いくつかの出力形式 (svg, latex) での実装は不完全です。 また、ほとんどの出力形式は、回転した文字列の箱付けが正しくできません。
番号付きの textbox スタイルを 3 種類定義できます。boxstyle 番号 <bs> を指定しないと、デフォルトスタイル (番号なし) を変更します。 例:
# デフォルトのスタイルは、黒の境界線のみ set style textbox transparent border lc "black" # スタイル 2 (bs 2) を明るい青背景で境界なしに set style textbox 2 opaque fc "light-cyan" noborder set label 1 "I'm in a box" boxed set label 2 "I'm blue" boxed bs 2
書式:
set surface {implicit|explicit} unset surface show surface
unset surface により splot は、関数やデータファイルの点に対するど んな点や線も描かなくなります。これは主に、等高線を作る曲面を描く代わり に等高線のみを描く場合に有用です。その場合でも set contour の設定に よりますが、曲面上に等高線が描かれます。他のものは通常のままで、ある一 つの関数やデータファイルの曲面のみをオフにするには、splot コマンド上 でキーワード nosurface を指定してください。等高線を格子の土台に表示 したい場合は unset surface; set contour base という組が便利でしょう。 以下も参照: set contour (100.17)。
3 次元データの組が網目 (格子線) と認識されると、gnuplot はデフォルトで は格子曲面を要求しているものとして、暗黙に with lines の描画スタイル を用います。以下参照: grid_data (102.2)。コマンド set surface explicit は この機能を抑制し、入力ファイルのデータの分離されたブロックで記述される 孤立線のみを描画します。この場合でも、splot で明示的に with surface とすれば格子曲面が描画されます。
X Y {Z} <flag>
書式:
set table {"outfile" | $datablock} {append} {separator {whitespace|tab|comma|"<char>"}} plot <whatever> unset table
この後の表形式の出力は、ファイル "outfile" を指定していればそれに書き 出しますが、そうでなければ標準出力か、現在の set output が指定するも のに出力します。outfile が既に存在する場合は、append キーワードを 指定すれば追加出力、指定しなければこの出力が上書きします。他に、表形式 出力を名前付きデータブロックにリダイレクトすることもできます。データブ ロック名は '$' で始まります。以下も参照: inline data (19)。現在の出力形式 の標準的な描画に戻すには、unset table を明示的に行なう必要があります。
separator 文字は、CSV ファイル (コンマ区切り) の出力に使えます。その モードは、描画スタイル with table にのみ影響を与えます。以下参照:plot with table (100.88.1)。
表データに変換される入力データに対する描画スタイルに依存する処理 (平滑 化、誤差線の延長、2 軸範囲のチェック等) を避けるため、あるいは表データ に変換できる列の数を増やすには、通常の描画スタイルの代わりに "table" キーワードを使ってください。この場合、範囲内/範囲外/未定義を意味する i, o, u が置かれる最後の追加列は、出力にはつきません。その出力先 は、最初に set table <where> で指定する必要があります。 例:
set table $DATABLOCK1 plot <file> using 1:2:3:4:($5+$6):(func($7)):8:9:10 with table
この場合、実際の描画スタイルがない状態なので、各列には特定の軸は対応し ないことになり、よって xrange, yrange 等の設定は無視されます。
文字列に対して using で評価した場合は、文字列も表データ化されます。 数値データは常に %g の書式で書き出されますが、他の書式を使いたい場合は、 そのように書式化された文字列を生成するように sprintf か gprintf を使用 してください。
plot <file> using ("File 1"):1:2:3 with table plot <file> using (sprintf("%4.2f",$1)) : (sprintf("%4.2f",$3)) with table
set table "tab.csv" separator comma plot <foo> using 1:2:3:4 with table
[試験段階の機能] 表データ化のためにデータ点の部分集合のみを選択するには 入力フィルタ条件 (if <expression>) をコマンドの最後に指定することがで きます。その入力フィルタは、出力はされないデータ列も参照できることに注 意してください。この機能は、gnuplot のリリース版が現れる前に大幅に変更 される可能性があります。
plot <file> using 1:2:($4+$5) with table if (strcol(3) eq "Red") plot <file> using 1:2:($4+$5) with table if (10. < $1 && $1 < 100.) plot <file> using 1:2:($4+$5) with table if (filter($6,$7) != 0)
書式:
set terminal {<terminal-type> | push | pop} show terminal
<terminal-type> が省略されると gnuplot は利用可能な出力形式の一覧を 表示します。<terminal-type> の指定には短縮形が使えます。
set terminal と set output の両方を使う場合、set terminal を最初 にする方が安全です。それは、OS によっては、それが必要とするフラグをセ ットする出力形式があるからです。
いくつかの出力形式はたくさんの追加オプションを持ちます。 各 <term> に対し、直前の set term <term> <options> で使用されたオ プションは記憶され、その後の set term <term> がそれをリセットするこ とはありません。これは例えば印刷時に有用です。幾つかの異なる出力形式を 切替える場合、前のオプションを繰り返し唱える必要はありません。
コマンド set term push は、現在の出力形式とその設定を set term pop によって復帰するまで記憶しています。これは save term, load term と ほぼ同等ですが、ファイルシステムへのアクセスは行わず、よって例えばこれ は、印刷後にプラットホームに依存しない形で出力形式を復帰する目的に使え ます。gnuplot の起動後、デフォルト、または startup ファイルに書かれ た出力形式が自動的に記憶 (push) されます。よって、明示的に出力形式を記 憶させることなく、任意のプラットホーム上でデフォルトの出力形式を set term pop によって復帰させる、という動作を期待したスクリプトを可 搬性を失わずに書くことが出来ます。
詳細は、以下参照: complete list of terminals (113)。
set termoption {no}enhanced set termoption font "<fontname>{,<fontsize>}" set termoption fontscale <scale> set termoption {linewidth <lw>}{lw <lw>}
set theta {right|top|left|bottom} set theta {clockwise|cw|counterclockwise|ccw}
目盛りは unset tics で消え、set tics で目盛りがつきます (デフォル ト)。個々の軸の目盛りは、これとは別のコマンド set xtics, set ztics などを使って制御できます。
書式:
set tics {axis | border} {{no}mirror} {in | out} {front | back} {{no}rotate {by <ang>}} {offset <offset> | nooffset} {left | right | center | autojustify} {format "formatstring"} {font "name{,<size>}"} {{no}enhanced} { textcolor <colorspec> } set tics scale {default | <major> {,<minor>}} unset tics show tics
オプションは、個々の軸 (x, y, z, x2, y2, cb) にも適用できます。例:
set xtics rotate by -90 unset cbtics
軸の刻みの線属性は、すべてグラフの境界 (以下参照: set border (100.6)) と同じ ものを使って描かれます。
tics の back または front の設定は、2D 描画 (splot は不可) にのみ すべての軸に 1 度適用されます。これは、目盛りと描画要素が重なった場合 に目盛りを描画要素の前面に出すか、奥に置くかを制御します。
axis と border は gnuplot に目盛り (目盛りの刻み自身とその見出し) を、それぞれ軸につけるのか、境界につけるのかを指示します。軸が境界にと ても近い場合、axis を使用すると境界が表示されていれば (以下参照:set border (100.6)) 目盛りの見出し文字を境界の外に出してしまうでしょう。この 場合自動的なレイアウトアルゴリズムによる余白設定は大抵よくないものとな ってしまいます。
mirror は gnuplot に反対側の境界の同じ位置に、見出しのない目盛りを 出力するよう指示します。nomirror は、あなたが想像している通りのこと を行ないます。
in と out は目盛りの刻みを内側に描くか外側に描くかを切り変えます。
set tics scale は、目盛りの刻みの大きさを制御します。最初の <major> の値には、自動的に生成され、またユーザも指定できる大目盛り (レベル 0) を指定し、2 つ目の <minor> の値には、自動的に生成され、またユーザも指 定できる小目盛り (レベル 1) を指定します。<major> のデフォルトは 1.0 で、<minor> のデフォルトは <major>/2 です。さらに値を追加すれば、レベ ル 2, 3, ... の目盛りの大きさになります。set tics scale default でデ フォルトの目盛りの大きさに復帰します。
rotate は、文字列を 90 度回転させて出力させようとします。これは、文 字列の回転をサポートしている出力ドライバ (terminal) では実行されます。 norotate はこれをキャンセルします。rotate by <ang> は角度 <ang> の 回転を行ないますが、これはいくつかの出力形式 (terminal) でサポートされ ています。
x と y 軸の大目盛りのデフォルトは border mirror norotate で、x2, y2 軸は border nomirror norotate がデフォルトです。z 軸のデフォルトは nomirror です。
<offset> は x,y かまたは x,y,z の形式ですが、それに座標系を選択して、 その前に first, second, graph, screen, character のいずれか をつけることもできます。<offset> は、目盛りの見出し文字列のデフォルト の位置からのずらし位置で、そのデフォルトの単位系は character です。 詳細は、以下参照: coordinates (12)。nooffset は offset を OFF にします。
デフォルトでは見出しラベルは、美しい結果を生むように、軸と回転角に依存 した位置に自動的に揃えられますが、気にいらなければ、明示的に left, right, center のキーワードにより位置揃えを変更できます。 autojustify でデフォルトの挙動に復帰します。
オプションなしの set tics は、第 1 軸に対する鏡映 (mirror) と内側向 き目盛りの刻みをデフォルトの挙動に復帰しますが、その他の全てのオプショ ンは、直前の値を保持します。
大目盛り (ラベルのつく) の他の制御に関しては、以下参照: set xtics (100.123)。 小目盛りの制御に関しては、以下参照: set mxtics (100.56)。これらのコマンドは、 各軸の独立な制御を提供します。
書式:
set timestamp {"<format>"} {top|bottom} {{no}rotate} {offset <xoff>{,<yoff>}} {font "<fontspec>"} {textcolor <colorspec>} unset timestamp show timestamp
書式文字列 (format) は、書かれる日付と時刻の書式に使用されます。デフォ ルトは asctime() が使用する "%a %b %d %H:%M:%S %Y" です (曜日、月名、 日、時、分、秒、4 桁の西暦)。top と bottom を使って、日付の配置を 左上、左下のいずれの余白にするかを選択できます (デフォルトは左下)。 rotate は、日付を垂直方向に書き出します。定数 <xoff>、<yoff> はずれ (offset) を意味し、これによってより適切な位置決めが行えます。<font> は 日付が書かれるフォントを指定します。
timestamp の代わりに省略名 time を使っても構いません。
例:
set timestamp "%d/%m/%y %H:%M" offset 80,-2 font "Helvetica"
日付の書式文字列に関する詳しい情報については、以下参照: set timefmt (100.96)。
書式:
set timefmt "<format string>" show timefmt
timefmt と timecolumn の両方で有効な書式は以下の通りです:
時系列データ書式指定子 | |
書式 | 説明 |
%d |
何日, 1–31 |
%m |
何月, 1–12 |
%y |
何年, 0–99 |
%Y |
何年, 4 桁 |
%j |
1 年の何日目, 1–365 |
%H |
何時, 0–24 |
%M |
何分, 0–60 |
%s |
Unix epoch (1970-01-01, 00:00 UTC) からの秒数 |
%S |
何秒 (出力では 0–60 の整数、入力では実数) |
%b |
月名 (英語) の 3 文字省略形 |
%B |
月名 (英語) |
%p |
2 文字の am AM pm PM のいずれか |
任意の文字を文字列中で使用できますが、規則に従っている必要があります。 \t (タブ) は認識されます。バックスラッシュ + 8 進数列 ( \nnn) はそれが 示す文字に変換されます。日時要素の中に分離文字がない場合、%d, %m, %y, %H, %M, %S はそれぞれ 2 桁の数字を読み込みます。%S での読み込みで小数 点がそのフィールドについている場合は、その小数点つきの数を小数の秒指定 だと解釈します。%Y は 4 桁、%j は 3 桁の数字を読み込みます。%b は 3 文 字を、%B は必要な分だけの文字を要求します。
空白 (スペース) の扱いはやや違います。書式文字列中の 1 つの空白は、ファイル中の 0 個、あるいは 1 つ以上の空白文字列を表します。すなわち、 "%H %M" は "1220" や "12 20" を "12 20" と同じように読みます。
データ中の非空白文字の集まりそれぞれは、using n:n 指定の一つ一つの列 とカウントされます。よって 11:11 25/12/76 21.0 は 3 列のデータと認 識されます。混乱を避けるために、日時データが含まれる場合 gnuplot は、 あなたの using 指定が完璧なものであると仮定します。
日付データが曜日、月の名前を含んでいる場合、書式文字列でそれを排除しなければいけませんが、"%a", "%A", "%b", "%B" でそれらを表示することはできます。gnuplot は数値から月や曜日を正しく求めます。これら、及び日時 データの出力の他のオプションの詳細に関しては、以下参照: set format (100.28)。
2 桁の西暦を %y で読む場合、69-99 は 2000 年未満、00-68 は 2000 年以後と見なします。注意: これは、UNIX98 の仕様に合わせたものですが、この慣 例はあちこちで違いがあるので、2 桁の西暦値は本質的にあいまいです。
書式 %p が "am" か "AM" を返す場合、12 時は 0 時と解釈します。 書式 %p が "pm" か "PM" を返す場合、12 未満の時刻には 12 追加します。
他の情報については、以下も参照: set xdata (100.118), time/date (31)。
例:
set timefmt "%d/%m/%Y\t%H:%M"
書式:
set title {"<title-text>"} {offset <offset>} {font "<font>{,<size>}"} {{textcolor | tc} {<colorspec> | default}} {{no}enhanced} show title
<offset> を x,y かまたは x,y,z の形式で指定した場合は、タイトルは与え られた値だけ移動されます。それに座標系を選択して、その前に first, second, graph, screen, character のいずれかをつけることもでき ます。詳細は、以下参照: coordinates (12)。デフォルトでは character 座標 系が使われます。例えば、"set title offset 0,-1" はタイトルの y 方向 の位置のみ変更し、大ざっぱに言って 1 文字分の高さだけタイトルを下に下 げます。1 文字の大きさは、フォントと出力形式の両方に依存します。
<font> はタイトルが書かれるフォントを指定するのに使われます。<size> の 単位は、どの出力形式 (terminal) を使っているかによって変わります。
textcolor <colorspec> は、文字の色を変更します。<colorspec> は、線 種、rgb 色、またはパレットへの割当のいずれかが指定できます。以下参照:colorspec (21.1), palette (16.3)。
noenhanced は、拡張文字列処理 (enhanced text) モードが有効になってい る場合でも、タイトルを拡張文字列処理させないようにします。
set title をパラメータなしで使うとタイトルを消去します。
バックスラッシュ文字列の作用、及び文字列を囲む単一引用符と二重引用符の 違いについては、以下参照: syntax (30)。
囲を制限します。以下参照: `set parametric`, `set samples`。
または定義します。以下参照: `polar`。
データの標本化に使用します。以下参照: `sampling 1D`, `special-filenames`。
set ttics -180, 30, 180 set ttics add ("Theta = 0" 0) set ttics font ":Italic" rotate
`set isosamples`。
標本化データの生成に使用します。以下参照: `sampling 2D`。
書式:
show variables # GPVAL_ で始まるもの以外の変数を表示 show variables all # GPVAL_ で始まるものも含め全ての変数を表示 show variables NAME # NAME で始まる変数のみを表示
書式:
show version {long}
long オプションを与えると、さらにオペレーティングシステム、gnuplot インストール時のコンパイルオプション、ヘルプファイルの置き場所、そして (再び) 有用なメールアドレスを表示します。
set vgrid $gridname {size N} unset vgrid $gridname show vgrid
指定した名前付き格子 $gridname が既に存在していれば、こえはそれを有効 にし、これに続く vfill と voxel の操作で使えるようにします。サイズ を新たに指定した場合、存在するデータを 0 で埋めた N x N x N 格子に置き 換えます。その名前の格子がまだない場合は、N x N x N 格子 (デフォルトは N=100) の領域をメモリに割り当て、その中身を 0 にし、有効にします。格子 名は、'$' から始めなければいけないことに注意してください。
show vgrid は、現在定義済みのボクセル格子すべての一覧を表示します。
出力例:
$vgrid1: (active) size 100 X 100 X 100 vxrange [-4:4] vyrange[-4:4] vzrange[-4:4] non-zero voxel values: min 0.061237 max 94.5604 number of zero voxels: 992070 (99.21%)
unset vgrid $gridname は、そのボクセル格子に関係するすべてのデータ領 域をメモリから開放します。そのデータ領域は、reset session でも開放さ れます。 関数 voxel(x,y,z) は、その座標に一番近い有効な格子点の値を返します。 以下も参照: splot voxel-grids (102.4)。
書式:
set view <rot_x>{,{<rot_z>}{,{<scale>}{,<scale_z>}}} set view map {scale <scale>} set view projection {xy|xz|yz} set view {no}equal {xy|xyz} set view azimuth <angle> show view
ここで <rot_x> と <rot_z> は、画面に投影される仮想的な 3 次元座標系の 回転角 (単位は度) の制御で、最初は (すなわち回転が行なわれる前は) 画面内の水平軸は x, 画面内の垂直軸は y, 画面自身に垂直な軸が z となっ ています。最初は x 軸の周りに <rot_x> だけ回転されます。次に、新しい z 軸の周りに <rot_z> だけ回転されます。
コマンド set view map は、グラフを地図のように表示するのに使います。 これは等高線 (contour) のグラフや、pm3d モードによる 2 次元温度分布 などで with image よりもむしろ有用です。後者では、入力データ点のフィ ルタ用の zrange の設定、および色の範囲の縮尺に関する cbrange の設 定を適切に行うことに注意してください。
<rot_x> は [0:180] の範囲に制限されていて、デフォルトでは 60 度です。 <rot_z> は [0:360] の範囲に制限されていて、デフォルトでは 30 度です。 <scale> は splot 全体の伸縮率を制御し、<scale_z> は z 軸の伸縮のみを 行ないます。伸縮率のデフォルトはどちらも 1.0 です。
例:
set view 60, 30, 1, 1 set view ,,0.5
最初の例は 4 つの全てをデフォルトの値にしています。2 つめの例は縮小率 のみを 0.5 に変更しています。
set view azimuth <angle-in-degrees>
以下も参照: set xyplane (100.124)。
set view projection {xy|xz|yz}
`set isosamples`。
標本化データの生成に使用します。以下参照: `sampling 2D`。
これは、現在有効なボクセル格子が占める x 座標の範囲を設定します。ボク セル格子の他の 2 つの方向用に、これと同様のコマンド set vyrange, set vzrange があります。最初の vclear, vfill, voxel(x,y,z) = のコマンドの前に明示的な範囲が設定されていなかった場合、vmin と vmax は現在の xrange の範囲をコピーします。
set walls set wall {x0|y0|z0|x1|y1} {<fillstyle>} {fc <fillcolor>}
set wall z0 fillstyle solid 1.0 fillcolor "gray"
書式:
set xdata time show xdata
ydata, zdata, x2data, y2data, cbdata にも同じ書式が当てはま ります。
time オプションはデータが秒単位の日時データであることを伝えます。現 在の gnuplot は時刻をミリ秒の精度保存します。
オプションなしの場合は、データの解釈方法を通常の形式に戻します。
日時データの入力と出力の解釈には、別々の書式機構があります。ファイルか らの入力データは、全体に通用する timefmt を使うか、または plot コマ ンド内で timecolumn() 関数を使って読み込みます。この入力機構は、軸の範 囲 (range) を設定するときに時間の値を使用する際にも適用されます。以下参照: set timefmt (100.96), timecolumn (16.3.3.4)。
例:
set xdata time set timefmt "%d-%b-%Y" set xrange ["01-Jan-2013" : "31-Dec-2014"] plot DATA using 1:2
plot DATA using (timecolumn(1,"%d-%b-%Y")):2
出力、すなわち軸に沿った目盛りのラベルや、マウス操作での座標出力につい ては、デフォルトでは、秒での内部時刻から日時を表現する文字列への変換に は、関数 'strftime' (unix でそれを調べるには "man strftime" とタイプし てください) を使います。gnuplot はこれを適当に意味のある書式で表示し ようとしますが、set format x か set xtics format のいずれかを使っ てカスタマイズすることもできます。 特別な時間書式指定子に関しては、以下参照: time_specifiers (100.28.3)。他の情報 については、以下も参照: time/date (31)。
書式:
set xdtics unset xdtics show xdtics
ydtics, zdtics, x2dtics, y2dtics, cbdtics にも同じ書式が当て はまります。
以下も参照: set format (100.28)。
書式:
set xlabel {"<label>"} {offset <offset>} {font "<font>{,<size>}"} {textcolor <colorspec>} {{no}enhanced} {rotate by <degrees> | rotate parallel | norotate} show xlabel
同じ書式が x2label, ylabel, y2label, zlabel, cblabel にも適 用されます。
<offset> を x,y かまたは x,y,z の形式で指定した場合は、見出しは与えら れた値だけ移動されます。それに座標系を選択して、その前に first, second, graph, screen, character のいずれかをつけることもでき ます。詳細は、以下参照: coordinates (12)。デフォルトでは character 座標 系が使われます。例えば、"set xlabel offset -1,0" は見出しの x 方向の 位置のみ変更し、大ざっぱに言って 1 文字分の幅だけ見出しを左にずらしま す。1 文字の大きさは、フォントと出力形式の両方に依存します。
<font> は見出しが書かれるフォントを指定するのに使われます。フォントの <size> (大きさ) の単位は、どんな出力形式を使うかに依存します。
noenhanced は、拡張文字列処理 (enhanced text) モードが有効になってい る場合でも、ラベル文字列を拡張文字列処理させないようにします。
見出しを消去するには、オプションをつけずに実行します。例: "set y2label"
軸の見出しのデフォルトの位置は以下の通りです:
xlabel: x 軸の見出しはグラフの下の真中
ylabel: y 軸の見出しはグラフの左の真中で、水平方向に書かれるか垂直方向 になるかは出力形式依存。 グラフの左側に回転させない ylabel 文字列を置くには、十分なスペースがな い場合もありえます。その場合は、set lmargin で揃えられます。
zlabel: z 軸の見出しは軸の表示範囲より上で、見出しの真中が z 軸の真上
cblabel: 色見本 (color box) の軸の見出しは箱に沿って中央揃えされ、箱の 向きが水平なら下に、垂直なら右に
y2label: y2 軸の見出しは y2 軸の右。その位置は、出力形式依存で y 軸と 同様の規則で決定。
x2label: x2 軸の見出しはグラフの上で、タイトルよりは下。これは、 改行 文字を使えば、それによる複数の行からなる描画タイトルで x2 軸の見出しを 生成することも可能。例:
set title "This is the title\n\nThis is the x2label"
これは二重引用符を使うべきであることに注意してください。この場合、もち ろん 2 つの行で同じフォントが使われます。
2 次元描画の場合の x, x2, y, y2 軸のラベルの方向 (回転角) は、 rotate by <角度> を指定することで変更できます。3 次元描画の x, y 軸 のラベルの方向はデフォルトでは水平方向になっていますが、 rotate parallel を指定することで軸に平行にすることができます。
もし軸の位置のデフォルトの位置が気に入らないならば、代わりに set label を使ってください。このコマンドは文字列をどこに配置するかをもっと自由に 制御できます。
バックスラッシュ文字列の作用、及び文字列を囲む単一引用符と二重引用符の 違いに関するより詳しい情報については、以下参照: syntax (30)。
書式:
set xmtics unset xmtics show xmtics
x2mtics, ymtics, y2mtics, zmtics, cbmtics にも同じ書式が適用 されます。
以下も参照: コマンド set format (100.28)。
書式:
set xrange [{{<min>}:{<max>}}] {{no}reverse} {{no}writeback} {{no}extend} | restore show xrange
ここで <min> と <max> は定数、数式、または '*' で、'*' は自動縮尺機能 を意味します。日時データの場合、範囲は set timefmt の書式に従った文 字列を引用符で囲む必要があります。<min> や <max> を省略した場合は、現 在の値を変更しません。自動縮尺機能に関する詳細は下に述べます。以下も参照: noextend (100.3.1)。
yrange, zrange, x2range, y2range, cbrange, rrange, trange, urange, vrange は同じ書式を使用します。
x と x2 軸、あるいは y と y2 軸の範囲をリンクするオプションについては 以下参照: set link (100.41)。
オプション reverse は、自動縮尺の軸の方向を逆にします。例えば、デー タ値の範囲が 10 から 100 であるとき、これは、set xrange [100:10] とし たのと同じように自動縮尺します。reverse は、自動縮尺ではない軸に対し ては機能しません。注意: この変更は、バージョン 4.7 で導入されました。
自動縮尺機能: <min> (同様のことが <max> にも適用されます) がアスタリス
ク "*" の場合は自動縮尺機能がオンになります。その場合のその値に、下限
<lb>、または上限 <ub>、またはその両方の制限を与えられます。書式は以下の通りです。
{ <lb> < } * { < <ub> }
0 < * < 200
オプション writeback は、set xrange で占められているバッファの中に 自動縮尺機能により作られた範囲を保存します。これは、いくつかの関数を同 時に表示し、しかしその範囲はそのうちのいくつかのものから決定させたい場 合に便利です。writeback の作用は、plot の実行中に機能するので、その コマンドの前に指定する必要があります。最後に保存した水平方向の範囲は set xrange restore で復元できます。例を上げます。
set xrange [-10:10] set yrange [] writeback plot sin(x) set yrange restore replot x/2
この場合、y の範囲 (yrange) は sin(x) の値域として作られた [-1:1] の方 になり、x/2 の値域 [-5:5] は無視されます。上記のそれぞれのコマンドの後 に show yrange を実行すれば、上で何が行なわれているかを理解する助け になるでしょう。
2 次元描画において、xrange と yrange は軸の範囲を決定し、trange は、媒介変数モードの媒介変数の範囲、あるいは極座標モードの角度の範囲を 決定します。同様に 3 次元媒介変数モードでは、xrange, yrange, zrange が軸の範囲を管理し、urange と yrange が媒介変数の範囲を管理します。
極座標モードでは、rrange は描画される動径の範囲を決定します。<rmin> は動径への追加の定数として作用し、一方 <rmax> は動径を切り捨てる (clip) ように作用し、<rmax> を越えた動径に対する点は描画されません。xrange と yrange は影響されます。これらの範囲は、グラフが r(t)-rmin のグラ フで、目盛りの見出しにはそれぞれ rmin を加えたようなものであるかのよう にセットされます。
全ての範囲は部分的に、または全体的に自動縮尺されますが、データの描画で なければ、パラメータ変数の自動縮尺機能は意味がないでしょう。
範囲は plot のコマンドライン上でも指定できます。コマンドライン上で与 えられた範囲は単にその plot コマンドでだけ使われ、set コマンドで設 定された範囲はその後の描画で、コマンドラインで範囲を指定していないもの 全てで使われます。これは splot も同じです。
x の範囲をデフォルトの値にします:
set xrange [-10:10]
y の範囲が下方へ増加するようにします:
set yrange [10:-10]
z の最小値には影響を与えずに (自動縮尺されたまま)、最大値のみ 10 に設
定します:
set zrange [:10]
x の最小値は自動縮尺とし、最大値は変更しません:
set xrange [*:]
x の最小値を自動縮尺としますが、その最小値は 0 以上にします。
set xrange [0<*:]
x の範囲を自動縮尺としますが、小さくても 10 から 50 の範囲を保持します
(実際はそれより大きくなるでしょう):
set xrange [*<10:50<*]
自動縮尺で最大範囲を -1000 から 1000、すなわち [-1000:1000] 内で自動縮
尺します:
set xrange [-1000<*:*<1000]
x の最小値を -200 から 100 の間のどこかにします:
set xrange [-200<*<100:]
書式:
set xtics {axis | border} {{no}mirror} {in | out} {scale {default | <major> {,<minor>}}} {{no}rotate {by <ang>}} {offset <offset> | nooffset} {left | right | center | autojustify} {add} { autofreq | <incr> | <start>, <incr> {,<end>} | ({"<label>"} <pos> {<level>} {,{"<label>"}...) } {format "formatstring"} {font "name{,<size>}"} {{no}enhanced} { numeric | timedate | geographic } {{no}logscale} { rangelimited } { textcolor <colorspec> } unset xtics show xtics
同じ書式が ytics, ztics, x2tics, y2tics, cbtics にも適用され ます。
axis と border は gnuplot に目盛り (目盛りの刻み自身とその見出し) を、それぞれ軸につけるのか、境界につけるのかを指示します。軸が境界にと ても近い場合、axis を使用すると目盛りの見出し文字を境界の外に出して しまうでしょう。この場合自動的なレイアウトアルゴリズムによる余白設定は 大抵よくないものとなってしまいます。
mirror は gnuplot に反対側の境界の同じ位置に、見出しのない目盛りを 出力するよう指示します。nomirror は、あなたが想像している通りのこと を行ないます。
in と out は目盛りの刻みを内側に描くか外側に描くかを切り変えます。
目盛りの刻みのサイズは 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 (12)。nooffset はずらしを無効にします。
例:
xtics をより描画に近づける:
set xtics offset 0,graph 0.05
デフォルトでは見出しラベルは、美しい結果を生むように、軸と回転角に依存 した位置に自動的に揃えられますが、気にいらなければ、明示的に left, right, center のキーワードにより位置揃えを変更できます。 autojustify でデフォルトの挙動に復帰します。
オプションなしで set xtics を実行すると、目盛りが表示される状態であ れば、それはデフォルトの境界、または軸を復元し、そうでなければ何もしま せん。その前に指定した目盛りの間隔、位置 (と見出し) は保持されます。
目盛りの位置は、デフォルト、またはオプション autofreq が指定されてい れば自動的に計算されます。
目盛りの位置の列は、目盛りの間隔のみ、または開始位置と間隔と終りの位置、 のいずれかを指定することができます (以下参照: xtics series (100.123.1))。
明示的な位置のリストを与えることで、個々の目盛りの位置を個別に指定する こともできます。各位置には、それに対する見出しラベルを指定することもで きます。以下参照: xtics list (100.123.2)。
しかし指定しても、表示されるのはあくまで描画範囲のものだけです。
目盛りの見出しの書式 (または省略) は set format で制御されます。ただ しそれは set xtics (<label>) の形式の明示的な見出し文字列が含まれ ていない場合だけです。
(見出し付けされない) 小目盛りは、set mxtics コマンドで自動的に追加す るか、または位置を手動で set xtics ("" <pos> 1, ...) の形式で与える こともできます。
刻みの見た目 (線種、幅等) は、それを軸の上に描く場合であっても、境界線 によって決定されます (以下参照: set border (100.6))。
set xtics <incr> set xtics <start>, <incr>, <end>
負の <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
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
set xtics {add} ("label1" <pos1> <level1>, "label2" <pos2> <level2>, ...)
明示的な ("label" <pos> <level>, ...) の形式は、任意の目盛りの位置、あ るいは数字でない見出しの生成も可能にします。この形式では、目盛りは位置 の数字の順に与える必要はありません。各目盛りは位置 (pos) と見出し (label) を持ちますが、見出しは必須ではありません。
見出しは引用符で囲んだ文字列か、または文字列値の数式です。それには、 "%3f clients" のようにその位置を数字に変換する書式文字列を入れても構いませんし、空文字列 "" でも構いません。より詳しい情報については、以下参照: set format (100.28)。もし、文字列を指定しなければ、デフォルトの数字の見出 しを使用します。
明示的な形式では 3 つ目のパラメータとしてレベルを指定できます。デフォ ルトのレベルは 0 で、これは大目盛りを意味し、レベル 1 の場合は小目盛り を生成します。ラベルは、小目盛りには決して付きません。大目盛りと小目盛 りは gnuplot が自動的に生成しますが、ユーザが明示的に指定もできます。 レベルが 2 以上の目盛りは、ユーザが明示的に指定しなければならず、自動生成の目盛りよりも高い優先度を持ちます。各レベルの目盛りの刻みの大きさ は、set tics scale で制御します。
例:
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 間隔でつけますが、πのところに 明示的な見出しも追加します。
入力: 非数値の日時値は、入力時に timefmt で指定した書式を用いて秒数 に変換します。軸に対する位置や軸の範囲も timefmt で解釈される日時で、 引用符で囲んで与えます。 <start>, <incr>, <end> 形式を使う場合、<incr> は秒単位で与えなければい けません。入力データの解釈には timefmt を使ってください。軸の範囲と 目盛りの位置は、set xdata time で変更されます。
出力: 軸の目盛りラベルは、set format か set xtics format のいずれ かで指定された、別の書式を使って生成します。デフォルトでは、それは通常 の数値書式指定であると認識しますが (set xtics numeric)、他に、地理座 標 (set xtics geographic) や、日時データ (set xtics time) のオプシ ョンがあります。
注意: 以前の版の gnuplot との互換性のため、コマンド set xdata timeも暗黙に set xtics time を実行しますし、set xdata や unset xdataは暗黙に set xtics numeric へリセットします。しかし、これはその後に set xtics を呼び出すことで変更できます。
例:
set xdata time # 入力データの解釈の制御 set timefmt "%d/%m" # 入力データの読み込みの書式 set xtics timedate # 出力書式の解釈の制御 set xtics format "%b %d" # 目盛りラベルで使う書式 set xrange ["01/12":"06/12"] set xtics "01/12", 172800, "05/12"
set xdata time set timefmt "%d/%m" set xtics format "%b %d" time set xrange ["01/12":"06/12"] set xtics ("01/12", "" "03/12", "05/12")
%D = 度の整数表示 %<width.precision>d = 度の浮動小数表示 %M = 分の整数表示 %<width.precision>m = 分の浮動小数表示 %S = 秒の整数表示 %<width.precision>s = 秒の浮動小数表示 %E = +/- でなく E/W のラベル %N = +/- でなく N/S のラベル
xtics がデフォルトの状態のまま (set xtics numeric) の場合は、座標は 10 進数の度で表示し、format も上の特別な記号ではなく、通常の数値書式 が使われているとみなされます。
マップ上にラベルを置くなど、軸の目盛りとは異なる場所で度/分/秒の出力を するには、strptime に相対的時間書式指定 %tH %tM %tS を使用できます。以下参照: time_specifiers (100.28.3), strptime (16.3)。
# y=20 y=200 y=2000 y=20000 に刻み列を作成 set log y set ytics 20, 10, 50000 logscale
^
x の数列には含まれないので、そこには刻みはつかないこと
に注意してください。logscale 属性が無効の場合、軸の増分は、たとえ対数
軸であっても公差として扱われます。例:
# y=20 y=40 y=60 ... y=200 に刻みを作成 set log y set yrange [20:200] set ytics 20 nologscale
set border 3 set yrange [0:10] set ytics nomirror rangelimited plot "file.dat"
書式:
set xyplane at <zvalue> set xyplane relative <frac> set ticslevel <frac> # set xyplane relative と同等 show xyplane
set xyplane relative <frac> は、xy 平面を Z 軸の範囲のどこに置くかを 決定します。<frac> には、xy 平面と z の一番下の位置との差の、z 軸の範 囲全体に対する割合を与えます。デフォルトの値は 0.5 です。負の値も許さ れていますが、そうすると 3 つの軸の目盛りの見出しが重なる可能性があり ます。
もう一つの形式である set xyplane at <zvalue> は、現在の z の範囲を気 にすることなく、指定した z の値の位置に xy 平面を固定します。よって、 x,y,z 軸を共通の原点を通るようにするには、set xyplane at 0 とすれば いいことになります。
以下も参照: set view (100.105), set zeroaxis (100.146)。
書式:
set zero <expression> show zero
gnuplot は、(複素数値を持つ点の描画においては) その値の虚数部分の絶 対値が zero 閾値より大きい場合 (つまり実数でない値を持つ点) は、その 点を描画しません。この閾値は gnuplot の他の様々な部分においてその (大まかな) 数値誤差の閾値としても使われています。デフォルトの zero の 値は 1e-8 です。1e-3 (= 典型的なビットマップディスプレイの解像度の逆数) より大きい zero の値は設定すべきではないでしょうが、zero を 0.0 と 設定するのは意味のないことではありません。
書式:
set {x|x2|y|y2|z}zeroaxis { {linestyle | ls <line_style>} | {linetype | lt <line_type>} {linewidth | lw <line_width>} {linecolor | lc <colorspec>} {dashtype | dt <dashtype>} } unset {x|x2|y|y2|z}zeroaxis show {x|y|z}zeroaxis
デフォルトでは、これらのオプションはオフになっています。選択された 0 の軸は <line_type> の線の型、<line_width> の線の幅、<colorspec> の色、 <dashtype> の点線/破線パターンで (いずれも現在使用している出力形式が サポートしていれば)、あるいはあらかじめ定義された <line_style> のスタ イルで描かれます。以下参照: set style line (100.86.7)。
線の型を指定しなければ、軸は通常の軸の線の型 (型 0) で描かれます。
例:
y=0 の軸を見えるように簡単に書く場合:
set xzeroaxis
太い線にして、違った色、または点線パターンにしたい場合:
set xzeroaxis linetype 3 linewidth 2.5
カラーボックス軸 (cb-軸) が splot で自動縮尺されている場合は、その カラーボックスの範囲は zrange が使われます。splot ... pm3d|palette で描画される点は、異なる zrange と cbrange を使うことでフィルタリ ングできます。
set cbrange の書式に関する詳細は、以下参照: set xrange (100.122)。以下も参照:set palette (100.66), set colorbox (100.15)。
コマンド shell は、それ以外の gnuplot コマンドライン上のものをすべて無視します。そうでなく、シェルに直ちにコマンド文字列を渡したい場合は、 関数 system か、ショートカット ! を使用してください。以下参照:system (104)。
例:
shell system "print previous_plot.ps" ! print previous_plot.ps current_time = system("date")
2 次元と 3 次元描画の両方で使える多くのオプションについては、以下参照:plot (89)。
書式:
splot {<ranges>} {<iteration>} <function> | {{<file name> | <datablock name>} {datafile-modifiers}} | <voxelgridname> | keyentry {<title-spec>} {with <style>} {, {definitions{,}} <function> ...}
コマンド splot は、関数から生成されたデータ、またはデータファイルか ら読み込んだデータ、または事前に保存された名前付きデータブロックのデー タを処理します。データファイル名は、通常引用符で囲んだ文字列として与え ます。関数は 1 本の数式ですが、媒介変数モード (parametric) では 3 つの 数式の組として与えます。
バージョン 5.4 での新しい機能は、splot でボクセルデータの操作ができ ることです。以下参照: voxel-grids (102.4), set vgrid (100.104), vxrange (100.107)。有効なボ クセル格子データは、スタイル with dots, with points, with isosurface のいずれかを使って描画できます。ボクセル格子データ値 は、これら以外の描画スタイルでも using 指定を使えば参照でき、例えば色を割り当てるなどに利用できます。
デフォルトでは、splot は描画されるデータの下に完全な xy 面を描きます。 z の一番下の目盛りと xy 平面の位置関係は set xyplane で変更できます。 splot の射影の向きは set view で制御できます。詳細は、以下参照:set view (100.105), set xyplane (100.124)。
splot コマンドの範囲の指定の書式は plot の場合と同じです。媒介変数
モード (parametric) でなければ、範囲指定は以下の順で、
splot [<xrange>][<yrange>][<zrange>] ...
splot [<urange>][<vrange>][<xrange>][<yrange>][<zrange>] ...
title オプションも plot と同じです。with も plot とほぼ同じで すが、2 次元の描画スタイル全部が使えるわけではありません。
datafile オプションにはさらに違いがあります。
媒介変数モード (parametric) や関数を利用して曲面を描く別の方法に、疑似 ファイル '++' を利用して xy 平面の格子の上に標本点を生成するやり方があ ります。
以下も参照: show plot (100.70), set view map (100.105), sampling (89.9)。
書式:
splot '<file_name>' {binary <binary list>} {{nonuniform} matrix} {index <index list>} {every <every list>} {using <using list>}
"" や "-" といった特別なファイル名も plot と同様に許されます。以下参照: special-filenames (89.3.9)。
手短にいうと、binary や matrix はそのデータが特別な形であることを、 index は多重データ集合ファイルからどのデータ集合を選んで描画するかを、 every は各データ集合からどのデータ行 (部分集合) を選んで描画するかを、 using は各データ行からどのように列を選ぶかを指定します。
index と every オプションは plot の場合と同じように振舞います。 using も、using のリストが 2 つでなく 3 つ必要であるということを 除いては同様です。
plot のオプションである smooth は splot では利用できません。しか し、cntrparam や dgrid3d が、制限されてはいますが平滑化のために用 意されています。
データファイルの形式は、各点が (x,y,z) の 3 つ組である以外は、本質的にplot と同じです。もし一つの値だけが与えられれば、それは z として使わ れ、ブロック番号が y として、そして x はそのブロック内での番号が使われ ます。もし 2 つ、あるいは 4 つの値が与えられれば、gnuplot はその最後 の値を pm3d plot での色の計算に使います。3 つの値は (x,y,z) の組と見な されます。他に値があれば、それは一般に誤差と見なされます。それは fit で使うことが可能です。
splot のデータファイルでは、1 行の空行はデータのブロック分離子です。 splot は個々のブロックを、関数の y-孤立線と同じものとして扱います。 1 行の空行で分離されている点同士は線分で結ばれることはありません。全て のブロックが全く同じ点の数を持つ場合、gnuplot はブロックを横断し、各 ブロックの対応する点同士を結ぶ孤立線を描きます。これは "grid data" と 呼ばれ、曲面の描画、等高線の描画 (set contour)、隠線処理 (set hidden3d) では、この形のデータであることが必要となります。以下も参照: splot grid_data (102.2)。
3 列の splot データにおいては、媒介変数モード (parametric) を指定 することはもはや不要です。
その 1 つは、x, y の座標が一様であると仮定して、その値をこの一様な格子 の matrix のそれぞれの要素 M[i,j] に割り当てる方法です。 割り当てられる x 座標は [0:NCOLS-1] の範囲の整数です。 割り当てられる y 座標は [0:NROWS-1] の範囲の整数です。 これは、テキストデータに対してはデフォルトですが、バイナリデータに対し てはそうではありません。 例や追加キーワードについては以下参照: matrix uniform (102.1.1.1)。
2 つ目の形式は、非一様な格子で、x, y 座標は明示していると仮定するもの で、入力データの最初の行を y 座標、最初の列を x 座標とみなします。 バイナリデータに対しては、1 行目の最初の要素は、列数でなければいけませ ん。これは、binary matrix 入力ではデフォルトですが、テキスト入力デー タに対しては追加キーワード nonuniform が必要になります。 例に関しては以下参照: matrix nonuniform (102.1.1.2)。
splot 'file' matrix using 1:2:3 # テキストデータ splot 'file' binary general using 1:2:3 # バイナリデータ
一様な格子の matrix データでは、各ブロックの z の値は一行で一度に読ま
れます。すなわち、
z11 z12 z13 z14 ... z21 z22 z23 z24 ... z31 z32 z33 z34 ...
テキストデータに対しては、1 行目がデータでなく列ラベルを持つ場合、追加
キーワード columnheaders を使ってください。同様に、各行の最初の要素
がデータでなくラベルである場合は、追加キーワード rowheaders を使用し
てください。以下は、その両方を使用する例です:
$DATA << EOD xxx A B C D aa z11 z12 z13 z14 bb z21 z22 z23 z24 cc z31 z32 z33 z34 EOD plot $DATA matrix columnheaders rowheaders with image
テキストデータでは、空行やコメント行は配列データを終了させ、新たなデー タブロックを開始します。いつものことですが、splot コマンドの index オプションを使ってファイル内のデータブロックを自由に選択できます。オプ ション columnheaders がある場合は、それは最初のデータブロックにのみ適 用します。
非一様な matrix データを描画するコマンドの例:
splot 'file' nonuniform matrix using 1:2:3 # テキストデータ splot 'file' binary matrix using 1:2:3 # バイナリデータ
よって、非一様な matrix データの構造は以下のようになります:
<N+1> <x0> <x1> <x2> ... <xN> <y0> <z0,0> <z0,1> <z0,2> ... <z0,N> <y1> <z1,0> <z1,1> <z1,2> ... <z1,N> : : : : ... :
これらは以下のような 3 つの数字の組に変換されます:
<x0> <y0> <z0,0> <x0> <y1> <z0,1> <x0> <y2> <z0,2> : : : <x0> <yN> <z0,N>
<x1> <y0> <z1,0> <x1> <y1> <z1,1> : : :
そして、これらの 3 つの数字の組は gnuplot の孤立線に変換され、その後 gnuplot が通常の方法で描画の残りを行います。
plot 'file' every {<column_incr>} {:{<row_incr>} {:{<start_column>} {:{<start_row>} {:{<end_column>} {:<end_row>}}}}}
plot 'file' matrix every :::N::N # N 番の行のすべての値を描画 plot 'file' matrix every ::3::7 # すべての行の 3-7 列を描画 plot 'file' matrix every ::3:0:7:4 # [3,0], [7,4] 枠の部分行列
int fwrite_matrix(file,m,nrl,nrl,ncl,nch,row_title,column_title)
です。これらのサブルーチンを使う例が bf_test.c として用意されていて、 これはデモファイル demo/binary.dem 用に複数のバイナリファイルを生成 します。
plot での使用法:
plot `a.dat` matrix plot `a.dat` matrix using 1:3 plot 'a.gpbin' {matrix} binary using 1:3
例 – テキストデータファイルの配列の軸の拡大:
splot `a.dat` matrix using (1+$1):(1+$2*10):3
例 – テキストデータファイルの配列の第 3 行の描画:
plot 'a.dat' matrix using 1:3 every 1:999:1:2
Gnuplot は、array, record, format, filetype などの general バ イナリ形式を特定するようなキーワードをつけずにオプション binary を使 うことで、matrix バイナリファイルを読み込むことができます。その他の変換 用の general バイナリキーワードは、matrix バイナリファイルにも適用でき るでしょう。(詳細は、以下参照: binary general (89.2.1)。)
splot 'datafile.dat'
ここで、"datafile.dat" は以下を含むとします:
# The valley of the Gnu. 0 0 10 0 1 10 0 2 10
1 0 10 1 1 5 1 2 10
2 0 10 2 1 1 2 2 10
3 0 10 3 1 0 3 2 10
この "datafile.dat" は 4*3 の格子 (それぞれ 3 点からなるブロックの 4 つの行) を定義することに注意して下さい。行 (ブロック) は 1 行の空行 で区切られます。
x の値はそれぞれのブロックの中で定数になっていることに注意して下さい。 もし y を定数の値とし、隠線処理が有効な状態で描画すると、その曲面は裏 返しで書かれることになります。
格子状データ (grid data) に対して、個々のブロック内で x の値を定数とし ておく必要はありませんし、同じ場所の y の値を同じ値に揃えておく必要も ありません。gnuplot は個々のブロック内の点の数が等しいということを必 要としているだけです。しかし、等高線を導くのに用いられる曲面の網目は、 対応する点を列的に選んで結ぶため、不揃いの格子データに対する曲面の描画 への影響は予想できません。それはケースバイケースの原理でテストすべきで しょう。
しかし、gnuplot はそのような形式を必ずしも必要とはしません。例えば関 数の場合は、samples は isosamples と違っていても構いません。すなわ ち、x-孤立線のうち、1 本の y-孤立線と交わないものがいくつかあることが あります。データファイルの場合は、個々のブロックのばらついた点の個数が 全て同じであれば、"孤立線は" はブロックの点を結び、"横断孤立線" は各ブ ロックの対応する点同士を結び、"曲面" を作ろうとします。どちらの場合で も、等高線、および隠線処理モードは点が意図したフォーマットであった場合 とは違った描画を与えることになります。ばらつきのあるデータは set dgrid3d によって{異なる}格子状データに変換することができます。
等高線に関するコードは、y-孤立線の点と、それに対応する隣の y-孤立線上
の点の間の線分に沿っての z の張力を計測します。よって、x-孤立線に、
y-孤立線との交点とはならないような標本点があるような曲面に対しては、
splot の等高線はそのような標本点を無視することになります。以下を試してみて下さい:
set xrange [-pi/2:pi/2]; set yrange [-pi/2:pi/2] set style function lp set contour set isosamples 10,10; set samples 10,10; splot cos(x)*cos(y) set samples 4,10; replot set samples 10,4; replot
さらに、格子状のデータ点に対しては、splot は同じ高さを持つ点を補間す ることができ (以下参照: set contour (100.17))、そしてそれらを結んで等高線を描 くことができます。さらに、その結び方には真直な線分や滑らかな線を使うこ とができます (以下参照: set cntrparam (100.14))。関数は、常に set isosamples と set samples で決定される格子状データとして評価されます。一方、フ ァイルのデータは、data-file に書かれているような格子状データフォーマ ットにするか、あるいは格子データを生成する (以下参照: set dgrid3d (100.22)) ということをしなければそうはなりません。
等高線は曲面の上に表示することもできますし、底面に射影することもできま す。底面への射影は、ファイルに書き出すこともでき、そしてそれを plot で再び読み込んで plot のより強い整形能力を生かすこともできます。
splot $voxelgridname with {dots|points} {above <threshold>} ... splot $voxelgridname with isosurface {level <threshold>} ...
ボクセルデータは、指定した閾値 (threshold; デフォルトは 0) よりも大き い値の個々のボクセルに印を付けるように、with dots か with points で描 画できます。色、点種、線幅の属性は、通常と同様に追加指定できます。
多くの視方向に対して、ボクセル格子点は、ディスプレイ上で互いを隠したり モアレを生成したりします。それらの副作用は、jitter を導入してドットや 点を実際のボクセル格子座標からランダムにずらすことで避けることが可能で す。以下参照: set jitter (100.37)。
密なボクセル格子は、pointinterval 属性 (省略形 pi) を使うことで、
点の数を減らすよう標本化レベルを下げることが可能です。
splot $vgrid with points pointtype 6 pointinterval 2
with isosurface は、指定された閾値より大きいボクセル全体を包む、3 次 元モザイク型曲面を生成します。この曲面は、閾値それ自体を通過するよう、 線形補間により調整されて配置されます。
以下参照: set vgrid (100.104), vfill (111)。 以下のデモも参照してください: vplot.dem, isosurface.dem。
stats {<ranges>} 'filename' {matrix | using N{:M}} {name 'prefix'} {{no}output}
このコマンドは、ファイルの 1 列、または 2 列のデータの簡単な統計情報を 提供します。using 指定子は、plot コマンドと同じ形で解釈されますが、 index, every, using 指定に関する詳細については以下参照: plot (89)。 データ点は、その解析の前に xrange, yrange に従ってフィルタにかけられま す。以下参照: set xrange (100.122)。その情報はデフォルトではスクリーンに出力さ れますが、コマンド set print を先に使うことで出力をファイルにリダイ レクトしたり、オプション nooutput を使うことで出力しないようにするこ ともできます。
画面出力に加え、gnuplot は個々の統計情報を 3 つの変数グループに保存し ます。 1 番目の変数グループは、どんなデータが並んでいるかを示しますが、先頭行 の配列は、set datafile columnheaders が有効な場合にのみ作成されます:
STATS_records |
N | 範囲内のデータ行の総数 N |
STATS_outofrange |
範囲外として除かれた行数 | |
STATS_invalid |
無効/不完全/欠損データ行の総数 | |
STATS_blank |
空行の総数 | |
STATS_blocks |
ファイル内のデータの index ブロック数 | |
STATS_columns |
データ先頭行の列数 | |
STATS_column_header |
先頭行に見つかった文字列を保持する配列 |
2 番目の変数グループは、1 つの列の、範囲内のデータの性質を示します。こ の列は y の値として扱われます。y 軸が自動縮尺の場合は、対象とする範囲 に限界はありませんが、そうでなければ範囲 [ymin:ymax] 内の値のみを対象 とします。
2 つの列を同時に 1 回の stats コマンドで解析する場合は、各変数名に "_x", "_y" という接尾辞を追加します。例えば STATS_min_x は、1 つ目の列 のデータの最小値で、STATS_min_y は 2 つ目の列のデータの最小値を意味し ます。この場合、点は xrange と yrange の両方で検査することでふるいにか けます。
STATS_min |
min(y) | 範囲内のデータ点の最小値 | |
STATS_max |
max(y) | 範囲内のデータ点の最大値 | |
STATS_index_min |
i | yi = min(y) | data[i] == STATS_min となる添字 i | |
STATS_index_max |
i | yi = max(y) | data[i] == STATS_max となる添字 i | |
STATS_mean |
= | y | 範囲内のデータ点の平均値 |
STATS_stddev |
= | 範囲内のデータ点の標本標準偏差 | |
STATS_ssd |
sy = | 範囲内のデータ点の不偏標準偏差 | |
STATS_lo_quartile |
第一 (下の) 四分位境界値 | ||
STATS_median |
メジアン値 (第二四分位境界値) | ||
STATS_up_quartile |
第三 (上の) 四分位境界値 | ||
STATS_sum |
y | 和 | |
STATS_sumsq |
y2 | 平方和 | |
STATS_skewness |
(y-)3 | 範囲内のデータ点の歪度 | |
STATS_kurtosis |
(y-)4 | 範囲内のデータ点の尖度 | |
STATS_adev |
| y-| | 範囲内のデータ点の平均絶対偏差 | |
STATS_mean_err |
/ | 平均値の標準誤差 | |
STATS_stddev_err |
/ | 標準偏差の標準誤差 | |
STATS_skewness_err |
歪度の標準誤差 | ||
STATS_kurtosis_err |
尖度の標準誤差 |
3 番目の変数グループは、2 つの列のデータの解析専用です。
STATS_correlation |
x と y の不偏相関係数 | |
STATS_slope |
回帰直線 y = Ax + B の係数 A | |
STATS_slope_err |
A の不確かさ | |
STATS_intercept |
回帰直線 y = Ax + B の係数 B | |
STATS_intercept_err |
B の不確かさ | |
STATS_sumxy |
積和 (x*y の和) | |
STATS_pos_min_y |
y の最小値を与える x 座標 | |
STATS_pos_max_y |
y の最大値を与える x 座標 |
キーワード matrix は、入力が行列形式であることを指示します (以下参照:matrix (102.1.1))。通常の統計情報は、すべての行列要素を考慮して生成します。行 列のサイズは、変数 STATS_size_x, STATS_size_y に保存します。
STATS_size_x |
行列の列数 | |
STATS_size_y |
行列の列数 |
STATS_index_xxx で示される添字の値は、plot コマンドの第 0 疑似列 ($0) の値に対応し、最初の点は添字は 0、最後の点の添字は N-1 となります。
メジアンと四分位境界値を探す際はデータの値をソートし、点の総数 N が奇 数の場合は、その (N+1)/2 番目の値をメジアン値とし、N が偶数の場合は、 N/2 番目と (N+2)/2 番目の値の平均値をメジアン値とします。四分位境界値 も同様に処理します。
その後の描画に注釈をつけるためにコマンド stats を利用した例について は、以下を参照してください。 stats.dem。
現在のバージョンの gnuplot の stats コマンドでは、日時フィールド (set xdata time や set ydata time) でなければ対数軸のデータも処理 できます。この制限は、将来のバージョンで緩和されるでしょう。
stats "file1.dat" using 2 name "A" stats "file2.dat" using 2 name "B" if (A_mean < B_mean) {...}
name として文字列定数を用意する代わりに、キーワード columnheader や
関数 columnheader(N) により、データファイルの 1 行目から取得した任意
の文字列から接頭辞を生成することもできます:
do for [COL=5:8] { stats 'datafile' using COL name columnheader }
system "command string" ! command string output = system("command string") show variable GPVAL_SYSTEM
system "command" は、オペレーティングシステムのデフォルトシェルを呼 び出し、そのサブプロセスとして "command" を実行します。関数として system("command") を呼び出した場合は、そのサブプロセスの標準出力から の文字ストリームを文字列として返します。最後に改行がついている場合は、 それは結果文字列からは除去されます。以下も参照: backquotes (29.1)。
そのサブプロセスの終了コードは、変数 GPVAL_SYSTEM_ERRNO と GPVAL_SYSTEM_ERRMSG に保存されます。しかし、もしコマンド文字列が 2 つ 以上のプログラムを呼び出している場合は、そのうちの一つのプログラムがエラーを出しても、"成功" を返す可能性があることに注意してください。例え ば、file = system("ls -1 *.plt | tail -1") は、*.plt ファイルが一つも ない場合でも "成功" が返ります。それは、ls が失敗しても tail は成 功するからです。
システムコマンドは、以下に示すように外部関数を gnuplot に取り入れるのに利用できますが、これはその関数を呼び出す度に別のサブプロセスを強制的に生成することになります。よって、たくさん呼び出す可能性のある関数は、 動的ライブラリからサブルーチンとして直接呼び出す形で取り入れる方がいい でしょう。以下参照: import (85), plugin.dem ()。
f(x) = real(system(sprintf("somecommand %f", x)))
書式:
test {terminal | palette}
test または test terminal は、現在使用中の出力形式 (terminal) で 使える線の種類、点の種類、または利用可能なその他の描画を生成します。
test palette は、R(z),G(z),B(z) (0<=z<=1) の状態を描画します。これら は現在のカラーパレット (palette) の RGB 成分を示します。また、RGB を 灰色階調に写像する NTSC 係数を用いて計算された視光度も描画します。この 対応関係は、$PALETTE という名前のデータブロックにも取り込まれます。
toggle {<plotno> | "plottitle" | all}
このコマンドは、対話型出力形式 (qt, wxt, x11) で表示されているグラフの key エントリ上で左クリックしたのと同じ効果を与えます。すなわち、そのグ ラフが表示されていればそれを消し、グラフが消えていれば再び表示します。 toggle all は、ホットキー "i" と同様、有効なグラフすべてに作用します。 toggle "title" の形式は、グラフのタイトルと完全に一致するタイトルを 指定する必要がありますが、toggle "ti*" の場合は、グラフのタイトルと '*' の前の部分が一致する最初のグラフに作用します。現在の出力形式が対話 型でない場合は、コマンド toggle は何もしません。
変数名には、最後の文字としてワイルドカード文字 * を使うことができま す。ワイルドカード文字が見つかると、それより前の部分で始まるすべての変 数を削除します。これは、共通の接頭語を使っている複数の変数を削除するの に便利でしょう。ただし、ワイルドカード文字は変数名の最後にしか使えない ことに注意してください。undefine にワイルドカード文字のみを引数とし て与えた場合は何もしません。
例:
undefine foo foo1 foo2 if (!exists("foo")) load "initialize.gp"
bar = 1; bar1 = 2; bar2 = 3 undefine bar* # 3 つの変数を全部削除
例:
set xtics mirror rotate by -45 0,10,100 ... unset xtics
# 番号 100 から 200 までのラベルを unset unset for [i=100:200] label i
unset linetype N
vclear {$gridname}
vfill FILE using x:y:z:radius:(<expression>)
コマンド vfill は、それがグラフを生成する代わりに現在有効なボクセル 格子データを変更する以外は、コマンド plot と同様に作用します。入力フ ァイルから読み込んだ各点に対して、その点を含むボクセル、及び中心が (x,y,z) で指定半径 (radius) の球に含まれるその他すべてのボクセルが以下のように増やされます:
vfill "file.dat" using 1:2:3:(3.0):(1.0)
例:
vfill "file.dat" using 1:2:3:4:(VoxelDistance < 1 ? 1 : 1/VoxelDistance)
vfill は、現在のボクセル格子の存在する値を常に増加させることに注意し てください。それらの値を 0 にリセットさせるには、vclear を使用してく ださい。
while (<expr>) { <commands> }
この文書は、あなたのシステム上で初期設定およびインストールがなされなか ったために利用できない出力形式についても記述されているかも知れません。 インストールされた個々の gnuplot で、どの出力形式が有効なのかの一覧を 見るには、オプションを何もつけずに 'set terminal' と打ってください。
(訳注: この日本語訳に含まれる terminal のマニュアルは、その一覧にはな い出力形式のものも含まれているかもしれませんし、逆にその一覧内の出力形 式でマニュアルがないものもあるかもしれません。)
legacy と印のついた出力形式は、最近のバージョンの gnuplot ではデフォ ルトではビルドされず、実際には使用できないかもしれません。
注意: 古い (legacy) 出力形式、元々は Adobe Illustrator 3.0+ 用。Adobe Illustrator はレベル 1 の PostScriptファイルを直接認識するので、これの 代わりに set terminal post level1 使うべきでしょう。
書式:
set terminal aifm {color|monochrome} {"<fontname>"} {<fontsize>}
書式:
set terminal aqua {<n>} {title "<wintitle>"} {size <x> <y>} {font "<fontname>{,<fontsize>}"} {linewidth <lw>}"} {{no}enhanced} {solid|dashed} {dl <dashlength>}}
<n> は描画するウィンドウの番号 (デフォルトでは 0) <wintitle> はタイトルバーに表示される名前 (デフォルトは "Figure <n>"), <x> <y> は描画サイズ (デフォルトは 846x594 pt = 11.75x8.25 インチ) です。
使用するフォントは <fontname> で指定し (デフォルトは "Times-Roman")、 フォントサイズは <fontsize> で指定します (デフォルトは 14.0 pt)。
aqua 出力形式は、拡張文字列処理モード (enhanced text mode; 以下参照:enhanced (14)) を、重ね書き以外はサポートしてます。フォントの使用はシステ ムで有効なフォントに制限されています。文字エンコーディングは、 set encoding で選択できますが、現在は iso_latin_1, iso_latin_2, cp1250 と UTF8 (default) をサポートしています。
曲線は、実線か点線 (デフォルトは実線) のいずれかで描画でき、点線の間隔は 倍率 <dashlength> (>0) で変更できます。
書式:
set terminal be {reset} {<n>}
複数のグラフ描画ウィンドウをサポートしています。set terminal be <n> は番号 n のウィンドウに出力します。n>0 の場合、その番号はウィンドウタ イトルとアイコン名に gplt <n> として付けられます。現在のウィンドウは カーソル記号の変化で区別できます (デフォルトカーソルから十字カーソルへ)。
gnuplot ドライバが別な出力ドライバに変更されても、描画ウィンドウは開 いたままになります。描画ウィンドウは、そのウィンドウにカーソルを置いて 文字 q を押すか、ウィンドウマネージャのメニューの close を選択すれば 閉じることができます。reset を実行すれば全てのウィンドウを一度に閉じ れます。それは実際にウィンドウを管理している子プロセスを終了します (も し -persist が指定されていなければ)。
描画ウィンドウは -persisit オプションが与えられていなければ、対話の 終了時に自動的に閉じられます。
描画サイズとアスペクト比は、gnuplot のウィンドウをリサイズすることで も変更できます。
線の幅と点のサイズは gnuplot の set linestyle で変更可能です。
出力ドライバ be に関しては、gnuplot は (起動時に)、コマンドライン、 または設定ファイルから、geometry や font, name などの通常の X Toolkit オプションやリソースの指定を受け付けます。それらのオプションについては X(1) マニュアルページ (やそれと同等のもの) を参照してください。
他にも be 出力形式用の多くの gnuplot のオプションがあります。これ らは gnuplot を呼ぶときにコマンドラインオプションとして指定するか、 または設定ファイル ".Xdefaults" のリソースとして指定できます。これらは 起動時に設定されるので、gnuplot 実行時には変更できません。
`-mono` | カラーディスプレイ上で強制的に白黒描画 |
`-gray` | グレイスケールまたはカラーディスプレイ上でのグレイスケール描画 |
(デフォルトではグレイスケールディスプレイは白黒描画を受け付ける) | |
`-clear` | 新しい描画を表示する前に (瞬間的に) 画面を消去 |
`-raise` | 各描画後に描画ウィンドウを最前面へ出す |
`-noraise` | 各描画後に描画ウィンドウを最前面へ出すことはしない |
`-persist` | gnuplot プログラム終了後も描画ウィンドウを残す |
例:
gnuplot*gray: on
gnuplot は描画スタイル points で描画する点のサイズの制御にも、コマンド ラインオプション (-pointsize <v>) とリソース (gnuplot*pointsize: <v>) を提供しています。値 v は点のサイズの拡大率として使われる実数値 (0 < v <= 10) で、例えば -pointsize 2 はデフォルトのサイズの 2 倍、 -pointsize 0.5 は普通のサイズの半分の点が使われます。
gnuplot*background: white | |
gnuplot*textColor: black | |
gnuplot*borderColor: black | |
gnuplot*axisColor: black | |
gnuplot*line1Color: red | |
gnuplot*line2Color: green | |
gnuplot*line3Color: blue | |
gnuplot*line4Color: magenta | |
gnuplot*line5Color: cyan | |
gnuplot*line6Color: sienna | |
gnuplot*line7Color: orange | |
gnuplot*line8Color: coral |
これらに関するコマンドラインの書式は、例えば以下の通りです。
例:
gnuplot -background coral
gnuplot*background: black | |
gnuplot*textGray: white | |
gnuplot*borderGray: gray50 | |
gnuplot*axisGray: gray50 | |
gnuplot*line1Gray: gray100 | |
gnuplot*line2Gray: gray60 | |
gnuplot*line3Gray: gray80 | |
gnuplot*line4Gray: gray40 | |
gnuplot*line5Gray: gray90 | |
gnuplot*line6Gray: gray50 | |
gnuplot*line7Gray: gray70 | |
gnuplot*line8Gray: gray30 |
gnuplot*borderWidth: 2 | |
gnuplot*axisWidth: 0 | |
gnuplot*line1Width: 0 | |
gnuplot*line2Width: 0 | |
gnuplot*line3Width: 0 | |
gnuplot*line4Width: 0 | |
gnuplot*line5Width: 0 | |
gnuplot*line6Width: 0 | |
gnuplot*line7Width: 0 | |
gnuplot*line8Width: 0 |
gnuplot は線描画で使用する点線の形式の設定用に以下のリソースを参照します。0 は実線を意味します。2 桁の 10 進数 jk (j と k は 1 から 9 までの値) は、j 個のピクセルの描画に k 個の空白のピクセルが続く パターンの繰り返しからなる点線を意味します。例えば '16' は 1 個のピク セルの後に 6 つの空白が続くパターンの点線になります。さらに、4 桁の 10 進数でより詳細なピクセルと空白の列のパターンを指定できます。例えば、 '4441' は 4 つのピクセル、4 つの空白、4 つのピクセル、1 つの空白のパタ ーンを意味します。以下のデフォルトのリソース値は、白黒ディスプレイ、あるいはカラーや白黒階調 (grayscale) ディスプレイ上の白黒描画における値 です。カラーディスプレイではそれらのデフォルトの値はほとんど 0 (実線) で、axisDashes のみがデフォルトで '16' の点線となっています。
gnuplot*borderDashes: 0 | |
gnuplot*axisDashes: 16 | |
gnuplot*line1Dashes: 0 | |
gnuplot*line2Dashes: 42 | |
gnuplot*line3Dashes: 13 | |
gnuplot*line4Dashes: 44 | |
gnuplot*line5Dashes: 15 | |
gnuplot*line6Dashes: 4441 | |
gnuplot*line7Dashes: 42 | |
gnuplot*line8Dashes: 13 |
書式:
set terminal caca {{driver | format} {default | <driver> | list}} {color | monochrome} {{no}inverted} {enhanced | noenhanced} {background <rgb color>} {title "<plot window title>"} {size <width>,<height>} {charset ascii|blocks|unicode}
オプション driver (または format) は、表示ドライバとして libcaca を選択するか、または出力ドライバを選択します。 default は、libcaca にその環境のデフォルトのディスプレイドライバを 選択させます。デフォルトのドライバは、gnuplot の起動前に環境変数 CACA_DRIVER を設定しておくことで変更できます。 set term caca driver list を使用すると、サポートする出力モードの一覧 を表示します。
オプション color と monochrome は、カラーか白黒出力を選択します。 これは、線の記号も変更することに注意してください。 デフォルトの白背景を黒背景にしたい場合は、オプション inverted を使っ てください。これは、デフォルトの線種の黒を白にも変えます。
拡張文字列処理は、オプション enhanced を使うことで有効になります。以下参照 enhanced text。
出力ウィンドウのタイトルは、libcaca ドライバがサポートしていれば、オ プション title で変更できます。
オプション size は、キャンバスのサイズを文字単位で選択します。デフォ ルトは 80 x 25 です。バックエンドがサポートしていれば、キャンバスサイズ は、現在のウィンドウ/ターミナルのサイズに自動的に合います。"x11" と "gl" ウィンドウのデフォルトのサイズは、環境変数 CACA_GEOMETRY で制御 できます。"win32" ドライバでのウィンドウの位置・サイズ情報は、アプリ ケーションメニューで制御、及び恒常的な変更が行えます。
オプション charset は、曲線、点、多角形や長方形の塗り潰し、画像の中間 色表現などで使われる文字集合を選択します。バックエンドとターミナルとフ ォントの組み合わせによっては、blocks か unicode の文字集合はサポー トしない可能性もあることに注意してください。特に Windows では、 "Lucida Console" や "Consolas" のような非ラスタフォントの使用を勧め ます。
caca 出力形式は、マウス操作をサポートしています。libcaca のいくつかの バックエンド (例えば slang や ncurses) はマウスクリックしたマウスの位置 しか更新しないことに注意してください。修飾キー (Ctrl, Alt, Shift) は、 libcaca ではサポートしていないので、利用できません。
caca 出力形式のデフォルトの encoding は utf8 です。cp437 encoding もサポートしています。
libcaca のサポートする色の数は、バックエンドにより異なります。たいて いのバックエンドは、16 色の前景色と 16 色の背景色のみをサポートしていま すが、例えば "x11" バックエンドは、Truecolor をサポートしています。
出力形式と libcaca バックエンドによっては、背景色 8 色しかサポートさ ない場合もあります。明色 (背景色の中で最も重要) は、文字を輝かせている と解釈されます。この場合、background rgb "gray" を使用してみてくだ さい。
以下の libcaca Web サイト http://caca.zoy.org/wiki/libcaca
および libcaca 環境変数に関する説明 http://caca.zoy.org/doxygen/libcaca/libcaca-env.html
も参照してみてください。
Unicode のサポートは、ドライバと出力形式依存です。 "x11" バックエンドは libcaca version 0.99.beta17 から unicode をサポ ートしていますが、libcaca < 0.99.beta20 でのバグのため、"slang" ド ライバは unicode をサポートしていません。 libcaca < 0.99.beta19 には、不正な 8 ビット列を与えると無限ループを引 き起こすというバグがあることに注意してください。
明るい背景色は点滅することがあります。
マウス操作では修飾キーはサポートしません。以下参照: term caca
拡張文字列の回転、および透明化はサポートしていません。size オプション は、オンスクリーンディスプレイでは考慮されません。
凡例 (key) の箱を正しく描くには、以下のようにしてください:
set key width 1 height 1
拡張文字列の位置合わせは、UTF-8 文字列が含まれている場合はうまくいきま せん。 Windows のコンソールウィンドウのリサイズは、libcaca のバグのため正しく 機能しません。 タイトル行の上で "X" をクリックしてターミナルウィンドウを閉じる機能は wgnuplot を終了させてしまいますので、ウィンドウを閉じるには "q" を打 ってください。
書式:
set terminal cairolatex {eps | pdf | png} {standalone | input} {blacktext | colortext | colourtext} {header <header> | noheader} {mono|color} {{no}transparent} {{no}crop} {background <rgbcolor>} {font <font>} {fontscale <scale>} {linewidth <lw>} {rounded|butt|square} {dashlength <dl>} {size <XX>{unit},<YY>{unit}} {resolution <dpi>}
cairolatex 出力形式は、epscairo 出力形式 (termnal epscairo) や pdfcairo 出力形式 (terminal pdfcairo) と同等のグラフを出力しますが、 テキスト文字列はグラフの中に入れるのではなく、LaTeX に渡します。以下で触れないオプションについては、以下参照: pdfcairo (113.45)。
eps, pdf, png は、グラフ出力の形式を選択します。latex/dvips 用に は eps を、pdflatex 用には pdf を使用してください。もしあなたのグラ フが大量の点数を持つ場合は、ファイルサイズを減らすために png を使用し てください。オプション png を使用した場合、追加オプション resolution も受け付け、結果の PNG のピクセル密度を制御できます。resolution の引 数は整数で、DPI の暗黙の単位で与えます。
blacktext は、カラーモードでもすべての文字列を黒で書くようにします。
cairolatex 出力ドライバは、文字列の位置の特別な制御方法を提供します:
(a) '{' で始まるすべての文字列は、'}' もその文字列の最後に必要ですが、
その文字列全体を LaTeX で横にも縦にもセンタリングします。
(b) '[' で始まる文字列は、その次に位置指定文字 (t,b,l,r,c のうち 2 つま
で)、']{'、対象文字列、と続き最後に '}' で閉じますが、この文字列は、
LaTeX が LR-box として処理できるものならなんでも構いません。位置合わせ
を完全に行うには、
\rule{}{} も有用でしょう。以下も参照: pslatex (113.51)。
複数行に渡るラベルを生成する場合、
\shortstack を使用してください。例:
set ylabel '[r]{\shortstack{first line \\ second line}}'
コマンド set label のオプション back は、他の出力形式とはやや異なる 方法で処理します。back を使用したラベルは、他のすべての描画要素の後ろ に印字し、front を使用したラベルは、他のすべての上に印字します。
このドライバは 2 つの異なるファイルを作成します。一つは図の eps か pdf か png 部分で、もう一つは LaTeX 部分です。その LaTeX ファイルの名前は、 コマンド set output のものを使用し、eps/pdf/png ファイルの名前は、そ の拡張子 (通常は '.tex') を '.eps'/'.pdf'/'.png' に置き換えたものを使用 します。出力ファイルを指定しなかった場合は、LaTeX 出力はしません。 multiplot モード以外では、次の plot を行う前に出力ファイルを閉じるのを忘れないでください。
この画像をあなたの LaTeX 文書に取り込むには、' \input{filename}' を使用 してください。'.eps'/'.pdf'/'.png' ファイルは、 \includegraphics{...} で取り込むので、LaTeX 文書のプリアンブルに \usepackage{graphicx} を入 れる必要があります。色付きの文字 (オプション colourtext) を使用する場 合は、プリアンブルに \usepackage{color} も入れる必要があります。
フォント選択に関する挙動は、ヘッダーモードに依存します。いずれの場合で も、与えられたフォントサイズは適切な大きさを計算するのに使われます。 standalone モードを使っていない場合は、それを読みこんだところで実際に LaTeX が使用しているフォントとフォントサイズが使われるので、フォントを 変更するには LaTeX のコマンドを使用してください。LaTeX 文書の方で 12pt のフォントサイズを使っていれば、オプションとして '", 12"' を指定して ください。フォント名は無視されます。'standalone' の場合は、与えられたフ ォントとフォントサイズを使用します。詳細は以下を参照してください。
文字列を色付けして印字するかどうかは、TeX のブール変数
\ifGPcolor と
\ifGPblacktext で制御できます。
\ifGPcolor が true で
\ifGPblacktext
が false のときのみ文字列が色付けされます。これらの変更は、生成された
TeX ファイル中で行うか、または大域的にあなたの TeX ファイルのプリアンブ
ルで、例えば以下のようにして設定できます:
\newif\ifGPblacktext \GPblacktexttrue
出力形式 cairolatex を使う場合は、コマンド set output で TeX ファイル 設定する際にファイルの拡張子 (通常は ",tex") をつけてください。 グラフのファイル名は、その拡張子を置きかえることで作られます。
standalone モードを使う場合、LaTeX ファイルに完全な LaTeX のヘッダが 追加され、グラフファイルのファイル名には "-inc" が追加されます。 standalone モードは、dvips, pdfTeX, VTeX を使う場合に正しいサイズの出 力を作る TeX ファイルを生成します。デフォルトでは input で、これは LaTeX 文書から \input コマンドで取り込まれる必要があるファイルを生成し ます。
"" や "default" 以外のフォントを与えた場合、それは LaTeX のフォント名であるとみなされます。それは ',' 区切りで最大 3 つの部分からなる、 'fontname,fontseries,fontshape' の形式です。デフォルトの fontshape や fontseries を使いたい場合は、それらは省略できます。よって、フォント名の 実際の書式は、'{fontname}{,fontseries}{,fontshape}' となります。(訳注: より gnuplot 風に言えば '{<fontname>}{,{<fontseries>}{,<fontshape>}}') 名前の各部分の指定法は、LaTeX のフォント系の慣習に従う必要があります。 フォント名 (fontname) は 3 から 4 文字の長さで、以下のようになっています: 最初の文字はフォントの供給者、次の 2 つの文字はフォント名用、オプションとして特別なフォント用に 1 文字追加できます。例えば、'j' は古いスタ イルの数字用のフォント、'x' はエキスパートフォント用です。多くのフォン ト名が以下に記述されています: http://www.tug.org/fontname/fontname.pdf
例えば、'cmr' は Computer Modern Roman を、'ptm' は Times-Roman, 'phv' は Helvetica を意味しています。font series は、グリフの太さを表し、多く の場合は、'm' が標準 ("medium")、'bx' か 'b' が太字 (bold) のフォント を意味します。font shape は、一般的には 'n' が立体 (upright)、'it' がイ タリック (italic)、'sl' が斜体 (slanted)、'sc' がスモールキャピタル (small caps) を意味します。異なる series や shapes を提供するフォントも あります。
例:
Times-Roman のボールド体 (周りの文字列と同じ形状) を使うには:
set terminal cairolatex font 'ptm,bx'
set terminal cairolatex font 'phv,bx,it'
set terminal cairolatex font ',,sl'
set terminal cairolatex font ',,sc'
この方法では、テキストフォントだけが変更されます。数式フォントも変更し たい場合は、ファイル "gnuplot.cfg" か、または以下で説明するオプションheader を使う必要があります。
standalone モードでは、フォントサイズはコマンド set terminal で指定 したフォントサイズを取ります。指定したフォントサイズを使うためにはファ イル "size<size>.clo" が LaTeX の検索パスにある必要があります。デフォ ルトでは 10pt, 11pt, 12pt をサポートしています。パッケージ "extsizes" がインストールされていれば、8pt, 9pt, 14pt, 17pt, 20pt も追加されます。
オプション header は一つの文字列を引数として取り、その文字列を生成す る LaTeX ファイルに書き出します。standalone モードでは、それはプリア ンブルの \begin{document} の直前に書きますが、input モードでは、それ はグラフに関するすべての設定を局所化するための \begingroup コマンドの の直後に書きます。
例:
T1 フォントエンコーディングを使い、テキストフォントと数式フォントを
Times-Roman に、sans-serif フォントを Helvetica に変えるには:
set terminal cairolatex standalone header \ "\\usepackage[T1]{fontenc}\n\\usepackage{mathptmx}\n\\usepackage{helvet}"
set terminal cairolatex input header "\\bfseries"
LaTeX がファイル "gnuplot.cfg" を見つけると、standalone モードでは
それをプリアンブルに取り込みます。これは、さらに設定を追加するのに使え
ます。例: 文書のフォントを、数式フォント ("mathptmx.sty" が処理) も合
わせて Times-Roman, Helvetica, Courier にするには:
\usepackage{mathptmx} \usepackage[scaled=0.92]{helvet} \usepackage{courier}
出力形式 canvas は、HTML5 の canvas 要素上に描画する javascript コマ
ンドの集合を生成します。
書式:
set terminal canvas {size <xsize>, <ysize>} {background <rgb_color>} {font {<fontname>}{,<fontsize>}} | {fsize <fontsize>} {{no}enhanced} {linewidth <lw>} {rounded | butt | square} {dashlength <dl>} {standalone {mousing} | name '<funcname>'} {jsdir 'URL/for/javascripts'} {title '<some string>'}
<xsize> と <ysize> は描画領域のピクセル単位でのサイズを設定します。 standalone モードでのデフォルトのサイズは、600x400 ピクセルです。 デフォルトのフォントサイズは 10 です。
注: ファイル canvastext.js で提供している Hershey simplex Roman フォン トのアスキー部分のフォント一つだけが利用できます。これは、ファイル canvasmath.js で置き換えることもでき、そこには UTF-8 エンコードされた Hershey simplex Greek と math symbols も含まれています。他の出力形式に 合わせて、font "name,size" の形式も使えるようになっています。今の ところ name のフォント名部分は無視されますが、そのうちにブラウザが名 前付きフォントをサポートしだすでしょう。
デフォルトの standalone モードは、HTML 5 の canvas 要素を使用してグ ラフを描画するような javascript コードを含む HTML ページを生成します。 その HTML ページは、2 つの必要な javascript ファイル 'canvastext.js'、 'gnuplot_common.js' にリンクします。点線をサポートするためにはさらに追 加ファイル 'gnuplot_dashedlines.js' が必要です。デフォルトではそれらは ローカルファイルへのリンクで、Unix 互換のシステムでは通常はそれらディ レクトリ /usr/local/share/gnuplot/<version>/js にあります。他の環境に ついては、インストールに関する注意を参照してください。この設定は、オプ ション jsdir に別のローカルディレクトリ、あるいは一般的な URL を指定 することで変更できます。グラフをリモートクライアントのマシンで見れるよ うにする場合は、通常は後者の設定が適切でしょう。
canvas 出力形式で生成される描画はすべてマウス操作可能です。キーワード mousing を追加すると、standalone モードのグラフの下にマウストラッ キングボックスをつけます。これは、canvastext.js が置かれているのと同 じローカルディレクトリ、または URL 内の、'gnuplot_mouse.js' という javascript ファイルへのリンクと 'gnuplot_mouse.css' というマウスボック スに関するスタイルシートも追加します。
オプション name は、javascript のみを含むファイルを一つ生成します。
それが含む javascript 関数と、それが描画する canvas 要素の id の両方は、
以下の文字列パラメータから取られます。例えば以下のコマンド
set term canvas name 'fishplot' set output 'fishplot.js'
<html> <head> <script src="canvastext.js"></script> <script src="gnuplot_common.js"></script> </head> <body onload="fishplot();"> <script src="fishplot.js"></script> <canvas id="fishplot" width=600 height=400> <div id="err_msg">No support for HTML 5 canvas element</div> </canvas> </body> </html>
このキャンバス上に描かれるそれぞれのグラフの名前は、fishplot_plot_1, fishplot_plot_2 等となります。外部の javascript ルーチンでそれらを参照 することもできます。例: gnuplot.toggle_visibility("fishplot_plot_2")
書式:
set terminal cgm {color | monochrome} {solid | dashed} {{no}rotate} {<mode>} {width <plot_width>} {linewidth <line_width>} {font "<fontname>,<fontsize>"} {background <rgb_color>} [deprecated] {<color0> <color1> <color2> ...}
solid は全ての曲線を実線で描き、どんな点線パターンも塗りつぶします; <mode> は landscape, portrait, default のいずれか; <plot_width> はポイント単位でのグラフの仮定されている幅; <line_width> はポイント単位での線幅 (デフォルトは 1); <fontname> はフォントの名前 (以下のフォント一覧参照); そして <fontsize> はポイント単位でのフォントのサイズ (デフォルトは 12) です。
最初の 6 つのオプションはどの順番で指定しても構いません。default を 選択すると、全てのオプションをそのデフォルトの値にします。
線の色を set term コマンドで設定する仕組みは、今は非推奨です。代わり に、背景色は分離されたキーワード background で、線の色は set linetype で設定すべきでしょう。この非推奨の仕組みでは色は 'xrrggbb' の形式で受け つけますが、x は文字 'x' そのもの、'rrggbb' は 16 進数での赤、緑、青の 成分です。最初の色を背景色として使い、その後に続く色指定を順次線の色と として割り当てていました。
例:
set terminal cgm landscape color rotate dashed width 432 \ linewidth 1 'Helvetica Bold' 12 # デフォルト set terminal cgm linewidth 2 14 # やや広い線とやや大きいフォント set terminal cgm portrait "Times Italic" 12 set terminal cgm color solid # 面倒な点線など消えてしまえ !
CGM fonts | ||
Helvetica | Hershey/Cartographic_Roman | |
Helvetica Bold | Hershey/Cartographic_Greek | |
Helvetica Oblique | Hershey/Simplex_Roman | |
Helvetica Bold Oblique | Hershey/Simplex_Greek | |
Times Roman | Hershey/Simplex_Script | |
Times Bold | Hershey/Complex_Roman | |
Times Italic | Hershey/Complex_Greek | |
Times Bold Italic | Hershey/Complex_Italic | |
Courier | Hershey/Complex_Cyrillic | |
Courier Bold | Hershey/Duplex_Roman | |
Courier Oblique | Hershey/Triplex_Roman | |
Courier Bold Oblique | Hershey/Triplex_Italic | |
Symbol | Hershey/Gothic_German | |
ZapfDingbats | Hershey/Gothic_English | |
Script | Hershey/Gothic_Italian | |
15 | Hershey/Symbol_Set_1 | |
Hershey/Symbol_Set_2 | ||
Hershey/Symbol_Math |
これらのフォントの最初の 13 個は WebCGM で要求されているものです。
Microsoft Office の CGM import フィルタはその 13 個の標準フォントと
'ZapfDingbats' と 'Script' をサポートしています。しかし、そのスクリプ
ト (script) フォントは '15' という名前でしかアクセスできません。
Microsoft の import フィルタの font の置き換えに関するより詳しい情報に
ついては、
C:\Program Files\Microsoft Office\Office\Cgmimp32.hlp
C:\Program Files\Common Files\Microsoft Shared\Grphflt\Cgmimp32.cfg
set term コマンドでデフォルトのフォントリストにないフォント名を指定 することも可能です。その場合、その指定したフォントが最初に現われる新 しいフォントリストが作られます。そのフォント名に関して、スペル、単語 の先頭の大文字化やどこにスペースが入るかなどが、作られる CGM ファイル を読むアプリケーションにとって適切なものであるかをちゃんと確認する必要 があります。(gnuplot と任意の MIL-D-28003A 準拠アプリケーションは、フ ォント名の大文字小文字の違いは無視します。) 新しいフォントをいくつも追 加したい場合は、set term コマンドを繰り返し使用してください。
例:
set terminal cgm 'Old English' set terminal cgm 'Tengwar' set terminal cgm 'Arabic' set output 'myfile.cgm' plot ... set output
set label コマンドでは新しいフォントを導入することはできません。
例:
set terminal cgm width 432 # デフォルト set terminal cgm width 6*72 # 上と同じ値 set terminal cgm width 10/2.54*72 # 10 cm の幅
ConTeXt + gnuplot モジュールの平均的なユーザには、このページを読むより も、Using ConTeXt を参照するか、ConTeXt の gnuplot モジュールのマニュ アルを参照することを推奨します。
出力形式 context は、以下のオプションをサポートしています:
書式:
set term context {default} {defaultsize | size <scale> | size <xsize>{in|cm}, <ysize>{in|cm}} {input | standalone} {timestamp | notimestamp} {noheader | header "<header>"} {color | colour | monochrome} {rounded | mitered | beveled} {round | butt | squared} {dashed | solid} {dashlength | dl <dl>} {linewidth | lw <lw>} {fontscale <fontscale>} {mppoints | texpoints} {inlineimages | externalimages} {defaultfont | font "{<fontname>}{,<fontsize>}"}
standalone でないグラフ (input) では、オプションはグラフサイズを選択 する size、すべてのラベルを倍率 <fontscale> で伸縮する fontscasle、 および font サイズのみ意味を持ち、他のオプションは警告なく無視されるの みで、それらはそのグラフィックを読み込む .tex ファイルの方で設定してく ださい。元の文書のフォントが 12pt ではない場合は、適切なフォントサイズ を指定することを強く推奨します。それにより、gnuplot がラベル用にどれく らいの大きさのスペースを確保すればいいかを知ることができまず。
default は、すべてのオプションをデフォルトの値にリセットします。
defaultsize は、描画サイズを 5in x 3in に設定します。 size <scale> は、描画サイズをデフォルトサイズの <scale> 倍にしますが 引数を ',' 区切りで 2 つ与えた場合は、最初のものは横のサイズを、2 つ目 のものは垂直サイズを設定します。それらのサイズには、単位としてインチ ('in'), センチ ('cm') が使えますが、省略した場合はデフォルト値に対する 比であるとみなします。
input (デフォルト) は、他の ConTeXt 文書から取り込めるグラフを生成し ます。 standalone は、それに数行追加し、それ自身がそのままコンパイルできるよ うにします。その場合、header オプションが必要になるかもしれません。
standalone のグラフに設定/定義/マクロを追加したい場合は header を使用 してください。デフォルトは noheader です。
notimestamp は、コメント部分の日時の出力を抑制します (バージョン管理 システムを使っている場合、日付だけ違うものを新しいバージョンとして登録 したくはないでしょう)。
color (デフォルト) は、カラー描画を生成しますが、monochrome は一切 special を入れません。白黒プリンタ用には、その挙動をこんな風に変えた方 がもっと良くなるというアイデアを持っている人は、是非提案してください。
rounded (デフォルト) と mitered, beveled は、線分の接合部の形状を 制御し、round (default) と butt, squared は、線分の端の形状を制御 します。詳細は、PostScript か PDF のリファレンスマニュアルを参照してく ださい。激しく変化する関数と太い線用には、線分の接合部での尖った角を避 けるようにrounded と round を使うといいでしょう。 (これに関する一般的な仕組みは、このオプションを各描画スタイル毎に別々に 指定できるよう gnuplot がサポートすべきだと思います。)
dashed (デフォルト) は、異なる線種に異なる点線パターンを使い、solid は、すべての描画に実線を使用します。
dashlength (または dl) は、点線の線分の長さを <dl> 倍します。 linewidth (または lw) は、すべての線幅を <lw> 倍します。 (lw 1 は 0.5bp を意味し、これは Metapost の描画のデフォルトの線幅です) fontscale は、テキストラベルをデフォルトの文書フォントの <fontscale> 倍に拡大します。
mppoints は、Metapost で描画された定義済みの点の形状を使用します。
texpoints は、簡単に設定できる記号セットを使用します。これは、以下のようにして ConTeXt で定義できます:
\defineconversion[my own points][+,{\ss x},\mathematics{\circ}] \setupGNUPLOTterminal[context][points=tex,pointset=my own points]
inlineimages は、バイナリ画像を文字列として書き出しますが、これは ConTeXt MKIV のみで機能します。 externalimages は、PNG ファイルを外部出力し、これは ConTeXt MKII で機 能します。これが動作するためには、gnuplot が PNG 画像出力をサポートして いる必要があります。
standalone のグラフでは、font でフォント名とサイズを設定できます。
standalone でないモード (input) では、テキストラベルに十分なスペース
を割り当てるためにフォントサイズのみが意味を持ちます
コマンド
set term context font "myfont,ss,10"
\setupbodyfont[myfont,ss,10pt]
set label ... font "myfont,12"
適当なタイプスクリプトフォント (とヘッダー) を用意するのは自分で行って
さもなくばフォントの切り替えは効果を持ちません。ConTeXt MKII (pdfTeX)
の標準フォントは、以下のようにして使えます:
set terminal context standalone header '\usetypescript[iwona][ec]' \ font "iwona,ss,11"
例:
set terminal context size 10cm, 5cm # 10cm, 5cm set terminal context size 4in, 3in # 4in, 3in
set terminal context standalone header '\enableregime[utf-8]'
と、最新の ConTeXt が必要です。 そこから gnuplot を呼び出すには、write18 を可能にする必要があります。 ほとんどの TeX 配付物では、これは texmf.cnf で shell_escape=t とするこ とで設定できます。
この出力形式とより詳しいヘルプと例に関しては以下も参照してください: http://wiki.contextgarden.net/Gnuplot
\usemodule[gnuplot] \starttext \title{How to draw nice plots with {\sc gnuplot}?} \startGNUPLOTscript[sin] set format y "%.1f" plot sin(x) t '$\sin(x)$' \stopGNUPLOTscript \useGNUPLOTgraphic[sin] \stoptext
書式:
set terminal corel {monochrome | color} {"<font>" {<fontsize>}} {<xsize> <ysize> {<linewidth> }}
ここで、フォントサイズ (fontsize) と線幅 (linewidth) はポイント単 位、横幅 (xsize) と縦幅 (ysize) はインチ単位です。デフォルトの値は それぞれ、monochrome, "SwitzerlandLight", 22, 8.2, 10, 1.2 です。
svg 出力形式のヘルプを読んでください。
書式:
set terminal dumb {size <xchars>,<ychars>} {[no]feed} {aspect <htic>{,<vtic>}} {[no]enh