データの加工




概要


描画は隣接平均, 数式変換などデータの加工を行った後に行われます。 グラフを作成する際その処理手順を意識することが重要な場合があります。 以下にデータの流れを示します。

データ

数式変換

マスクされたデータを削除

移動されたデータを移動

隣接平均

[曲線の補間係数, 最小二乗フィットの係数を求める]

出力(グラフ描画)

ロググラフを作成する場合, 曲線の補間はデータを対数変換した後に行われるので通常の線形グラフとロググラフでは結果が異なります。 最小二乗法に関してはロググラフでも通常の線形グラフと同じ係数を求めます。



数式変換で使用できるコメント

#から行末までをコメントと見なします。

数式変換で使用できる数値リテラル


1
1.0
1.0E3

浮動小数点

0xffff

16進整数

0b1011

2進整数

0o377

8進整数

数字が連続している部分は見やすくするため任意の箇所に空白を入れることが出来ます (例 123 456.789 E8) 。




数式変換で使用できる定数


PI円周率
E自然対数の底
EULERオイラーの定数
NAN欠損データ エラー表示
UNDEF欠損データ エラー非表示
CONT欠損データ (データ線は結合)
BREAK欠損データ (データ線は分断)
NUMデータの個数
MINX(X) column の生データの最小値
MAXX(X) column の生データの最大値
MINY(Y) column の生データの最小値
MAXY(Y) column の生データの最大値
SUMX(X) column の生データの和
SUMY(Y) column の生データの和
SUMXX(X) column の生データの二乗和
SUMYY(Y) column の生データの二乗和
SUMXY(X) column, (Y) column の生データの積和
AVX(X) column の生データの平均
AVY(Y) column の生データの平均
STDEVPX(X) column の生データの標準偏差 (SGX も利用可)
STDEVPY(Y) column の生データの標準偏差 (SGY も利用可)
STDEVX(X) column の生データの不偏標準偏差
STDEVY(Y) column の生データの不偏標準偏差
FIRSTdiagonal, errorbar など一行のデータで2回の変換が行われる場合、1回目の呼出しで真(=1)、2回目の呼出しで偽(=0)
MASKマスクに設定された行数
MOVE移動に設定された行数
COLX「X カラム」に指定された数
COLY「Y カラム」に指定された数
AXISX「X 軸」に指定された axis オブジェクトの ID
AXISY「Y 軸」に指定された axis オブジェクトの ID
HSKIP「先頭スキップ行」に指定された行数
RSTEP「読込ステップ行」に指定された行数
FLINE「最終行」に指定された行数
DATA_OBJdata オブジェクトのオブジェクト識別番号
PATH_OBJpath オブジェクトのオブジェクト識別番号
RECT_OBJrectangle オブジェクトのオブジェクト識別番号
ARC_OBJarc オブジェクトのオブジェクト識別番号
MARK_OBJmark オブジェクトのオブジェクト識別番号
TEXT_OBJtext オブジェクトのオブジェクト識別番号
%Dデータの番号
%Nデータオブジェクトのインスタンス数
TRUE代表的な真の値
FALSE偽の値
FILL_RULE_NONEポリゴンを塗りつぶさない。draw_polygon() 関数で利用する。
FILL_RULE_EVEN_ODDポリゴンを偶奇則で塗りつぶす。draw_polygon() 関数で利用する。
FILL_RULE_WINDINGポリゴンをワインディング則で塗りつぶす。draw_polygon() 関数で利用する。



定数定義


const x:=exp x は英字または _ で始まり英数字または _ から構成される文字列、exp は任意の数式。
  • 既存の定数は上書きできません。
  • 数式 exp は数式変換実行時ではなく構文解析時に評価されます。
  • 数式 exp 中ではパラメータ、関数 sum(), dif() は使用できません。



数式変換で使用できるパラメータ


%0データを読み込んだ順番に1から番号をつけたときの値
%1〜%999同一行中 1〜999 カラムの生データ
%Fxx1〜%Fxx999データ xx の同じ行の 1〜999 カラムの生データ



数式変換で使用できる変数

変数は X, Y の変換式で独立です。


