%( ) 置換 - 文字列置換

目次

文字列式の置換

%(str$)

コマンドに文字列を渡す
LabTalkコマンドは、数値引数と文字列引数の両方を受け入れます。 数値変数または式は直接渡すことができます。例えば、worksheet -a 2*2 は4つの新しい列を追加します。リアルタイムで解決された文字列をコマンドに渡すには、文字列引数を%( )で囲む必要があります。E.g.

string name$ = "Book1";
//Originの他のウィンドウをアクティブにし、次のコマンドを実行してBook1をアクティブにする
win -a name$; //「bookname$」という名前のウィンドウをアクティブにしようとしてするため機能しない
win -a %(name$) //正しく動作

" "内の文字列を連結
複数の文字列を " " で連結する場合は、%(str$)置換を使用します。

現在のウィンドウがBook1でSheet1がアクティブだとします。

string name$ = "wks.name$ in page.name$"; 
name$=; //正確に"wks.name$ in page.name$"を印字
string name$ = "%(wks.name$) in %(page.name$)";
name$=; //Sheet1 in Book1と印字
// " "内でない場合は、%( )を追加する必要なし
string name$ =wks.name$ + " in " +page.name$; 
name$=; //Sheet1 in Book1と印字

文字列を数値に変換
数値のみを含む文字列の場合は、%(str$) を使用して数値に変換できます。これは、数値を文字列に変換する $( ) の逆の操作です。

// 文字列「456」を数値 456 に変換
string myString$ = "456";
int myNum=%(myString$);

範囲式の置換

%(rangeVariable)
範囲変数で%( ) 置換が使用されると、範囲文字列に解決されます。

range rA=[Book1]Sheet1!A;
type %(rA); //範囲文字列を出力


このため、ユーザは既存の範囲変数に基づいて新しい範囲を構築できるため、コードの一元化に役立ちます。

range rwks = sheet1!; //rwks で現在のブックのシート1を指す
range r1= %(rwks)col(a); //r1でシートの列Aを指す
r1=data(0,100); //r1に0、1、...、100を入力
rwks.addcol(); //シートに列を追加
range r2 = %(rwks)wcol( rwks.ncols ); //r2は、新しく追加された列である最後の列を指す
r2=r1/10; //r1, 0, 0.1, ..., 10に基づいてr2を計算

ワークシート列とセルの置換

データセット置換

%(workbookName, column) または %([workbookName]sheet, column)
ここで、

Origin 8より前のバージョンでは、ワークブックごとにシートが1つしかなく、最初の引数に workbookName を指定するだけでよいため、2つの構文がサポートされています。最近のバージョンでは、複数のワークシートをサポートしているので、最初の引数でブックとシートの両方を指定する必要があります。アクティブなシートの列を参照する場合は、引き続き1番目の構文を使用できます。

