データの加工

概要


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

データ

数式変換

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

移動されたデータを移動

隣接平均

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

出力(グラフ描画)

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

ブロック

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

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

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


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
AXISX_MIN「X 軸」の最小値
AXISX_MAX「X 軸」の最大値
AXISX_LEN「X 軸」の長さ
AXISY「Y 軸」に指定された axis オブジェクトの ID
AXISY_MIN「Y 軸」の最小値
AXISY_MAX「X 軸」の最大値
AXISY_LEN「Y 軸」の長さ
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(), on_end() は使用できません。

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


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

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

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


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

配列


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

数式変換で使用できる文字列、文字列変数と文字列の配列

注意

文字列の扱いについては今の所試験的な実装です。今後、仕様変更などの可能性があります。

文字列リテラル

バックスラッシュ記法

\t
タブ(0x09)
\n
改行(0x0a)
\r
キャリッジリターン(0x0d)
\f
改ページ(0x0c)
\b
バックスペース (0x08)
\a
ベル (0x07)
\v
垂直タブ (0x0b)
\nnn
8 進数表記 (n は 0-7)
\xnn
16 進数表記 (n は 0-9,a-f)

式展開

ダブルクォートで囲まれた文字列の中では#{式}という形式で式の内容(を文字列 化したもの)を埋め込むことができます。文字#に続く文字が {でなければ、その まま文字#として解釈されます。明示的に式展開を止めるには#の前にバックスラッ シュを置きます。式が文字列リテラル、文字列変数、文字列配列の要素の場合は その文字列が埋め込まれます。それ以外の場合は式を評価した値が適当な文字列 に変換されて埋め込まれます。

文字列変数

$ に続き英字または _ で始まり英数字または _ から構成される文字列。

文字列の配列

文字列の値

数値の計算が行われる箇所で、文字列は数値に変換されます。

演算子

文字列変数・文字列配列の要素に対しては、代入演算子 = および比較演算子 ==, != のみが使用できます。

比較演算子 ==, != の両辺が文字列リテラル、文字列変数、文字列配列の場合は文字列としての比較が行われます。

文字列変数に対する代入演算子 = の右辺に数値がある場合は数値を変換した文字列が代入されます。

文字列操作関数

文字列操作関数

ユーザ定義関数


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

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


-+符号
!(前置) 論理否定
+ - * /四則演算
\浮動小数点剰余
^ベキ乗
!(後置)階乗(引数は 169 以下の正の整数)
=代入
-=自己代入
+=自己代入
*=自己代入
/=自己代入
\=自己代入
^=自己代入
^=自己代入
^=自己代入
&=自己代入
|=自己代入
<<=自己代入
>>=自己代入
==比較
!=比較
<=比較
>=比較
<比較
>比較
&&論理積
||論理和
&ビットAND
|ビットOR
~ビットNOT
<<左シフト
>>右シフト
exp1 && exp2 と and(exp1, exp2) の違い。

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

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

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

;

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

括弧 ()

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

乗算演算子 *

乗算であることが明らかな場合には乗算演算子を省略することができます。 (例:2 * PI * x → 2 PI x)

ビット演算子
  • ビット演算は被演算子を符号付き整数に変換して行われます。
  • 負数に対するビットシフト演算は処理系依存です。環境により結果が異なる場合があります。
  • ビットシフト演算でシフト量に負の値を指定した場合、逆向きのシフトとして扱われます。 (例:2<<-1 は 2>>1 と同等)

演算子の優先順位

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


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

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

変換関数

abs(x)絶対値
sign(x)正負の符号 (x < 0 で -1、x >= 0 で 1)
int(x)0に向かって切捨てた整数部
gauss(x)ガウスの記号[ ] ([n]はnを越えない最大の整数)
frac(x)小数部
round(x, digit)四捨五入した値。 digit で四捨五入した結果の桁数を指定します。 (例:round(1.25, 1) → 1.3)
min(a,b,c,...)引数のうちもっとも小さな値
max(a,b,c,...)引数のうちもっとも大きな値
sumsq(a,b,c,...)引数の自乗和

初等関数

