グラフのタイトルを検出するためのグラフィックスクリプト連想配列に含まれる情報に基づいて各グラフが一意の線を取得するように、カスタムグラフィックスクリプトを設定したいと思います。 以下の例では、カテゴリごとに異なるグラフを線上に配置したいと思います...実際の使用では、線の作成に正しい値を使用できるように、グラフが下の見出しを「認識する」必要があります。 。
以下のサンプル画像では、「F」グラフィックスクリプトを手動で「F」に更新しました。 だから私は「グラフ情報を収集する」構文を探しています...頭の中で、アウトラインボックスのタイトルを取得できれば、それを操作して必要なものを取得できます...しかし、それが正しいかどうかはわかりません唯一の/最良のオプション。
Names Default To Here( 1 );
dt = Open( "$SAMPLE_DATA\Big Class.jmp" );
dt << Bivariate(
Y( :height ),
X( :weight ),
By( :sex ),
SendToReport(
Dispatch(
{},
"1",
ScaleBox,
{Format( "Fixed Dec", 12, 0 ), Min( 30 ), Max( 180 ), Inc( 20 ),
Minor Ticks( 1 )}
),
Dispatch(
{},
"Bivar Plot",
FrameBox,
{Add Graphics Script(
2,
Description( "" ),
test = Associative Array( {{"F", {0.1, 50}}, {"M", {.8, 0}}} );
///gather graph info to get "F" or "M" from output
graphInfo = "M";// need to extract so it's "F" for female graph
Y Function( test[graphInfo][1] * x + test[graphInfo][2], x );
), Grid Line Order( 1 ), Reference Line Order( 3 )
}
)
)
);

グラフィックススクリプティングRe:グラフタイトルを検出するためのグラフィックスクリプト@Mark_Baileyそのアイデアをありがとう! 要約は、レポートでグラフが作成される順序と一致することを知っておくとよいでしょう。 これは、私のスクリプトのいくつかで使用されていることがわかります:)
@Craige_Halesそれは関数の本当にクールなアイデアです、私もそれで遊ぶ必要があります!
Re:グラフタイトルを検出するためのグラフィックスクリプトグラフィックスクリプト全体を関数にすると、これフレームボックスであるパラメータ。 アウトラインに登ってタイトルをつかむことができます。 利点は、以下を含むアウトラインを取得したことを知っていることですこれグラフ。
Outline title copied into graph by graphic scriptOutline title copied into graph by graphic scriptグラフィックスクリプトによってグラフにコピーされたアウトラインタイトル
dt = Open( "$sample_data/big class.jmp", invisible );
bv = dt << Bivariate( Y( :weight ), X( :height ), Fit Line );
(bv << report)[framebox( 1 )] << addgraphicsscript(
// if a function is used, it must be the only statement in the graphic script
Function( {this},{titlebox=this},
// the function can use this to find the frame box, climb to an Outline title...
While( (titlebox << classname) != "OutlineBox", titlebox = titlebox << parent );
// then other graphics commands
Text( center justified, {60, 120}, (titlebox << gettitle) );
Circle( {60, 120}, 30 );
this<<BACKGROUNDCOLOR></BACKGROUNDCOLOR>Re:グラフタイトルを検出するためのグラフィックスクリプト別のアプローチは、二変量を起動する前に値を決定することかもしれません。 Summarize()関数を使用してレベルを決定できます同じ順序でまた、By変数またはWhere()句を使用すると表示されます。
Summarize( level = By( :Group ) );
変数レベルは、すべての一意のレベルの文字列のリストを:Groupデータ列に正しい順序で格納します。 したがって、グラフィックスクリプトは、アウトライン表示ボックスを照会して、それがどこにあるかを調べる必要はありません。
Re:グラフタイトルを検出するためのグラフィックスクリプトそれもうまくいくかもしれません、 @jthi ...書かれているように、長期的に必要なほど動的ではありませんが、それを使用してカスタムイテレータ変数を組み込むことができるため、各グラフには同じ変数がありますが、その場所に対応して異なる数値に設定されますレポートで。
みなさん、ありがとうございました!
Re:グラフタイトルを検出するためのグラフィックスクリプトコードの1つを次のように拡張します@txnelson :
Names Default To Here( 1 );
dt = Open( "$SAMPLE_DATA\Big Class.jmp" );
test = Associative Array( {{"F", {0.1, 50}}, {"M", {.8, 0}}} );
biv = dt << Bivariate(
Y( :height ),
X( :weight ),
By( :sex ),
SendToReport(
Dispatch(
{},
"1",
ScaleBox,
{Format( "Fixed Dec", 12, 0 ), Min( 30 ), Max( 180 ), Inc( 20 ),
Minor Ticks( 1 )}
),
Dispatch(
{},
"Bivar Plot",
FrameBox,
{Grid Line Order(1 ), Reference Line Order( 3)}
)
)
);
rep = biv << Get As Report;
For( i = 1, i <= N Items(rep), i++,
keyForAa = Substr(Report(rep [i])[Outline Box( 1 )] << get title,
Contains(Report(rep [i])[Outline Box( 1 )] << get title, "=" ) + 1);
//see Add Graphics Script example from Scripting Index
framebox = Report(rep [i])[frame box(1)];
Eval(EvalExpr(framebox << Add Graphics Script(
2,
Description( "" ),
Y Function(Expr(test[keyForAa][1]) * x + Expr(test[keyForAa][2]), x );
)));
);Re:グラフタイトルを検出するためのグラフィックスクリプトこれは、iを0から開始でき、「魔法のように」そのように繰り返されるのが魅力的です... 以下にエラーを貼り付けましたが、少なくともいくつかは機能したようです。 graphInfo変数を作成する直前にshow(i)コマンドを作成しました。
2つのグラフでうまく機能したようですが、何らかの理由でさらに2回繰り返されたため、biv [i]を見つけることができませんでした...その部分をTry()でラップすると、次のように機能したようです。必要!
1)「i」がそのように繰り返される理由や、jslの他の関数にそれを利用できる可能性があるのはいつかわかりません。
2)なぜそれがさらに2回繰り返されるように見えるのかわかりません...グラフごとに1つ、グラフィックスクリプトごとに1つ??
3)どうもありがとうここで助けを求めて... まだどのように/なぜ機能するのか理解できないかもしれませんが、一貫して機能させることができれば、それが勝利です!