構文 説明 サンプル
%(workbookName, column) ブックのアクティブシート上の列
%(Book1, B) //列ショートネームを使用
%(%H,""Average Temp") //列ロングネームを使用
winName$="Book1"; %(%(winName$), 2); //列インデックスを使用
%([workbookName]sheet, column) ブックの指定したシート上の列
%([Book1]Sheet1, B) //シート名と列ショートネームを使用
%([%H]"test result",""Average Temp") //シートラベルと列ロングネームを使用
winName$="Book1"; %([%(str$)]3, 2); //シートおと列インデックスを使用

例: 右側の列の名前を置換し、%Aと%Bに割り当てます。2番目のケースでは、指定ブックまたはシートが存在しない場合、エラーは発生しませんが、置換は無効になります。

%A = %(%H, B); // アクティブブックのアクティブシートの列B
type %A; //列名を返す。2番目のシートがアクティブの場合Book1_B@2を返す
type $(%A) //列値を返す
%B = %([Book1]Sheet3,2); // Book1、Sheet3の列2
type %B; //列名を返す。例:Book1_B@3
type $(%B) //列値を返す

Note: 括弧を使って、文字列レジスタ自体に割り当てを実行するのではなく、文字列レジスタ変数に含まれる名前を持つデータセットで実行される割り当てを強制的に行うことができます。

%A = %(Book1,2);   // 列2のデータセット名を%Aに割り当て
(%A) = %(Book1,1); // 列1のデータを列2にコピー

列置換を使用した列計算

ブックまたはシートからデータセット名を取得する機能は、次のような異なるシートにある列間の計算を行うのにとても役立ちます。

// Sheet2とSheet3のcol(1)を合計し、アクティブシートのcol(1)に入れる 
col(1)=%([%H]sheet2, 1) + %([%H]sheet3, 1);
 
// Book2の最初のシートでcol "signal"を減算 
// そして、アクティブブックのSheet3の列"calibrated"に結果を入れる
%([%H]sheet3, "calibrated")=col(signal) - %([Book2]1,signal);

ロングネームを使う場合、column 名は引用符で囲む必要があります。引用符が無い場合、Originは最初にショートネームを探し、見つからなければ、ロングネームを使用します。上述のサンプルの場合、

%([%H]sheet3, "calibrated")

とすると、強制的にロングネームを探しますが、

%([Book2]1,signal)

とした場合、ショートネームを持つ列がない場合のみロングネームを使います。

セルの内容

%(workbookName, column,row[,format]) or %([workbookName]sheetName, column,row[,format])


Note: セル置換構文の別のバリエーション%([workbookName]sheetName, @WL, column[row][,format]) はセルから値を取得するために使用できます。セルに値を割り当てるために使用することはできません。

構文 説明 サンプル
%(workbookName, column, row) 指定されたブックのアクティブシート上のセル、完全精度
%(Book1, B, 4) //列ショートネームを使用
%(%H,""Average Temp", 4) //列ロングネームを使用
winName$="Book1"; %(%(winName$), 2, 4); //列インデックスを使用
%([workbookname]sheetname, column, row) 指定したブックおよびシートのセル、完全精度
//シート名列ショートネームを使用
%([Book1]Sheet1, B, 4) 
//シートラベルと列ロングネームを使用
%([%H]"test result",""Average Temp", 4) 
//シートおよび列インデックスを使用
winName$="Book1"; %([%(winName$)]3, 2, 4); 
%(workbookName, column, row, format) 指定されたブックのアクティブシート上のセル、フォーマット指定
//列ショートネームを使用、WYSIWYG
%(Book1, B, 4, W) 
//列ロングネームを使用、小数点以下2桁
%(%H,""Average Temp", 4, .2) 
//列インデックスを使用、有効数字3桁
winName$="Book1"; %(%(winName$), 2, 4, *3); 
%([workbookname]sheetname, column, row, format) 指定したブックおよびシートのセル、フォーマット指定
//シート名と列ショートネームを使用、WYSIWYG
%([Book1]Sheet1, B, 4, W) 
//シートラベルと列ロングネームを使用、小数点以下2桁
%([%H]"test result",""Average Temp", .2) 
//シートおよび列インデックスを使用、有効数字3桁
winName$="Book1"; %([%(winName$)]3, 2, *3); 


例えば、Book1のアクティブワークシートの4番目の列の3行目のセルに25という値が含まれている場合、スクリプトウィンドウに次のステートメントを入力すると、Aを25にセットし、その値を2倍して同じワークブックの"Results"シートの1列目4行に入力します。

value = %(Book1, 4, 3);
%([Book1]Results, 1, 4) = 2 * value;
%([Book1]Results, 1, 4)=;


テキストセルの内容を得るには、文字列変数に代入します。

type %(Book1, 2, 5); //最後に$不要
string strVar$ = %(Book1, 2, 5); //最後に$不要
strVar$ = ;


参照しているワークブック/ワークシートの名前がワークシートのセルに保存されている場合、たとえば、参照ワークブック名​​が現在のワークシートの列Aの最初のセルにある場合、次のセル式を使用できます。

=[Book%(col(A)[i]$)]1!A1

参照ブックの1枚目シートのA1セルにB1セルの値を設定します。

ただし、%() 置換表記で「A1」を使用する場合は、文字列連結で二重等号構文を使用します。

=="[Book" + A1$ + "]1!A1"

自動入力と数式の更新はそのような表記法でも機能します。


Book1のsheet1の列B行3に 12.3456789という数値があるものとし、小数点以下2桁で表示されているとします(この設定は列プロパティダイアログで行います)。

//現在の列フォーマットで値を返す
type "Displayed value: %([Book1]Sheet1,B,3,W)";
//完全精度の値を返す
type "Full precision: %([Book1]Sheet1,B,3)";
//カスタムOriginフォーマットで返す
type "3 decimal places: %([Book1]Sheet1,B,3, .3)";
//または@WLオプションを指定して別の式を使用して表示フォーマットを維持
type "Displayed value with @WL syntax:  %([Book1]Sheet1, @WL, B[3],W)";

Origin 9.1でのフォーマット文字W は、以前のバージョンのC (つまり、%([workbookName]sheetName, column, row,C))の代わりです。フォーマットパラメータ"C" はサポートされません。

ワークブック情報の置換

上述のワークシート列およびワークシートセルの置換表記と同様、ワークシート情報の置換には2つの構文があります。1つはブック内の古い形式の1シートのみのワークブックまたはアクティブシート用で、もう1つはブック内のシートを指定して使用します。

列ラベル行情報

%(workbookName, @option, columnNumber]) または %([workbookName]worksheetName, @option, columnNumber)

この表記により、列ラベル行情報にアクセスできます。

構文 説明
%(workbookName, @option, columnNumber) 名前付きブックのアクティブシートの列情報
%([workbookName]worksheetName, @option, columnNumber) 指定したブックおよびシートの列情報

テキストラベルの@オプションから列ラベル行関連optionsが使用されます。

オプション 説明
@C 列ショートネームを返す
@D 列データセット名を返す
@L 列ロングネームを返す
@LA 列ロングネームを返します。ロングネームがなければショートネームを返します。
@LCn 列コメント(n番目の行)を返します。nがスキップされた場合は1行目のコメントを返します
@LDn 列のn番目のユーザ定義パラメータの内容を返します。スキップされた場合n=1
@LD"paraname" 「paraname」という名前の列のユーザ定義パラメータの内容を返す
@LG 列ロングネーム(単位)を返します。ロングネームがなければショートネームと単位を返します。
@LPn 列のn番目のシステムパラメータの内容を返します。スキップされた場合n=1
@LS 列ショートネームを返します。@Cと同じ
@LU 列単位を返す
@Fn 列フィルタ情報のn 番目の行を返します。nがスキップされた場合完全なフィルター情報を返します。
@T 列の属性を返します。1はY、2は無属性、3はYエラー、4はX、5はラベル、6はZを、7はXエラーを意味します。
@U 列ロングネーム(単位)を返します。ロングネームがなければショートネームと単位を返します。@LGと同じ

サンプル
次のスクリプトは、現在選択されている範囲の最初の列の列名を返します。(selc1数値システム変数に関する情報に関しては、システム変数 を参照してください。)

%N = %(%H, @C, selc1);  %N =;

以下のスクリプトは、Book 2、Sheet 3の4番目の列の列タイプを返します。

type %([Book2]Sheet3, @T, 4);

ワークシート情報

%(workbookName, @option [,argument]) or %([workbookName]worksheetName, @option[, argument])
この表記により、ワークシート情報とメタデータにアクセスできます。

構文 説明
%(workbookName, @option[,argument]) 指定したブックのアクティブシートのワークシート情報
%([workbookName]worksheetName[, @option, argument]) 指定したブックおよびシートのワークシート情報


利用可能なオプションは以下にリストされています。 テキストラベルの@オプションも含まれます。

オプション 引数 説明
@# 不要 ワークシートの列の合計数を返します。
@CS columnNumber n番目の列 (およびn番目の列を含む) の右側にある最初に選択された列の列インデックスを返します。見つからない場合は0を返します。
@E# オプション argument = 1の場合、ワークシート内のYエラー列数を返します。 argument = 2の場合、現在選択されている領域内のYエラー列数を返します。 argument が省略されている場合、1と見なされます。
@H# オプション argument = 1の場合、ワークシート内のXエラー列数を返します。 argument = 2の場合、現在選択されている領域内のXエラー列数を返します。 argument が省略されている場合、1と見なされます。
@OY columnNumber 選択された最初のY列から、選択範囲内でその右側にあるn番目のY列までのオフセットを返します。n番目のYも選択範囲になければなりません。
@OYX columnNumber 選択範囲内で左端のY列からその右にあるn+1番目に選択されたX列までのオフセットを返します。n番目のXも選択範囲になければなりません。
@OYY columnNumber 選択された最初のY列から、選択範囲内でその右側にあるn番目のY列までのオフセットを返します。n番目のYも選択範囲になければなりません。@OYと同様です。
@SCn 不要 ワークシートコメントのn番目の行を返します。nがスキップされた場合、コメントの最初の行です。
@SN 不要 ワークシート表示名を返す
@SNL 不要 ワークシートラベルを返す
@X 不要 ワークシートの最初のX列の列インデックスを返します。
@Xn 不要 ワークシートの最初のX列の列ショートネームを返します。
@Y- n番目の列の左に最も近いY列の列インデックスを返します。 見つからない場合は0を返します。
@Y# オプション argument = 1の場合、ワークシート内のY列数を返します。 argument = 2の場合、現在選択されている領域内のY列数を返します。 argument が省略されている場合、1と見なされます。
@Y+ n番目の列の右に最も近いY列の列インデックスを返します。見つからない場合は0を返します。
@YS n番目の列 (およびn番目の列を含む) の右側にある選択範囲の最初のY列の列インデックスを返します。
@Z# オプション argument = 1の場合、ワークシート内のZ列数を返します。 argument = 2の場合、現在選択されている領域内のZ列数を返します。 argument が省略されている場合、1と見なされます。

サンプル
以下のスクリプトはワークシートの表示名を返します。

type %(%H, @SN);

Book2、Sheet3の一部の列をYErrorバーとして設定します。いくつかのYErrorバー列を含む、列を選択します。 以下のスクリプトで、選択範囲内のYError列の数を返します。

type %([Book2]Sheet3, @E#, 2);

現在のアクティブワークシートが6つの列(XYXYXY)を持っているとします。もし、列2,4,5が選択されているとすると、以下のスクリプトは、最初に選択されたY列の番号を ii 番目の列 (3番目の引数) の右側に表示します。

loop(ii,1,wks.ncols)
{
    type -l %(%H, @YS, ii),;
}

これにより以下が出力されます。

   2,2,4,4,0,0,


ワークブック情報

%(workbookName, @option) %([workbookName], @option)
この表記により、ワークブック情報とメタデータにアクセスできます。

構文 説明
%(workbookName, @option) 名前付きブックのワークブック情報

[%H]Sheet1!Aのように最初の引数に [workbookName]Sheet!Column を指定しても問題ありません。シートと列の部分は無視されます。


利用可能なオプションは以下にリストされています。 テキストラベルの@オプションも含まれます。

オプション 説明
@PN ワークブックウィンドウのショートネームを返します。
@PL ワークブックウィンドウのロングネームを返します。
@PCn ワークブックウィンドウコメントのn番目の行を返します。すべてのコメントは @PC

サンプル
以下のスクリプトはワークブックのショートネームを返します。

type %(%H, @PS);

情報の保存とインポートしたファイルの情報

%([workbookName]Sheet!Column, @Woption, varOrNodeName,[format]) ここで


Originワークブック、ワークシート、列内に保存されているメタデータや、インポートされたファイルについて保存されている情報にアクセスします。

String substitution systemdotimport.png
構文 説明
%([workbookName]sheet!column, @Woption, varOrNodeName) フォーマットなしで変数またはノード情報を返す
%([workbookName]sheet!column, @Woption, varOrNodeName, [format]) フォーマット付きで変数またはノード情報を返す

@Woptionsの説明

オプション 戻り値
@W ワークブックオーガナイザpage.infoまたはユーザツリーの下のvarOrNodeNameの情報を返します。Sheet!Columnを指定する必要はありません。
@WFn ワークブックオーガナイザn番目のインポートされたファイルの下のvarOrNodeNameの情報を返します。 Sheet!Columnを指定する必要はありません。
@WS ワークブックオーガナイザデータシートの下のn番目のシートのvarOrNodeNameの情報を返します。Column.を指定する必要はありません。
@WC 列レベルのユーザツリーのvarOrNodeName の情報を返します。この変数は列プロパティダイアログで確認できます。


この構文が機能しているか確認する方法の1つとして、ファイルをワークブックにインポート後、テキストツールを使用して、ワークシート列の右側の灰色のスペースでテキストラベルを開始することです。右クリックして情報変数の挿入を選択します。情報タブをクリックして、SYSTEM.IMPORTノードを開き、変数を選択して挿入をクリックします。ここでは、使用中の「@W」オプションと、varOrNodeNameに格納されている情報を確認できます。変数を挿入ダイアログを閉じてラベルの外側でクリックすると、表記は解決され、ワー​​クブックのメタデータを表示するテキストラベルが作成されます。

LT Information Storage Substitution.png


サンプル 次の例は、インポートファイル情報、インポート中に抽出された変数、ページ (ブック)、シート、列レベルに保存されているユーザツリーにアクセスする方法を示しています。

データ:ファイルからインポート:インポートウィザード...を使用します。 \Samples\Import and Export\にある3つのS*.dat ファイルを選択し、インポートモードシートを新たに作って読み込むに設定し、Book1に3つのファイルをインポートします。これらのファイルは、いくつかのユーザ変数が抽出された状態でワークブックにインポートされます。ワークブックオーガナイザ開きます。

ファイルと最後にインポートされたファイルの抽出された編集情報にアクセスします。

//最後にインポートされたファイル名を返す
type %(%H,@W,system.import.filename$);
//mm/dd/yyyyフォーマットを使って最後にインポートされたファイル日付を返す
type %(Book1, @W,system.import.filedate, D0);
//最後にインポートされたファイルで抽出された BatchNo変数を返す
type %(Book1, @W,user.variables.batchno);
//最後にインポートされたファイルで抽出されたSample変数を返す
type %(Book1, @W,user.variables.sampleID$);


ワークブックオーガナイザで、左側のユーザツリーを右クリックしツリーの追加を選択してツリー名Cateを追加します。左側でユーザツリー -> Cate を選択します。2 つのノードを追加します。Depthという名前の数値ノードと「Direction」という名前のテキストノードです。そうしないと、ワークブック オーガナイザに名前の代わりにラベルが表示され、混乱することがあります。 Depth値を127.2 に設定し、Direction値をEastに設定します。

//ユーザツリー -> Cateの下のDepth と Direction 情報を返す
type %(%H,@W,tree.cate.depth, .0); //小数点以下桁数なしに
type %(%H,@W,tree.cate.direction$); // 文字列は末尾に$を使用


ワークブックオーガナイザで、インポートされたファイル -> S21-235-07.dat(二番目のノード)を開き、ファイルのツリーとノードを確認します。

//2 番目にインポートされたファイルのファイル情報と抽出された変数を返す
//変数またはノード名の末尾に$を追加しない
type %(%H,@WF2,info.filename); //2番目にインポートされたファイル名を取得
type %(%H,@WF2,header); //文字列変数に$を追加しない
type %(%H,@WF2,Variables.header.noofpoints); //ポイント情報の抽出された変数番号を取得
type %(%H,@WF2,Variables.FileName.SampleID$); //抽出された変数SampleIDを取得


ワークブック オーガナイザで、データシート -> Trial Run2(2番目のシート)に移動します。 ユーザツリーノードを右クリックし、 Conditionという名前のツリーを追加します。Tempという名前で値98.6の数値ノードを追加します。値がFailedResultという名前のテキストノードを追加します。

//ユーザツリー -> Cateの下のDepth および Directionの情報を返す
type %("Trial Run 2"!,@WS,tree.condition.temp); //現ブックの場合ブック情報をスキップ
type %([%H]2!,@WS,tree.condition.result$); //シートインデックスを使用、文字列末尾に$を追加


列レベルでユーザツリーを作成し、@WCでアクセス

Trial Run 1ワークシートがアクティブな状態で列Dをダブルクリックして列プロパティダイアログを開きます。 ユーザツリータブを開きます。右クリックしてMachineという名前のツリーを追加します。 Speedという名前で値42.65の数値ノードを追加します。値がMD4Typeという名前のテキストノードを追加します。

//列ユーザツリーのType情報を返す
type %([%H]"Trial Run 1"!"Position",@WC,tree.Machine.type$); //シートおよび列のロングネームを使用
//Positionが引用符で囲まれていない場合は、最初に列のショートネームを検索し、見つからない場合はロングネームを使用を検索
type %([%H]1!Position,@WC,tree.Machine.type$);
//列ユーザツリーのSpeed情報を返す
//シートおよび列インデックスを使用、現ブックの場合ブック情報をスキップ
type %(1!4,@WC,tree.Machine.speed) 
//シートインデックスと列ショートネームを使用、小数点以下の桁数を0に設定
type %(1!D,@WC,tree.Machine.speed, .0)

凡例と軸タイトルの置換

%(PlotSpecifier[, @option, argument1, argument2, ...])
最初の引数は、他の%( ) 表記法 (ワークシート置換表記法など) と区別するために数値または?で始まる必要があります。通常、最初の引数はワークブックとワークシートの指定子です。

PlotSpecifier 説明
<plotIndex> 現在のレイヤのn番目のプロット、2DのY情報と3DのZ情報  %(3) //現レイヤ、3番目のプロットのY情報
[layerIndex.]<plotIndex> 指定したレイヤのn番目のプロット、2DのY情報と3DのZ情報  %(2.3) // 2番目のレイヤ、3番目のプロットのY情報
<plotindex><plotdesignation> 現レイヤのn番目のプロットのX, Y または Z  %(1X) //現レイヤ、1番目のプロットのX情報
[layerIndex.]<plotindex><plotdesignation> 指定したレイヤのn番目のプロットのX, Y または Z  %(2.1X) //2番目のレイヤ、最初のプロットのX情報
?<plotdesignation> 現在のレイヤの自動的に割り当てられるプロットインデックスの X、Y またはZ  %(?Y) //デフォルトで現レイヤ、最初のプロットのY情報、たとえば、Y軸タイトルを参照
[layerIndex.]?<plotdesignation> 指定したレイヤの自動的に割り当てられるプロットインデックスの X、Y またはZ  %(2.?Y) //デフォルトで第2レイヤ、第1プロットのY情報


テキストラベルの"@"オプションからすべてのプロット関連のオプションを使用できます。例えば、

@オプション 引数 説明
@C NA 列のショートネーム@LSと同様です。 %(1,@C)
@LD"name" NA nameによって特定されるユーザ定義パラメータ。 %(1,@LD"RunNo")
@LG NA ロングネーム(使用できなければショートネーム)と単位(あれば)@Uと同様です。 %(1,@LG)
@V RowIndex プロットのYデータ内の指定行インデックスのデータ値
  •  %(1Y, @V, 2)
    最初のプロットのYデータの2行目の値
@WT ColIndex/ColName, RowIndex[, format] 列インデックス (またはショートネーム) と行インデックスで指定されたシートセルの値。オプションでフォーマットを指定 (Originフォーマット参照)。
  • %(1, @WT, 2, 3)
    1つ目のデータプロットのソースシート(ワークシート、行列)にある2列3行目のセルの値
  • $( %(1, @WT, 2, 3,.4 ) * 100, .2 )
    数値なので、列2、行3の値を取得し、小数点以下4 桁を保持したまま100倍して、小数点以下2桁を表示するようにフォーマット
  • %(1, @WT, B, 3)
    1つ目のデータプロットのソースワークシートにあるB列3行目のセルの値
  • %(1, @WT, B, 3, .0)
    1つ目のデータプロットのソースワークシートにあるB列3行目のセルの値、小数点以下0桁で表示
@WT ColIndex/ColName, ColLabelRowCharacter[, format] 列インデックス (またはショートネーム) と列ラベル行文字で指定されたワークシートセルの値。オプションで数値のフォーマットを指定 (Originフォーマット参照)。
  • %(1, @WT, B, C)
    B[C]$と同様に、これは1つ目のデータプロットのソースワークシートにある列Bのコメントを取得します。
  • %(1, @WT, 2, D1, *3)
    1番目のデータプロットのソース ワークシートの 2 列目から最初のユーザ定義パラメータ情報を取得します。数値であると仮定し、有効数字3桁を表示

サンプル

// 1番目のプロット (デフォルトでは2DのY データ) の最初のユーザーパラメータ情報を表示
legend.text$ = \l(1) %(1, @LD1); //LHSが$で終わる場合右側の引用符をスキップしても問題ありません
//最初のプロットのYデータセットのロングネームとXデータセットのロングネームを表示
legend.text$ = "\l(1) %(1Y, @LA) vs %(1X, @LA)";
//3つのプロットが異なるシートからのものであると仮定
//各プロットのワークシート名を表示
legend.text$="\l(1) %(1,@WS)
\l(2) %(2,@WS)
\l(3) %(3,@WS)"

すべての凡例を legend.text$ に含める必要があるため、上の最後のスクリプトには欠点があります。legendupdate Xファンクション は、スクリプトから凡例を変更または再描画する簡単な方法を提供しています。例えば、

legendupdate mode:=custom custom:=@WS

%(?Y) は軸タイトルを、インデックス(1,2,...n)ではなく、事前に指定されたデータプロットインデックス(作図の詳細:凡例/タイトル:自動軸タイトルのデータプロットインデックスで設定)にデフォルトで設定する可変構文です。 Yデータのロングネームとそれに続く単位を左Y軸のタイトルとして<>内に表示するには、次のようにします。

yl.text$ = %(?Y,@(@LL<@LU>));

グラフ凡例と軸タイトルはテキストラベルで指定されます。これらについての詳細な情報は、LabTalkのリファレンスページを参照してください。

キーワード置換

%( ) 置換表記は、タブや改行などの非印刷文字 (制御文字とも呼ばれる) を文字列に挿入するためにも使用されます。 これらの印刷されない文字にアクセスするには、LabTalk キーワードを使用します。 例えば、

// 改行、ラインフィード(CRLF)を文字列に挿入
string ss$ = "Hello%(CRLF)Goodbye";
ss$=;     // ANS: 'Hello', 'Goodbye' が別の行に出力
// 直接入力可能
type ss$;
// リテラルと混合する場合は%()置換を使用
ty I say %(ss$)%(CRLF)to you;

凡例をTABで区切って水平方向に表示します。

legend.text$="\l(1) %(1)%(TAB)\l(2) %(2)%(TAB)\l(3) %(3)";