PI, E, X, Y 以外の、英字で始まり英数字または _ から構成される2文字以下の文字列、または _ で始まり英数字または _ から構成される文字列。ユーザが自由に使用できます (代入されていない変数は 0 に初期化されています) 。
X(X)column の生のデータ (変数への代入は可能ですが、データ読込時に生データで上書きされます)
Y(Y)column の生のデータ (変数への代入は可能ですが、データ読込時に生データで上書きされます)



配列


COL[n] COL[0] はパラメータ %0 とおなじ、それ以外は同一行中 n カラムの生 データ (999 カラム以降も参照可能)。
X[n] X は英字または _ で始まり英数字または _ から構成される文字列、n は任意の数式。
未代入の配列要素は 0 に初期化されています。
配列の添字は整数に丸められます。
配列の添字の上限は 65535 です。
配列の添字に負の数値を使用した場合、配列の末尾からのインデックスとみなします。



ユーザ定義関数


def func(a,b,...) {exp} 仮引数 a, b, ... の関数 func を定義します。
配列を渡すときは仮引数を @a の様に指定してください。配列は参照渡しとなります。
exp には任意の数式を指定できますが、以下の制限があります。
  • パラメータ (%0, %F0001 など) は使用できません。
  • 関数 dif(), sum() は使用できません。
  • 関数定義はネストできません。



数式変換で使用できる演算子


-+符号
+ - * /四則演算
\浮動小数点剰余
^ベキ乗
!階乗(引数は 169 以下の正の整数)
:=代入
-=自己代入
+=自己代入
*=自己代入
/=自己代入
\=自己代入
^=自己代入
==比較
!=比較
<=比較
>=比較
<比較
>比較
&&論理積
||論理和
exp1 && exp2 と AND(exp1, exp2) の違い。

exp1 && exp2 は exp1 が偽の時 exp2 を評価しません。また exp1 が真の場合、exp2 を評価した値を返します。

exp1 || exp2 と OR(exp1, exp2) の違い。

exp1 || exp2 は exp1 が真の時 exp2 を評価しません。また exp1 が真の場合は exp1、exp1 が偽の場合は exp2 を評価した値を返します。

;

; は式の終端を表します(省略可能)。; の後に別の式を後に続けることができます。

括弧 ()

括弧 () の数に制限はありません。




数式変換で使用できる関数

変換関数

ABS(x)絶対値
SIGN(x)正負の符号 (x < 0 で -1、x >= 0 で 1)
INT(x)0に向かって切捨てた整数部
GAUSS(x)ガウスの記号[ ] ([n]はnを越えない最大の整数)
FRAC(x)小数部
ROUND(x)四捨五入した整数部
MIN(a,b,c,...)引数のうちもっとも小さな値
MAX(a,b,c,...)引数のうちもっとも大きな値
SUMSQ(a,b,c,...)引数の自乗和

初等関数

SQR(x)二乗
SQRT(x)平方根
EXP(x)指数(x≦690)
LN(x)自然対数
LOG(x)常用対数
SIN(x)サイン
COS(x)コサイン
TAN(x)タンジェント
ASIN(x)逆サイン
ACOS(x)逆コサイン
ATAN(x)逆タンジェント
SINH(x)ハイパボリックサイン
COSH(x)ハイパボリックコサイン
TANH(x)ハイパボリックタンジェント
ASINH(x)逆ハイパボリックサイン
ACOSH(x)逆ハイパボリックコサイン
ATANH(x)逆ハイパボリックタンジェント
FMOD(x, y)x を y で割った浮動小数点剰余
CHOOSE(n,m)the combinatorial factor n choose m: n!/(m!(n-m)!)

特殊関数