sqr(x)二乗
sqrt(x)平方根
exp(x)指数(x≦690)
expm1(x)exp(x)-1、x が 0 の近傍でも正確な値が計算できる方法が用いられる。
ln(x)自然対数
ln1p(x)ln(1+x)、x の値が 0 に近い場合でも正確に計算できる方法が用いられる。
log(x)常用対数
log1p(x)log(1+x)、x の値が 0 に近い場合でも正確に計算できる方法が用いられる。
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) からの経過時間を秒単位で返す。
mtime()ファイルの最終修正時刻を返す。
strftime($str, $fmt, t, utc)時刻 t (紀元からの経過秒数)を $fmt で指定された書式指定にしたがって変換し文字列 $str に書き込む。utc が 0 の時はローカル時刻、それ以外の場合は協定世界時 (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, n)配列 a から末尾のn要素を取り除く (n = 0 は n = 1 と同義) 。戻り値は操作後の配列の要素数。
push(a,x)配列 a の末尾に x を追加する (戻り値は操作後の配列の要素数)
shift(a, n)配列 a の先頭のn要素を取り除く (n = 0 は n = 1 と同義) 。残りの要素は前に詰められる。戻り値は操作後の配列の要素数。
unshift(a,x)配列 a の先頭に 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_moving_average(dest, src, n, type) 配列 src の隣接平均を計算し、配列 dest に格納する。 隣接平均の計算に使われるデータ数を n で指定する (1 の時、前後1つのデータと合わせて3つのデータの平均がとられる)。 type が 0 の時は単純移動平均、1 の時は加重移動平均を計算する。
array_clear(a)配列 a の配列の要素数を 0 にする
array_compact(a)配列 a の配列の要素から通常の数値以外を取り除き、取り除いた後の要素数を返す
array_copy(dest, src)配列 src の各要素を配列 dest に設定する。
map(dest, src, item, ex)配列 src の各要素に対して式 ex を計算し、その結果を配列 dest に格納する。第2引数に指定した変数 (item) で配列の要素を参照できる。
reduce(a, item, result, ex) 配列 a の各要素に対して、 式 ex を実行し、最後に実行した結果を返す。第2引数に指定した変数 (item) で配列の要素を、第3引数に指定した変数 (result) で前回の繰り返 しにおける計算結果を参照できる。
each(a, item, ex)配列 a の各要素に対して、式 ex を実行する。第2引数に指定した変数 (item) で配列の要素を参照できる。
each_with_index(a, item, index, ex)配列 a の各要素に対して、式 ex を実行する。第2引数に指定した変数 (item) で配列の要素を、第3引数に指定した変数 (index) で繰り返しのカウンタを参照できる。
zip(a1, a2, item1, item2, ex)配列 a1, a2 の各要素に対して、式 ex を実行する。第3引数、第4引数に指定した変数 (item1, item2) で配列の要素を参照できる。
zip_map(dest, src1, src2, item1, item2, ex)配列 a1, a2 の各要素に対して、式 ex を実行、その結果を配列 dest に格納する。第4引数、第5引数に指定した変数 (item1, item2) で配列の要素を参照できる。
filter(dest, src, item, ex)配列 src の各要素に対して式 ex を計算し、その結果が真であった要素を配列 dest に格納する。第3引数に指定した変数 (item) で配列の要素を参照できる。
find(a, item, ex)配列 a の各要素に対して式 ex を計算し、その結果が真であった最初の要素を返す。第2引数に指定した変数 (item) で配列の要素を参照できる。
index(a, item, ex)配列 a の各要素に対して式 ex を計算し、その結果が真であった最初の要素の位置を返す。第2引数に指定した変数 (item) で配列の要素を参照できる。

メモリー操作関数

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

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, arrow, size) (x1, y1) から (x2, y2) に直線を描画します。arrow が 1 のときは終点、 2 の時は始点、3 の時は両端に矢印を描画します。size で矢印の大きさを 指定できます。size が 0 以下の時はデータオブジェクトのサイズ指定が 使われます。
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 のときはデータオブジェクトのサイズ指定が 使われる。
draw_text($str, x, y, dir) (x, y) に文字列 $str を描画します。dir で方向を指定できます。 制御文字を使用した書式指定が可能です。
draw_text_raw($str, x, y, dir) (x, y) に文字列 $str を描画します。dir で方向を指定できます。 制御文字は使用できません(そのまま表示されます)。
text_align(x, y) 文字列を描画するときの位置合わせを指定します。 x は文字列の描画方向、y はそれと直行する方向の位置を0〜1の値で指定します。
text_font(font) 文字列を描画するときのフォントを指定します。 fontは 0, 1, 2 がそれぞれ Sans-serif, Serif, Monospace に対応します。
text_style(style) 文字列を描画するときのスタイルを指定します。 style は 0, 1, 2, 3 がそれぞれ normal, bold, italic, bold-italic に対応します。
text_size(pt, space, script) 文字列を描画するときのフォントサイズなどを指定します。 pt でフォントサイズを指定できます。 続く引数で文字間隔、スクリプトサイズを指定できます。 それぞれ 0 を指定した時は初期値に設定されます。

