• 検索結果がありません。

Errorlines

ドキュメント内 gnuplot documentation (ページ 89-92)

誤差線(errorbar)を伴う線描画は、2次元データファイルの描画でサポートされていて、それは1個から4個

の追加の(または usingで指定する)列データを与えることで行なわれます。これらの追加される値は、様々

なerrorlineスタイルのそれぞれで異なった形で使われます。

デフォルトの状態では、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 barsが指定されていない場合、その両端で垂直に交わる線分が付きます(詳細は、以下参照:

set bars (p.102))。

自動縮尺(autoscaling)が ONの場合、描画範囲は誤差線が入るように調整されます。

更なる情報については、以下参照: plot using (p. 86), plot with (p. 93),set style (p. 148)。

関数描画 (functions)

コマンドplot,splotでは、ファイルから読み込んだデータの描画だけでなく、組み込み関数やユーザ定義関

数を描画することもできます。関数の値は、独立な軸の通常の範囲に渡ってデータサンプルを取ることで評価 します。以下参照: set samples (p. 147),set isosamples (p. 120)。

例:

approx(ang) = ang - ang**3 / (3*2)

plot sin(x) title "sin(x)", approx(x) title "approximation"

関数のデフォルトの描画スタイルを設定する方法については、以下参照:set style function (p.151)。組み 込み関数の情報については、以下参照:expressions functions (p.26)。自前で関数を定義する方法について は、以下参照:user-defined (p. 31)。

媒介変数モード描画 (parametric)

媒介変数モード(set parametric)では、plotでは2つの数式の組を、splot では3つの数式の組を与える 必要があります。

例:

plot sin(t),t**2

splot cos(u)*cos(v),cos(u)*sin(v),sin(u)

データファイルは前と同じように描画されます。ただし、データファイルが描画のために与えられる前に、任 意の媒介変数関数が先に完全に指定された場合を除いてです。言い換えると、xの媒介変数関数(上の例では sin(t))とyの媒介変数関数(上の例ではt**2)との間に、他の修飾子やデータ関数をはさみこんではいけま せん。そのようなことをすると、構文エラーになり、媒介変数関数が完全には指定されていない、と表示され ます。

withtitleのような他の修飾子は、媒介変数関数の指定が完了した後に指定しなければいけません。

plot sin(t),t**2 title ’Parametric example’ with linespoints 以下も参照

媒介変数モードのデモ。

範囲 (ranges)

plotコマンドの最初に置くオプションの軸の範囲(range)は、表示するグラフの範囲を指定します。その範囲 は、それ以前のどのset rangeによる範囲指定よりも優先して扱います。

書式:

[{<dummy-var>=}{{<min>}:{<max>}}]

[{{<min>}:{<max>}}]

最初の範囲指定は独立変数の範囲(xrangeまたはパラメトリックモードでは trange)で、2 番目のものは従 属変数の範囲 yrange(パラメトリックモードではxrange)となります。<dummy-var>には独立変数の新

しい別名を指定します(デフォルトの変数名はset dummyで変更できます)。<min>,<max>には定数式、

あるいは*を書くことができます。

パラメトリックモードでなければ、与えられるべき範囲指定はxrange,yrangeの順になります。

パラメトリックモードでは、plotコマンドに対してはその順序はtrange,xrange,yrangeになります。以 下のplotコマンドは、trangeを[-pi:pi],xrangeを[-1.3:1.3],yrangeを [-1:1]に設定する例です。

plot [-pi:pi] [-1.3:1.3] [-1:1] sin(t),t**2

x2の範囲とy2の範囲はここでは指定できないことに注意してください。それにはset x2rangeset y2range が使われます。

範囲は適切なモードに対して、上に示した順序で解釈されます。必要な範囲指定が一度全て指定されると、再 び指定し直すことはありませんが、必要ない部分を全く指定しないようにはできません。その代わり、そこに 空の範囲指定[]を置きます。

*は、min (最小値)やmax (最大値)に自動範囲指定(autoscale) の機能を使うことを可能にします。以下も 参照: set autoscale (p. 101)。

plotsplotのコマンド行で指定された範囲はそのグラフにのみ影響を及ぼします。よって、その後のグラ

フのデフォルトの範囲を変更するには、set xrangeや set yrangeを使用してください。

時間データに対しては、範囲はクォートで囲んで指定する必要があります(データファイルに現われる時間デー タと同じ形式の)。gnuplotはその範囲を読みこむのに時間書式文字列(timefmt)を使用します。詳しくは以 下参照:set timefmt (p. 157)。

例:

以下は現在の範囲を使用します:

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:] exp(sin(x))

以下はxの範囲を時系列データとして指定しています:

set timefmt "%d/%m/%y %H:%M"

plot ["1/6/93 12:00":"5/6/93 12:00"] ’timedata.dat’

繰り返し (iteration)

多くの同等のファイルや関数を同時に描画する場合は、それぞれのplotコマンドの繰り返し(iteration)でそ れを行うのが便利です。

書式:

plot for [<variable> = <start> : <end> {:<increment>}]

plot for [<variable> in "string of words"]

繰り返しの適用範囲(scope)は、次のコンマ(,)かコマンドの終わり、のいずれか先に現れたところまでです。

繰り返しは入れ子(nest)にすることはできません。

繰り返し文がコンマまでなので、以下は一つの曲線sin(3x)を描画します。

plot for [i=1:3] j=i, sin(j*x)

jの後にコンマがないので、以下は3 つの曲線を描画します。

plot for [i=1:3] j=i 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

この例は、整数の繰り返し変数ではなく、文字列の繰り返し変数形式を用いていること以外は前の例と全く同 じです。

ドキュメント内 gnuplot documentation (ページ 89-92)