Re: 複数のフレーム ボックスがある変動チャートにグラフィックス スクリプトを動的に追加する方法あなたが何をしようとしているのか正確にはわかりませんが、このようなものはうまくいきますか?
Names default to here( 1 );
dt = open("$SAMPLE_DATA\Big Class.jmp");
var_chart = dt << Variability Chart( Y( :height ), X( :sex ), By( :age ), stddevchart(0) );
summarize(dt, ages = by(:age));
var_rpt = var_chart << Report(); // this should just give a list of outlineboxes
for(i=1, i<=nitems(var_rpt), i++,
olb = var_rpt[i];
framebox = olb[FrameBox(1)];
framebox << Add Graphics Script(
Transparency( 0.5 );
Pen Color( "blue" );
Line([0,100], [62.5, 62.5]);
);
);Re: 複数のフレーム ボックスがある変動チャートにグラフィックス スクリプトを動的に追加する方法変数がフレーム ボックスの内部で完全に生成される場合を除いて、私は通常、グラフィックス スクリプトで変数を使用しません。 これが私のアプローチの例です。
Names Default To Here( 1 );
// open example
dt = Open( "$SAMPLE_DATA\Big Class.jmp" );
// launch variability chart
var_chart = dt << Variability Chart( Y( :height ), X( :sex ), By( :age ), stddevchart( 0 ) );
// get summary in same order as By groups
Summarize( dt, age = by( :age ), avg = Mean( :height ) );
var_rpt = var_chart << Report;
// iterate over list and add script using H Line() with literal argument
For( i = 1, i <= N Items( age ), i++,
Eval(
Substitute(
Expr(
var_rpt[i][FrameBox(1)] << Add Graphics Script(
Pen Color( "Red" ); H Line( aaa );
);
),
Expr( aaa ), avg[i]
)
)
);Re: 複数のフレーム ボックスがある変動チャートにグラフィックス スクリプトを動的に追加する方法元の結果から返された結果をループすることができます変動性チャート( By( ... ) )指図:
names default to here(1);
dt =
// Open Data Table: Big Class.jmp
// → Data Table( "Big Class" )
Open( "$SAMPLE_DATA/Cars.jmp" );
rpt = dt << Variability Chart(
Y( :Head IC),
X( :Make, :Model ),
Analysis Type( "Choose best analysis (EMS REML Bayesian)" ),
Show Range Bars( 0 ),
Show Cell Means( 0 ),
Std Dev Chart( 0 ),
Points Jittered( 1 ),
By( :NAME("D/P"), :Protection ),
);
//find groupings:
subt = dt << Summary( Group( :"D/P"n, :Protection ), Link to Original Data Table( 0 ) );
dps = subt:"D/P"n << Get Values;
protections = subt:protection << Get Values;
Close( subt, No Save );
For( t = 1, t <= N Items( dps ), t++,
Eval( eval Expr(
rows = dt << Get Rows Where( :NAME("D/P") == Expr( dps[t] ) & :Protection == Expr( protections[t] ) );
) );
subt = dt << Subset( Rows( rows ), Columns( :Make, :Model, :Wt ), Not Linked, Private );
sumt = subt << Summary( Group( :Make, Model ), Mean( :Wt ), Statistics Column Name Format( "Column" ), Link to Original Data Table( 0 ), Private );
Close( subt, No Save );
subt = sumt << Summary( Group( :Make ), Mean( :Wt ), Statistics Column Name Format( "Column" ), Link to Original Data Table( 0 ), Private );
Close( sumt, No Save );
category number = [=>];
category average = [=>];
For Each Row( subt,
category number[:Make] = :N Rows; // each least-significant category in a VariabilityPlot is exactly X=1 width on the hidden x-axis, starting at zero
category average[:Make] = :Wt
);
Close( subt, No Save );
tree = rpt[t] << Report;
Eval( Eval Expr(
tree[FrameBox( 1 )] << Add Graphics Script(
Local( {values = Expr( category average ), numbers = Expr( category number ), i, items, sum = 0},
items = numbers << Get Keys;
Pen Size( 2 );
Pen Color( "Blue" );
Summation( i = 1, N Items( items ),
Line( Eval List( {sum, values[items[i]]} ), Eval List( {sum += numbers[items[i]], values[items[i]]} ) );
0
)
)
)
) )
);Re: 複数のフレーム ボックスがある変動チャートにグラフィックス スクリプトを動的に追加する方法こんにちはマーク、返信ありがとうございます! H Line() と Expr() で渡された "aaa" の値が何なのか疑問に思っていましたが、どこにも割り当てられていないので、それが何をするのか興味がありますか? ありがとう!
Re: 複数のフレーム ボックスがある変動チャートにグラフィックス スクリプトを動的に追加する方法こんにちはヴィンス、
回答ありがとうございます。62.5 をハードコーディングされているようですが、:wt の値として動的に変更する方法をご存知ですか?
Re: 複数のフレーム ボックスがある変動チャートにグラフィックス スクリプトを動的に追加する方法最初の式は単なるテンプレートです。 「aaa」という表現は、置換用のプレースホルダーです。 評価されることはありません。 Substitute() は Expr( aaa ) を探し、その値を代入します。
Re: 複数のフレーム ボックスがある変動チャートにグラフィックス スクリプトを動的に追加する方法なるほど、説明ありがとう。 好奇心から、jmp は最初に関数内の値を評価しません。 私は過去にこれに問題を抱えていましたが、Pythonのバックグラウンドから来た動作を理解するために何を検索すればよいかわかりませんでした. 私の頭では、H Line は avg[i] を取得するだけで、値を代入する必要はありませんが、エラーが発生します。
「'avg[ /*####*/i]' , avg[/*###*/i] のアクセスまたは評価で無効な添え字 (数値または数値のリストでなければなりません)」
For( i = 1, i <= N Items( age ), i++,
Eval(
Expr(
var_rpt[i][FrameBox(1)] << Add Graphics Script(
Pen Color( "Red" ); H Line( avg[i] );
);
),
)
);助けと説明に感謝します、ありがとう!
Re: 複数のフレーム ボックスがある変動チャートにグラフィックス スクリプトを動的に追加する方法式は、JMP スクリプト言語の強力な機能です。 を読むことをお勧めしますドキュメンテーションそれらがどのように機能し、どのように使用されるかをよりよく理解するために。
最後のアプローチを使用する正しい方法は次のとおりです。
Names Default To Here( 1 );
// open example
dt = Open( "$SAMPLE_DATA\Big Class.jmp" );
// launch variability chart
var_chart = dt << Variability Chart( Y( :height ), X( :sex ), By( :age ), stddevchart( 0 ) );
// get summary in same order as By groups
Summarize( dt, age = by( :age ), avg = Mean( :height ) );
var_rpt = var_chart << Report;
// iterate over the list and add script using H Line() with the literal argument
For( i = 1, i <= N Items( age ), i++,
Eval(
Eval Expr(
var_rpt[i][FrameBox(1)] << Add Graphics Script(
Pen Color( "Red" ); H Line( Expr( avg[i] ) );
);
);
)
);
複数のフレーム ボックスを含む変動チャートにグラフィックス スクリプトを動的に追加する方法こんにちは、みんな、
それで、「BY」グループ化によって分割された変動グラフがあります。私はこの質問をしましたhttps://community.jmp.com/t5/Discussions/How-to-add-Dynamic-horizontal-line-by-shared-y-axis-among/mp/622722これにより、グラフィックス スクリプトがデータ テーブルの値に基づいてそれぞれの行をどのように追加したかがわかりました。 この方法をより多くのフレームボックスを使用して変動チャートに適用しようとしましたが、その方法がわかりません。 現時点での私の推測は、各 By を for ループに配置し、グラフィックスをそれぞれのフレームボックスに繰り返し追加することですが、フレームボックスに繰り返しアクセスする方法がわからないため、その方法について混乱しています。 助けていただければ幸いです。 ありがとう!
以下の rpt を使用し、場合によっては for ループを追加してください。
//Potential for loop?<BR /><BR />rpt = dt << Variability Chart(
Y( :Head IC),
X( :Make, :Model ),
Analysis Type( "Choose best analysis (EMS REML Bayesian)" ),
Show Range Bars( 0 ),
Show Cell Means( 0 ),
Std Dev Chart( 0 ),
Points Jittered( 1 ),
BY(:Name("D/P"))
);
<BR />//Subset data table by "By" condition to add the correct lines based on the condition.<BR />
tree = rpt << Report;
Eval( Eval Expr(
tree[FrameBox( 1 )] << Add Graphics Script(
Local( {values = Expr( category average ), numbers = Expr( category number ), i, items, sum = 0},
items = numbers << Get Keys;
Pen Size( 2 );
Pen Color( "Blue" );
Summation( i = 1, N Items( items ),
Line( Eval List( {sum, values[items[i]]} ), Eval List( {sum += numbers[items[i]], values[items[i]]} ) );
0
)
)
)
)
)データのブレンディングとクリーンアップ