Global Box を介して軸制限を更新する方法こんにちは、
グローバル ボックスを介してグラフの Y 軸の制限を制御したい (ユーザーが軸のプロパティをダブルクリックせずに制限をすばやく変更できるようにするため)。
添付のスクリプトでは、ウィンドウとグラフを作成します。 次に、初期化する 2 つのグローバル ボックス (Lim1 と Lim2) を追加します。
グラフが生成されたら、Lim1 と Lim2 の値を変更しますが、それに応じてグラフの軸が更新されません...何が間違っているのかわかりません。
誰かが助けることができますか?
ありがとう。
Re: Global Box を介して軸制限を更新する方法非常に似たようなことをしようとしているあなたの質問に出くわしました(外れ値を見逃さないように、多くのグラフのデータで軸の制限を設定します)。 軸の制限を評価する式に設定することで解決しました(つまり、最小値に等しい-LSLまたは最小データポイントのいずれかで、最大の反対)。 下記参照:
// Get min/max for Graph 1
dt = Current Data Table();
G1 = dt << Get Rows Where (:Column 1 == "Group1");
G1_Min = Eval( Min((LSL[1]*0.95), Min(:Column 2[G1])));
G1_Max = Eval( Max((USL[1]*1.05), Max(:Column 2[G1])));
dt << clear select;
// Get min/max for Graph 2 etc. repeat for each graph
dt = Current Data Table();
G2 = dt << Get Rows Where (:Column 1 == "Group2");
G2_Min = Eval( Min((LSL[2]*0.95), Min(:Column 2[G2])));
G2_Max = Eval( Max((USL[2]*1.05), Max(:Column 2[G2])));
dt << clear select;
// Assign axis limits and specification lines within the graph parameters (for Graph 1 - repeat for each)
Dispatch ({Min(G1_Min), Max(G1_Max), Inc( Eval((G1_Max - G1_Min) / 7))),
Add Ref Line( LSL[1], "Solid", "Medium Dark Blue", "LSL", 1 ),
Add Ref Line( USL[1], "Solid", "Medium Dark Blue", "USL", 1 )}* 注: あなたの問題は 4 年間で解決したと思いますが、同様の問題を抱えている他の人にも役立つかもしれません。
Re: Global Box を介して軸制限を更新する方法ネルソン、ジェフ、
私はあなたの理由を理解しています: 軸のインタラクティブなプラットフォーム (ドラッグ、移動、...) を使用することは確かに非常に便利です...しかし、いくつかの理由で、それは私にとっては役に立ちません:
- 私が生成するほとんどのグラフには、母集団の残りの部分よりもはるかに高い値を持つ外れ値が含まれます。 この場合、インタラクティブなソリューションは非常に時間がかかり、苦痛を伴います...
- 1 つのウィンドウで 30 ほどのグラフを生成するつもりです。30 のグラフを対話的に変更することはできないことは想像に難くありません。すべての値を設定するための 1 つまたは複数のボックスを用意すると、時間効率が向上します。
とにかく、Nelson のソリューションがうまく機能していることがわかります。 それは大きな複合体のように見えます。何が行われたかを詳細に調べなければなりません。
どうもありがとう。
Re: Global Box を介して軸制限を更新する方法すべてが何をしているのかわからなかったという理由だけで、フォーマットを少し変更しました。 ただし、以下は、あなたが質問しているアイテムを私が通常どのように処理するかの例です. 私のより大きな質問は、実際には、最小値と最大値を実際に入力するよりも、軸設定をドラッグして移動する方がユーザーにとって簡単ではないでしょうか?
Names Default To Here( 1 );
//DataPath = "C:\Program Files (x86)\SAS\JMP\11\Samples\Data\Variability Data\Wafer.jmp";
myTable = Open( "$SAMPLE_DATA\Variability Data\Wafer.jmp" );
Param = "Y";
Lim1 = 40;
Lim2 = 160;
FrameSize_X = 775;
FrameSize_Y = 200;
MyWindow = New Window( "Window Controls",
gr = MyTable << Variability Chart(
Y( :Name( "Y" ) ),
X( :Operator, :Wafer ),
Max Iter( 100 ),
Std Dev Chart( 1 ),
Show Range Bars( 0 ),
Show Grand Median( 0 ),
Std Dev Chart( 0 ),
Points Jittered( 1 ),
Show Box Plots( 1 ),
Automatic Recalc( 1 ),
SendToReport(
Dispatch(
{"Variability Chart for Y"},
"2",
ScaleBox,
{Min( Lim1 ), Max( Lim2 ), Inc( Abs( Lim2 - Lim1 ) / 10 ), Minor Ticks( 0 ),
Show Major Grid( 1 ), Show Minor Grid( 1 ), Inside Ticks( 1 )}
),
Dispatch( {"Variability Chart for Y"}, "Y", TextEditBox, {Set Text( Param )} ),
Dispatch(
{"Variability Chart for Y"},
"Variability Chart",
FrameBox,
{Frame Size( FrameSize_X, FrameSize_Y ), ,
Row Legend(
Name( "Operator" ),
Color( 1 ),
Color Theme( "JMP Default" ),
Marker( 0 ),
Marker Theme( "" ),
Continuous Scale( 0 ),
Reverse Scale( 0 ),
Excluded Rows( 0 )
)}
),
Dispatch(
{"Variability Chart for Y"},
"Varability Std Chart",
FrameBox,
{Frame Size( FrameSize_X, FrameSize_Y )}
)
)
),
Panel Box( "1/ Start...",
g3 = V List Box(
H List Box(
Text Box( "Lim 1" ),
n1 = Number Edit Box(
Lim1,
5,
<<SETFUNCTION></SETFUNCTION>Re: Global Box を介して軸制限を更新する方法問題は、グラフの作成時に軸を設定するためにグローバル変数が使用されますが、その後、グラフはグローバル変数と関係がないことです。
探している対話機能を作成する方法はいくつかあります (ここにいる誰かがプロトタイプを提供できると確信しています) が、見落とさないでください。組み込みのインタラクティブ機能JMPのすべてのグラフの軸。 軸の上にカーソルを置くだけで、カーソルが手の形に変わり、クリック アンド ドラッグして軸を変更できます。

これを教えることで、ユーザーに素晴らしいサービスを提供できます。そうすれば、あなたが作成して便利なテキスト ボックス コントロールを提供するグラフだけでなく、JMP で表示されるすべてのグラフを管理できるようになります。