你好,
我想通過全局框控製圖形 Y 軸的界限(以允許用戶快速更改界限而無需雙擊軸屬性...)。
在附帶的腳本中,我創建了一個窗口和一個圖形。 然後我添加了 2 個我初始化的全局框(Lim1 和 Lim2)。
生成圖形後,我修改了 Lim1 和 Lim2 的值,但圖形軸沒有相應更新……我看不出我做錯了什麼。
有人可以幫忙嗎?
謝謝。
我遇到了你的問題,試圖做一些非常相似的事情(通過許多圖表上的數據設置軸限制,這樣就不會錯過異常值)。 我通過將軸限制設置為要評估的表達式來解決它(即等於最小值 - 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 年,但它可能會幫助其他有類似問題的人。
尼爾森,傑夫,
我理解您的推理:使用坐標軸的交互式平台(拖動、移動……)確實非常有用……但是出於幾個原因,它對我沒有幫助:
- 我將生成的大多數圖表都將包含異常值,這些異常值的值將遠遠高於其餘人口。 在這種情況下,交互式解決方案非常耗時且痛苦......
- 我打算在一個窗口中生成大約 30 個圖表:您可以想像以交互方式更改 30 個圖表不是一種選擇。用一個或幾個框來設置所有值更省時。
無論如何,我看到 Nelson 的解決方案運行良好。 它看起來很複雜:我必須詳細查看已完成的工作。
多謝。
我稍微改變了格式,只是因為我不確定一切都在做什麼。 但是,下面是我通常如何處理您質疑的項目的示例。 我更大的問題是,對於用戶來說,拖動和移動軸設置是否比實際輸入最小值和最大值更簡單?
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>問題是全局變量用於在創建圖形時設置軸,但之後圖形與全局變量沒有任何關係。
有多種方法可以創建您正在尋找的交互性(我相信這裡有人可以提供原型)但請不要忽視內置交互性JMP 中每個圖形的軸。 您所要做的就是將鼠標懸停在軸上,光標將變成一隻手,您可以單擊並拖動來更改軸。

通過向用戶傳授這些知識,您將為他們提供出色的服務。這樣,他們就可以控制他們在 JMP 中看到的每個圖表,而不僅僅是您為他們創建的圖表,並為他們提供方便的文本框控件。