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

Using

ドキュメント内 gnuplot documentation (ページ 77-80)

65.2 データ (data)

65.2.16 Using

最もよく使われるデータファイルの修飾子はusingです。

書式:

plot ’file’ using {<entry> {:<entry> {:<entry> ...}}} {’format’}

78 gnuplot 4.4 65 PLOT

もし、フォーマット(format)が指定されれば、Cのライブラリ関数’scanf’を使ってデータファイルの各 行をそのフォーマット文字列に従って読み込みます。そうでなければ、行は列に分割されて読み込まれま すが、デフォルトではホワイトスペース(スペースやタブ)で列の分離が行われていると見なします。以下 参照: datafile separator (p. 101)。

各 <entry> は、適切な入力の一つのフィールドから値を選択するための単な

る列の番号か、またはカッコで囲まれた数式の指定、または何も指定しないかのいずれかです。

そのエントリがカッコで囲まれた数式の場合、N 列目の値を指定するのに関数column(N)を使用できま す。つまり、column(1)は読み込まれた最初の項目を参照し、column(2) は次の項目、といった具合です。

column(1), column(2), ... の略記として、特別な記号 $1, $2, ... を使用できます。関数valid(N) で、N 番目の列が有効な数字であるかどうかテストできます。

入力データファイルの1...Nという実際の列に加えて、gnuplotは管理情報を持ついくつかの"疑似列"を 提供します。例えば、$0またはcolumn(0)は、データ集合内のそのデータ行の行番号を返します。以下参 照:pseudocolumns (p. 79)。

<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 (p. 137), fit (p. 56)。

’scanf’関数では色々なデータ形式の数値入力が使えますが、gnuplotは全ての入力データを倍精度浮動小

数とみなしますから、gnuplotでは%lfが本質的に唯一の数値入力指定、ということになります。書式文 字列には、少なくとも一つ、そして7つ以下の、そのような入力指定子を入れる必要があります。’scanf’

は数と数の間にホワイトスペース、すなわち空白、タブ("\t")、改行("\n")、または改ページ("\f")が あると期待します。それ以外の入力は明示的にスキップされるべきです。

"\t","\n","\f"を使うときはシングルクォートよりむしろダブルクォートを使うべきであることに注意 してください。

65.2.16.1 Using の例 (using examples) 次の例は、1 番目のデータに対する2 番目と 3番目の和 の値をplotします。書式文字列は、各列データがスペース区切りでなく、カンマ区切りであることを指示 していますが、同じことがset datafile separator ","を指定することでも可能です。

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+(複雑な式) の様なことができます。そして、その数式は、カッコでスタートしていなければ数式の値が一度評価され、

カッコでスタートしていれば個々のデータ点を読み込むためにその値が一度評価される、という点が重要 です。

65 PLOT gnuplot 4.4 79

時系列フォーマットデータを使っている場合、その時間のデータは複数の列に渡らせることができます。そ の場合、他のデータの開始位置を計算するとき、時間のデータに空白が含まれていることに注意してくだ さい。例えば、データ行の最初の要素がスペースが埋め込まれた時間データであるならば、yの値は3 列 目の値として指定されるべきです。

plot ’file’plot ’file’ using 1:2、そしてplot ’file’ using ($1):($2)には微妙な違いがあることに注 意してください。1) fileが1 列と2 列のデータを持つ行をそれぞれ含んでいるとすると、データが1 列 のみの行に対しては、最初のものはxの値を作り出し、2番目のものはその行は無視し、3 番目のものは それを未定義の値として保存します(折れ線でplotしている場合 (plot with lines)、その未定義の点を通 過する線を結ばないように)。2) 1列目に文字列を含んでいるような行がある場合、最初のものはエラーと してplotを中止しますが、2 番目と3 番目のものはその不要な行を読みとばします。

実際、最初に単に

plot ’file’ using 1:2

と指定することで、大抵の場合どんなにゴミのデータを含む行を持つファイルをもplotすることが可能に なります。しかし、どうしてもデータファイルに文字列を残しておきたいならば、そのテキスト行の第一 列にコメント文字(#)を置く方がより安全でしょう。

弱々しい using のデモ

65.2.16.2 疑似列 (pseudocolumns) plot文のusing 項目内の式では、入力ファイルに含まれる実 際のデータ値に加えて管理情報も参照でき、これらは"疑似列"(pseudocolumns)に含まれています。

column(0) データ集合内での各点の順番。順番は 0 から始まり、2

行のブランク行でリセットされます。略記 $0 も使用可。

column(-1) この番号は 0 から始まり、1 行のブランク行でリセット

されます。これは、行列、または格子状データ内のデータ 行に対応します。

column(-2) 複数のデータ集合を持つファイル内の、現在のデータ集合

の index 番号。以下参照: ‘index‘。

65.2.16.3 Xticlabels 軸の刻みの見出し (ticlabel) は文字列関数によって作ることもでき、それは 通常は引数としてデータ列から取得します。最も単純な形式は、データ列自身の文字列としての利用で、

xticlabels(N)は xticlabels(stringcolumn(N))の省略形として使えます。以下の例は3列目の要素を x軸 の刻みの見出しとして使用します。

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"かのいずれかとなります。

65.2.16.4 X2ticlabels 以下参照: plot using xticlabels (p. 79)。

80 gnuplot 4.4 65 PLOT

65.2.16.5 Yticlabels 以下参照: plot using xticlabels (p. 79)。

65.2.16.6 Y2ticlabels 以下参照: plot using xticlabels (p. 79)。

65.2.16.7 Zticlabels 以下参照: plot using xticlabels (p. 79)。

ドキュメント内 gnuplot documentation (ページ 77-80)

関連したドキュメント