RAND(x)0≦RAND(x)<x (x>0のとき)の乱数
SRAND(x)RAND() 関数で作られる疑似乱数系列の新しい種を設定する。
THETA(x)階段関数(x≧0 のとき 1, それ以外は 0 )
DELTA(x)クロネッカーのδ(x=0 のとき 1, それ以外は 0)
GAMMA(x)ガンマ関数 Γ(x)
ICGAM(m,x)不完全ガンマ関数 Γ(μ,x)
ERF(x)誤差関数 Erf(x)
ERFC(x)相補誤差関数 Erfc(x)
QINV(x)誤差関数 Erfc(x) の逆関数
EI(x)積分指数関数 Ei(x)
BETA(p,q)ベータ関数 B(p,q)
ICBETA(a,b,x)不完全ベータ関数 I(a,b,x) (0 <= x <= 1)
JN(n,x)第1種n次ベッセル関数
YN(n,x)第2種n次ベッセル関数
IN(n,x)第1種n次変形ベッセル関数
KN(n,x)第2種n次変形ベッセル関数
JL(l,x)第1種l次球ベッセル関数
YL(l,x)第2種l次球ベッセル関数
JNU(nu,x)第1種nu次ベッセル関数 (nu は正の実数)
YNU(nu,x)第2種nu次ベッセル関数 (nu は正の実数)
INU(nu,x)第1種nu次変形ベッセル関数 (nu は正の実数)
KNU(nu,x)第2種nu次変形ベッセル関数 (nu は正の実数)
PN(n,x)ルジャンドル多項式
LGN(n,a,x)ラゲール倍多項式
HN(n,x)エルミート多項式
TN(n,x)チェビシフ多項式
ZETA(x)リーマンゼータ関数 ζ(x)
ZETA_INT(x)リーマンゼータ関数 ζ(x) (x は整数)
ZETAM1(x)リーマンゼータ関数 ζ(x) - 1
ZETAM1_INT(x)リーマンゼータ関数 ζ(x) - 1 (x は整数)

日付時刻関数


MJD(year,month,day,hour,min,sec)修正ユリウス日(year, month, day はグレゴリオ暦、hour,min,sec は UTC 時刻、うるう秒は考慮されない)
UNIX2MJD(time)修正ユリウス日(time は 1970年1月1日00:00:00 UTC からの経過秒数、うるう秒は考慮されない)
MJD2UNIX(mjd)修正ユリウス日 mjd の1970年1月1日00:00:00 UTC からの経過秒数(うるう秒は考慮されない)
MJD2YEAR(mjd)修正ユリウス日に対応するグレゴリオ暦の年
MJD2MONTH(mjd)修正ユリウス日に対応するグレゴリオ暦の月
MJD2DAY(mjd)修正ユリウス日に対応するグレゴリオ暦の日
MJD2WDAY(mjd)修正ユリウス日に対応するグレゴリオ暦の曜日 (1:月曜日 から 7:日曜日)
MJD2YDAY(mjd)修正ユリウス日に対応するグレゴリオ暦の 1 月 1 日からの通算日数 (1 から 366)
TIME()紀元 (1970年1月1日00:00:00 UTC) からの経過時間を秒単位で返す。

論理関数

EQ(x,y,prec)x=y のとき真(=1)。prec で比較の桁数を指定できる (prec == 0 は完全一致) 。
NEQ(x,y,prec)x≠y のとき真(=1)。prec で比較の桁数を指定できる (prec == 0 は完全一致) 。
GE(x,y,prec)x≧y のとき真(=1)。prec で比較の桁数を指定できる (prec == 0 は桁数指定なし) 。
GT(x,y,prec)x>y のとき真(=1)。prec で比較の桁数を指定できる (prec == 0 は桁数指定なし) 。
LE(x,y,prec)x≦y のとき真(=1)。prec で比較の桁数を指定できる (prec == 0 は桁数指定なし) 。
LT(x,y,prec)x<y のとき真(=1)。prec で比較の桁数を指定できる (prec == 0 は桁数指定なし) 。
NOT(x)x=0 のとき真(=1)
OR(x,y)(x≠0) or (y≠0) のとき真(=1)
AND(x,y)(x≠0) and (y≠0) のとき真(=1)
XOR(x,y)(x≠0) xor (y≠0) のとき真(=1)

配列操作関数

ARRAY(a, v1, v2, ...)配列 a を残りの引数で初期化する。配列の要素数を返す。
SIZE(a)配列 a の要素数
SORT(a)配列 a を整列する
RSORT(a)配列 a を逆順に整列する
POP(a)配列 a から末尾の要素を取り除いてそれを返す
PUSH(a,x)配列 a の末尾に x を追加する (戻り値は x)
SHIFT(a)配列 a の先頭の要素を取り除いてそれを返す。残りの要素はひとつずつ前に詰められる
UNSHIFT(a,x)配列 a の先頭に x を挿入する (戻り値は x)
ARRAY_SUM(a)配列 a の要素の和を返す
ARRAY_SUMSQ(a)配列 a の要素の自乗和を返す
ARRAY_AVERAGE(a)配列 a の要素の平均を返す
ARRAY_STDEVP(a)配列 a の要素の標準偏差を返す
ARRAY_STDEV(a)配列 a の要素の不偏標準偏差を返す
ARRAY_MAX(a)配列 a に含まれる最大の値を返す
ARRAY_MIN(a)配列 a に含まれる最小の値を返す
ARRAY_CLEAR(a)配列 a の配列の要素数を 0 にする
ARRAY_COMPACT(a)配列 a の配列の要素から通常の数値以外を取り除き、取り除いた後の要素数を返す