文字列操作関数

string_float($str) $str を浮動小数点に変換し、その値を返します。
string_float_array(dest, $ary) 配列 $ary の各要素を浮動小数点に変換し、その値を配列 dest に代入します。 変換された要素数を返します。
string_length($str) $str に含まれる文字数を返します。UTF-8 以外の文字列では使えません。
puts($str, $format, v1, v2, ...) 文字列 $str と改行を information window に表示します。正しい UTF-8 文字列の場合、文字列の文字数を返します。
printf($str, $format, v1, v2, ...) 数値 v1, v2, ... を $format に従って文字列に変換して information window に表示します。正しい UTF-8 文字列の場合、変換された文字列 の文字数を返します。$format の書式は printf(3) に準じます。詳し くは フォント/テキスト - 整形を参照し てください。
sprintf($str, $format, v1, v2, ...) 数値 v1, v2, ... を $format に従って文字列に変換して $str に代入し ます。正しい UTF-8 文字列の場合、変換された文字列の文字数を返します。 $format の書式は printf(3) に準じます。詳しくは フォント/テキスト - 整形を参照してくだ さい。
string($str, value) 数値 value を文字列に変換して $str に代入します。value を返します。
string_up($dest, $src) 文字列 $src に含まれる ascii 文字を大文字にした文字列を $dest に代入します。
string_down($dest, $src) 文字列 $src に含まれる ascii 文字を小文字にした文字列を $dest に代入します。
string_strip($str) 文字列 $str の先頭、最後にある空白文字を削除します。
string_append($dest, $src) 文字列 $dest の最後に文字列 $src を連結します。
string_prepend($dest, $src) 文字列 $dest の最初に文字列 $src を連結します。
string_insert($dest, $src, pos) 文字列 $dest の pos 番目の文字の前に文字列 $src を挿入します。
string_reverse($dest, $src) 文字列 $src の並びを逆にした文字列を $dest に代入します。UTF-8 以外の文字列では使えません。
string_compare($str1, $str2, ignore_case) 2つの文字列 $str1 と $str2 を比較して $str1 が $str2 に較べて 1)小 さい、2)等しい、3)大きい場合に、ゼロよりも 1)小さい、2)等しい、3)大 きい整数を返します。ignore_case が 0 以外の場合は文字列に含まれる ascii 文字の大文字小文字を区別せずに比較します。
string_match($str, $regexp, ignore_case) 文字列 $str に対して、文字列 $regexp が表す正規表現によるマッチング を行います。マッチした場合は 0 以外の数値、マッチしなかった場合は 0 を返します。ignore_case が 0 以外の場合は文字列に含まれる ascii 文 字の大文字小文字を区別せずに比較します。
string_truncate($str, len) 文字列 $str の先頭 len 文字以降を削除します。UTF-8 以外の文字列では使えません。
string_erase($str, pos, len) 文字列 $str から、pos 文字目から始まる len 文字を削除します。UTF-8 以外の文字列では使えません。
string_join($str, $sep, $ary) 配列 $ary に含まれる文字列を結合して $str に代入します。各要素の間には $sep が挿入されます。
string_substring($dest, $src, start, end) 文字列 $src の pos 文字目から始まり end 文字までからなる文字列を $dest に代入します。UTF-8 以外の文字列では使えません。
string_split($dest, $src, $separator, use_regexp) 文字列 $src を文字列 $separator で分割し、分割された文字列を文字 列の配列 $dest に代入します。use_regexp が 0 以外の場合は $separator を正規表現として解釈します。use_regexp が 2 の場合は $separatorに含まれる ascii 文字の大文字小文字を区別せずに分割しま す。分割された要素数を返します。1つ目の引数に数値の配列を指定した時は 分割された文字列を浮動小数点に変換して配列に代入します。
string_split_float(dest, $src, $separator, use_regexp) 文字列 $src を文字列 $separator で分割し、分割された文字列を浮動 小数点に変換して配列 dest に代入します。use_regexp が 0 以外の場 合は$separator を正規表現として解釈します。use_regexp が 2 の場合 は$separatorに含まれる ascii 文字の大文字小文字を区別せずに分割し ます。分割された要素数を返します。
string_replace($dest, $src, $regexp, $replacement, ignore_case) 文字列 $src 中の、文字列 $regexp が表す正規表現にマッチする文字列を $replacement で置換した文字列を $dest に代入します。ignore_case が 0 以外の場合は文字列に含まれる ascii 文字の大文字小文字を区別せずに 比較します。
string_column($dest, index) データファイルを読み込んだ時に index カラムの文字列を $dest に代入 します。index が 0 のときは行全体の文字列が代入されます。
size($a) 配列 $a の要素数を返します。
sort($a, ignore_case) 配列 $a を整列します。ignore_case が0 以外の場合は文字列に含ま れる ascii 文字の大文字小文字を区別せずに比較します。
rsort($a, ignore_case) 配列 $a を逆順に整列します。ignore_case が0 以外の場合は文字列 に含まれる ascii 文字の大文字小文字を区別せずに比較します。
array_clear($a) 配列 $a の配列の要素数を 0 にする
pop($a, n)配列 $a から末尾のn要素を取り除く (n = 0 は n = 1 と同義) 。戻り値は操作後の配列の要素数。
push($a, $x)配列 $a の末尾に $x を追加する (戻り値は操作後の配列の要素数)
shift($a, n)配列 $a の先頭のn要素を取り除く (n = 0 は n = 1 と同義) 。残りの要素は前に詰められる。戻り値は操作後の配列の要素数。
unshift($a, $x)配列 $a の先頭に $x を挿入する (戻り値は操作後の配列の要素数)
index($a, $item, ex)配列 $a の各要素に対して式 ex を計算し、その結果が真であった最初の要素の位置を返す。第2引数に指定した変数 ($item) で配列の要素を参照できる。
filter($dest, $src, $item, ex)配列 $src の各要素に対して式 ex を計算し、その結果が真であった要素を配列 $dest に格納する。第3引数に指定した変数 ($item) で配列の要素を参照できる。
array_copy($dest, $src)配列 $src の各要素を配列 $dest に設定する。
map(dest, $src, $item, ex)配列 $src の各要素に対して式 ex を計算し、その結果を配列 dest に格納する。第2引数に指定した変数 ($item) で配列の要素を参照できる。
reduce($a, $item, result, ex) 配列 $a の各要素に対して、 式 ex を実行し、最後に実行した結果を返す。第2引数に指定した変数 ($item) で配列の要素を、第3引数に指定した変数 (result) で前回の繰り返 しにおける計算結果を参照できる。

