こんにちは、JMP コミュニティです。
注釈グラフ ビルダー プロットの面倒なタスクのいくつかを自動化するという私の探究の中で、次のスクリプトを使用してデータ グループ間に水平線セグメントを動的に追加しようとしています。 残念ながら、この特定のタスクでは、単純な Expr () に続いて Substitute ()、Eval () を使用することはできないようです。 注: 機密データを扱っているため、必要に応じてモックの DATA テーブルと STAT テーブルを作成する必要があります。
Names Default to Here (1);
dt1 = Data Table ("DATA.JMP");
dt2 = Data Table ("STAT.JMP");
gbe = Expr (dt1 << Graph Builder(
Size( 699, 625 ),
Variables(
X( :R vs NR ),
Y( _YS_ ),
Color( :R vs NR )
),
Elements(
Points( X, Y, Legend( 6 ) ),
Box Plot( X, Y, Legend( 8 ), Outliers( 0 ) )
),
SendToReport(
Dispatch(
{},
"Graph Builder",
FrameBox,
{Add Graphics Script(
2,
Description( "Script" ),
Pen Size (3);
// The following line of code return the error "Invalid Matrix Token"
Line ([0.2,0.8], [Y1, Y1]);
Text( Center Justified, {0.5, top1}, VAL1 );
// The following line of code return the error "Invalid Matrix Token"
Line ([0.2,1.8], [Y2, Y2]);
Text( Center Justified, {1.0, top2}, VAL2 );
// The following line of code return the error "Invalid Matrix Token"
Line ([1.2,1.8], [Y1, Y1]);
Text( Center Justified, {1.5, top1}, VAL3 );
), Grid Line Order( 1 ), Reference Line Order( 3 )}
)
)
)
);
For (i = 749, i <= 750, i++,
YCOL = Column (dt1, i);
PVAL1 = "p VAL = " || CHAR(format(Column (dt2, 2) [i-747],"PValue"));
PVAL2 = "p VAL = " || CHAR(format(Column (dt2, 3) [i-747],"PValue"));
PVAL3 = "p VAL = " || CHAR(format(Column (dt2, 4) [i-747],"PValue"));
data_topy1 = Col Quantile (YCOL, 0.99);
data_topy2 = Col Quantile (YCOL, 0.975);
gbx = Substitute(Name Expr (gbe),
Expr (_YS_), YCOL,
Expr (VAL1), PVAL1,
Expr (VAL2), PVAL2,
Expr (VAL3), PVAL3,
Expr (Y1), data_topy1,
Expr (Y2), data_topy2
);
gb = Eval (gbx);
gb << journal;
gb << close window;
);あらゆるアイデアを歓迎します。
ありがとう
HLine と VLine は無限に長いため、あなたのソリューションはこの場合に最適です。 ここでは説明といくつかの代替案を示します。
角括弧行列はコンパイル時の定数であり、変数を使用できません。 私はよく、次のような小さな行列を構築するために連結演算子を使用しました。
a = 17;
b = 23;
Show( a || b, a |/ b );
|| b = [17 23];
a |/ b = [17, 23];
また、matrix() を使用することもできます。
matrix( {{a, b}, {a, a}} );[17 23、17 17]
線を 0.2 と 1.8 で制限する必要がある場合は、行列ではなくリストを取る別の形式の線を使用できます。
line( {x1,y1}, {x2,y2} )line 関数は、各リストの式を評価します。
また、水平または垂直以外の角度で無限に長い線が必要な場合は、YFunction() を使用できます。
YFunctionYFunctionY関数