メモリー操作関数

メモリーは全ての数式変換で共有されます。

M(i,x)引数を第iメモリーに代入する(i=0〜65535)、i が負のときは末尾からのインデックス (戻り値は x)
RM(i)現在の第iメモリーの値(i=0〜65535)、i が負のときは末尾からのインデックス
CM(x,n)先頭からn個のメモリーを x で初期化する、n が 0 のときはメモリー全体、n が負のときは末尾から n 個のメモリーを x で初期化する (戻り値は x)
AM(a)配列 a の内容をメモリーにコピーする (戻り値はコピーした要素数)

図形描画関数

図形を描画します。

DRAW_RECT(x, y, w, h, stroke, fill) (x, y) と (x + w, y + h) を対角の頂点とする矩形を描画します。stroke, fill が 0 の場合はそれぞれ輪郭、塗りつぶしを描画しません。
DRAW_ARC(x, y, rx, ry, start, stop, pieslice, stroke, fill, close) (x, y) を中心とし X 方向半径 rx, Y 方向半径 ry の円弧を描画しま す。start, stop で開始角、円弧角を指定します。stroke, fill が 0 の場合はそれぞれ輪郭、塗りつぶしを描画しません。pieslice が 0 以 外の場合は扇形を描画します。close が 0 以外の場合は輪郭を閉じま す。
DRAW_MARK(x, y, size) (x, y) にマークを描画します。size でマークのサイズを指定できます。 size が 0 のときはファイルオブジェクトのサイズ指定が使われます。
DRAW_LINE(x1, y1, x2, y2) (x1, y1) から (x2, y2) に直線を描画します。
DRAW_POLYLINE(ax, ay) 座標 (ax[0], ay[0]), (ax[1], ay[1]), ... を直線で結びます。
DRAW_POLYGON(ax, ay, stroke, fill) 座標 (ax[0], ay[0]), (ax[1], ay[1]), ... で囲まれた領域を描画します。 stroke, fill が 0 の場合はそれぞれ輪郭、塗りつぶしを描画しません。
DRAW_ERRORBAR(x, y, erx, ery, size) (x - erx, y) から (x + erx, y) および (x, y - ery) から (x, y + ery) に誤差棒を描画する。size で tick の長さを指定できる。size が 0 のときはファイルオブジェクトのサイズ指定が使われる。
DRAW_ERRORBAR2(x1, y1, x2, y2, size) (x1, y1) から (x2, y2) に誤差棒を描画する。size で tick の長さを 指定できる。size が 0 のときはファイルオブジェクトのサイズ指定が 使われる。

その他の関数