その他の関数

fit_prm(id,x) ID が id の data オブジェクトのプロットタイプが fit のとき、対応す る fit object のフィールド "%0x" の値。
fit_calc(id,x) ID が id の data オブジェクトのプロットタイプが fit のとき、対応する fit 結果 f(x) を計算する。
fit_solve(id,y,x0,x1) ID が id の data オブジェクトのプロットタイプが fit のとき、対応する fit 結果 f(x) に対して f(x) = y となる x を計算する。x の初期値は x0, x1 で指定する。 x1 が 0 の場合はニュートン法それ以外の場合は二分法で計算する。 正常に計算できなかった場合は UNDEF を返す。
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 の 値を返す。
times(n, index, ex) ex を n 回繰り返す。第2引数に指定した変数で、繰り返しのカウンタ (0 〜 n-1) を参照できる。最後に評価された ex の値を返す。
getobj($obj, $field, id) ID が id のオブジェクト $obj のフィールド $field の値を返す。field type が int, bool, enum, double の場合に利用できます。
getobj_string($str, $obj, $field, id) ID が id のオブジェクト $obj のフィールド $field の値を $str に代入 する。field type が char* の場合に利用できます。正しい UTF-8 文字列 の場合、文字列の文字数を返します。
getobj_array(array, $obj, $field, id) ID が id のオブジェクト $obj のフィールド $field の値を array に代 入する。field type が char*[], double[], int[] の場合に利用できます。 設定した配列の要素数を返します。
text_obj_get(id, $text) $text にID が id の text オブジェクトの文字列を設定する。
text_obj_set(id, $text) ID が id の text オブジェクトの文字列を $text に設定する。
prog1(arg1,arg2,...)引数を評価し、最初の引数の値を返す
prog2(arg1,arg2,...)引数を評価し、2 番目の引数の値を返す
progn(arg1,arg2,...)引数を評価し、最後の引数の値を返す
parameter(id)ID が id の parameter オブジェクトの設定値を返す
on_end(proc)各data オブジェクトの描画終了時に proc を評価する。複数回呼び出すことが可能だが、最後に指定された数式のみが評価される。

数式変換の使用例