変数を含むグラフィックス スクリプト H 行を追加こんにちは、みんな、
変数を使用してグラフビルダーオブジェクトに水平線を追加しようとしています。このようにして機能します
x = 139.4;
Show( x ); //x = 139.4;
gbReport[Framebox( 1 )] << addGraphicsScript(
H Line( x )
);
でも、もし私がそんなことをしていたら
TR1_row = dt_lims << get selected rows;
TR1 = Column( dt_lims, "CL" )[TR1_row] ;
gbReport[Framebox( 1 )] << addGraphicsScript(
H Line(TR1 )
);
うまくいきません。何かアイデアはありますか?
Re: グラフィックススクリプトのH行を変数で追加@avner8943 、
RowState ハンドラーを使用して制限を変更するスクリプトが添付されています。
Names Default to Here(1);
dt = Open("$Sample_Data/Big Class.jmp");
dt << sort(By(:sex, :age), Replace Table(1));
dt << New Column( "Order", Numeric);
dt:Order << Set Each Value( If( row()==1 | :sex != lag(:sex,1), 1, lag(:Order,1) +1)) ;
dtsum = dt << Summary( Group(:sex), Min(:height), mean(:height), Max(:height));
dtlims = dtsum << Stack(
columns(
:Name( "Min(height)" ),
:Name( "Mean(height)" ),
:Name( "Max(height)" )
),
Source Label Column( "Label" ),
Stacked Data Column( "Limits" )
);
Close(NoSave, dtsum);
f= Function({a}, {TR1, i},
print(a, fb);
// show(a, fb);
for(i=1, i<=nitems(fb), i++,
Try( fb[i] << Remove Graphics Script (1) )
);
TR1 = :Limits[dtlims << get selected rows];
Eval (EvalExpr( fb << Add Graphics Script( H Line( Expr( TR1) ) ) ) );
);
gb = dt << Graph Builder(
Size( 528, 456 ),
Show Control Panel( 0 ),
Variables( X( :Order ), Y( :height ), Group X(:sex) ),
Elements( Points( X, Y, Legend( 3 ) ), Line( X, Y, Legend( 5 ) ) )
);
fb = gb << Xpath("//FrameBox");
rs = dtlims << Make RowState Handler(f );
1 つまたは複数の行を選択するか、すべての行の選択を解除して、すべてのフレームボックスの変更を確認します。

このスクリプトは JMP 14 および 15 でテストされました。 スクリプトが JMP 13 で動作するように、26 行目にスクリプトを少し変更したものが添付されています。
これは RowState Handler スクリプトで機能するため、スクリプトに何か他の問題があるはずです。
Re: グラフィックススクリプトのH行を変数で追加おそらく関数内で実行し、MakeRowStateHandler からこの関数を呼び出しているため、関数の外で試してみると機能しています。
Re: グラフィックススクリプトのH行を変数で追加@avner8943 、
以下は、JMP サンプル データ テーブル Big Class を使用し、男性のみを選択的に使用し、一度に 3 つの制限を追加するスクリプトです。
Names Default to Here(1);
dt = Open("$Sample_Data/Big Class.jmp");
dt << sort(By(:sex, :age), Replace Table(1));
dt << New Column( "Order", Numeric);
dt:Order << Set Each Value( If( row()==1 | :sex != lag(:sex,1), 1, lag(:Order,1) +1)) ;
dtsum = dt << Summary( Group(:sex), Min(:height), mean(:height), Max(:height));
dtlims = dtsum << Stack(
columns(
:Name( "Min(height)" ),
:Name( "Mean(height)" ),
:Name( "Max(height)" )
),
Source Label Column( "Label" ),
Stacked Data Column( "Limits" )
);
Close(NoSave, dtsum);
TR1_row = dtlims << get rows where( :sex =="M");
TR1 = column(dtlims, "Limits")[TR1_row];
gb = dt << Graph Builder( where (:sex=="M"),
Size( 528, 456 ),
Show Control Panel( 0 ),
Variables( X( :Order ), Y( :height ) ),
Elements( Points( X, Y, Legend( 3 ) ), Line( X, Y, Legend( 5 ) ) )
);
gbreport = report(gb);
gbreport[FrameBox(1)] << Add Graphics Script( HLine( TR1 ) );
このプロットが生成されます。

行が選択されていない場合を除き、何が問題なのかわかりません。
幸運を!
Re: グラフィックススクリプトのH行を変数で追加これは機能していますが、JMP テーブルの特定のセルから値を取得するスクリプトに合わせて調整するにはどうすればよいですか。Re: グラフィックススクリプトのH行を変数で追加@avner8943 、
H Line() の構文は、H Line(y), H Line( x1, x2, y) です。 また、値のベクトルがある場合は、このスクリプトを試してください。
Names Default To Here( 1 );
v = [10, 50, 20];
New Window( "Example",
Graph Box(
Pen Size( 2 );
H Line( v );
)
);
次のプロットを作成します。

このスクリプトが機能するかどうかを確認してください。そうでない場合は、使用している JMP と OS のバージョンを指定してください。