FIT_PRM(id,x) ID が id の data オブジェクトのプロットタイプが fit のとき、対応す る fit object のフィールド "%0x" の値。
FIT_CALC(id,x) ID が id の data オブジェクトのプロットタイプが fit のとき、対応する fit 結果 f(x) を計算する。
LINE_NUMBER()処理中のファイル行番号 (1行目が1)
ISNORMAL(x)x が通常の数値の場合真
ISBREAK(x)x が BREAK の場合真
ISCONT(x)x が CONT の場合真
ISNAN(x)x が NAN の場合真
ISUNDEF(x)x が UNDEF の場合真
SUM(x)積算
DIF(x)差分
F(x,y,z)ユーザ定義関数
G(x,y,z)ユーザ定義関数
H(x,y,z)ユーザ定義関数
COLOR(0,x)R値を x (0≦x<256)に設定
COLOR(1,x)G値を x (0≦x<256)に設定
COLOR(2,x)B値を x (0≦x<256)に設定
COLOR(3,x)RGB値を x (0≦x<256)に設定
COLOR(4,x)R2値を x (0≦x<256)に設定
COLOR(5,x)G2値を x (0≦x<256)に設定
COLOR(6,x)B2値を x (0≦x<256)に設定
COLOR(7,x)R2, G2, B2 値を x (0≦x<256)に設定
COLOR(8,x)x を 6 桁の 16 進数として、 2 桁ずつ R, G, B 値に設定
COLOR(9,x)x を 6 桁の 16 進数として、 2 桁ずつ R2, G2, B2 値に設定
OBJ_COLOR(id, DATA_OBJ), OBJ_COLOR(id)R, G, B, R2, G2, B2 値を ID が id の data オブジェクトと同じ値にする。
OBJ_COLOR(id, PATH_OBJ)R, G, B, R2, G2, B2 値を ID が id の path オブジェクトの stroke_R, stroke_G, stroke_B, fill_R, fill_G, fill_B と同じ値にする。
OBJ_COLOR(id, RECT_OBJ)R, G, B, R2, G2, B2 値を ID が id の rectangle オブジェクトの stroke_R, stroke_G, stroke_B, fill_R, fill_G, fill_B と同じ値にする。
OBJ_COLOR(id, ARC_OBJ)R, G, B, R2, G2, B2 値を ID が id の arc オブジェクトの stroke_R, stroke_G, stroke_B, fill_R, fill_G, fill_B と同じ値にする。
OBJ_COLOR(id, MARK_OBJ)R, G, B, R2, G2, B2 値を ID が id の mark オブジェクトと同じ値にする。
OBJ_COLOR(id, TEXT_OBJ)R, G, B 値を ID が id の text オブジェクトと同じ値にする。
ALPHA(x)A, A2 値を x (0≦x<256)に設定
ALPHA(x,1)A 値を x (0≦x<256)に設定
ALPHA(x,2)A2 値を x (0≦x<256)に設定
OBJ_ALPHA(id, DATA_OBJ), OBJ_ALPHA(id)A, A2 値を ID が id の data オブジェクトと同じ値にする。
OBJ_ALPHA(id, PATH_OBJ)A, A2 値を ID が id の path オブジェクトの stroke_A, fill_A と同じ値にする。
OBJ_ALPHA(id, RECT_OBJ)A, A2 値を ID が id の rectangle オブジェクトの stroke_A, fill_A と同じ値にする。
OBJ_ALPHA(id, ARC_OBJ)A, A2 値を ID が id の arc オブジェクトの stroke_A, fill_A と同じ値にする。
OBJ_ALPHA(id, MARK_OBJ)A, A2 値を ID が id の mark オブジェクトと同じ値にする。
OBJ_ALPHA(id, TEXT_OBJ)A 値を ID が id の text オブジェクトと同じ値にする。
RGB(r,g,b)色のRGB値をそれぞれ r, g, b (0≦r,g,b≦1)に設定
RGB2(r,g,b)R2, G2, B2, の値を r, g, b (0≦r,g,b≦1)に設定
HSB(h,s,b)色のHSB値をそれぞれ h, s, b (0≦h,s,b≦1)に設定
HSB2(h,s,b)R2, G2, B2, の値を、HSB値からそれぞれ h, s, b (0≦h,s,b≦1)に設定
MARKSIZE(x)マークのサイズをXに設定
MARKTYPE(x)マークの種類をXに設定
IF(x,ex1,ex2)x ≠ 0 のとき ex1, x = 0 のとき ex2
UNLESS(x,ex1,ex2)x ≠ 0 のとき ex2, x = 0 のとき ex1
FOR(m,begin,end,step,ex)第mメモリーの値に begin から end まで step で 値を設定し、ex を繰り返す。 m が負の時はメモリーへの設定は行われない。 最後に評価された ex の値を返す。
PROG1(arg1,arg2,...)引数を評価し、最初の引数の値を返す
PROG2(arg1,arg2,...)引数を評価し、2 番目の引数の値を返す
PROGN(arg1,arg2,...)引数を評価し、最後の引数の値を返す



演算子の優先順位

演算子 + - (正負の符号) の優先順位が Version 6.03 以前と異なっています。


!
^
+ - (正負の符号)
* / \
+ -
< <= > >=
== !=
&&
||
:=(+=, -= ... )



数式変換の使用例