Names default to here(1);
dt = Open( "$SAMPLE_DATA\Big Class.jmp" );
i=0;
biv = dt << Bivariate(
Y( :height ),
X( :weight ),
By( :sex ),
SendToReport(
Dispatch(
{},
"1",
ScaleBox,
{Format( "Fixed Dec", 12, 0 ), Min( 30 ), Max( 180 ), Inc( 20 ),
Minor Ticks( 1 )}
),
Dispatch(
{},
"Bivar Plot",
FrameBox,
{Add Graphics Script(
2,
Description( "" ),
i++;
test = Associative Array( {{"F", {0.1, 50}}, {"M", {.8, 0}}} );
///gather graph info to get "F" or "M" from output
show(i);
Try(
graphInfo = word(2,report(biv[i])[OutlineBox(1)] << get title,"=");
show(graphinfo);
);
Y Function( test[graphInfo][1] * x + test[graphInfo][2], x );
), Grid Line Order( 1 ), Reference Line Order( 3 )
}
)
)
);Re:グラフタイトルを検出するためのグラフィックスクリプトこれを試して
Names Default To Here( 1 );
dt = Open( "$SAMPLE_DATA\Big Class.jmp" );
i=0;
biv = dt << Bivariate(
Y( :height ),
X( :weight ),
By( :sex ),
SendToReport(
Dispatch(
{},
"1",
ScaleBox,
{Format( "Fixed Dec", 12, 0 ), Min( 30 ), Max( 180 ), Inc( 20 ),
Minor Ticks( 1 )}
),
Dispatch(
{},
"Bivar Plot",
FrameBox,
{Add Graphics Script(
2,
Description( "" ),
i++;
test = Associative Array( {{"F", {0.1, 50}}, {"M", {.8, 0}}} );
///gather graph info to get "F" or "M" from output
graphInfo = word(2,report(biv[i])[OutlineBox(1)] << get title,"=");
show(graphinfo);
Y Function( test[graphInfo][1] * x + test[graphInfo][2], x );
), Grid Line Order( 1 ), Reference Line Order( 3 )
}
)
)
);Re:グラフタイトルを検出するためのグラフィックスクリプトそれだけです....グラフィックスクリプト自体の中から、その情報を知ることができますか?
タイトルの取得は外部から簡単です。
レポートの各グラフにまったく同じグラフィックスクリプトを配置し、そのスクリプトがどこにあるかを把握できるようにしたいと考えています。
Re:グラフタイトルを検出するためのグラフィックスクリプトタイトルを取得する必要があるアウトラインボックスを知る必要がありますが、その後は単純なタイトルの取得になります
graph title = report( biv[1] )[OutlineBox(1)] << get title;
Re:グラフタイトルを検出するためのグラフィックスクリプトタイトルを更新するつもりはありませんでしたが、グラフィックススクリプト内からタイトル情報を取得するためです。 タイトル情報がわかれば、すべての文字列操作を行うことができます。
理想的には、「graphTitle =graph<Re:グラフタイトルを検出するためのグラフィックスクリプト
タイトルを更新するスクリプトの変更は次のとおりです

Names Default To Here( 1 );
dt = Open( "$SAMPLE_DATA\Big Class.jmp" );
biv = dt << Bivariate(
Y( :height ),
X( :weight ),
By( :sex ),
SendToReport(
Dispatch(
{},
"1",
ScaleBox,
{Format( "Fixed Dec", 12, 0 ), Min( 30 ), Max( 180 ), Inc( 20 ),
Minor Ticks( 1 )}
),
Dispatch(
{},
"Bivar Plot",
FrameBox,
{Add Graphics Script(
2,
Description( "" ),
test = Associative Array( {{"F", {0.1, 50}}, {"M", {.8, 0}}} );
///gather graph info to get "F" or "M" from output
graphInfo = "M";// need to extract so it's "F" for female graph
Y Function( test[graphInfo][1] * x + test[graphInfo][2], x );
), Grid Line Order( 1 ), Reference Line Order( 3 )}
)
)
);
For( i = 1, i <= N Items( biv ), i++,
Report( biv[i] )[Outline Box( 1 )] << set title(
Substr(
Report( biv[i] )[Outline Box( 1 )] << get title,
Contains( Report( biv[i] )[Outline Box( 1 )] << get title, "=" ) + 1
)
)
);