用於編輯腳本的腳本我有一個腳本,它採用標準等高線圖輸出並將圖表重新排列成列。
來自

到

文字方塊的放置導致腳本失敗。
有其他方法可以得到結果嗎?如果沒有,我可以以某種方式調整當前腳本來對其進行排序嗎?我想知道父腳本是否可以在子腳本上執行查找/替換以執行一些調整?
clear Globals();
Delete Symbols();
window = Get Window List();
wName = window << Get Window Title;
nWindows = N Items( window );
For( i = nWindows, i > 0, i--,
If( Contains( wName[i], "Contour Plot" ),
obj = window[i]["Contour Plot?"] << Get Scriptable Object;
Show(obj);
obj << Save Script for All Objects;
obj << Close Window;
Break();
);
);
spt = Window( "Script Window" );
spt << Bring Window To Front;
spt2 = spt[Script Box(1)];
spt2 << Get Line Text( 3 );
spt2 << Set Line Text (3, "Line Up Box( N Col( 3 ), Spacing( 2 ),");
spt2 << run();
spt2 << Close Window;
自動化和腳本編寫回覆:編輯腳本的腳本如果您可以使用 JMP18,您只需從最高等級的紅色三角形修改佈局即可

我無法再存取 JMP17,並且不確定是否可以在 JMP18 中獲得類似的結果來測試不同的選項,但您可以考慮這些文字方塊(將 ncol 增加到 6 並隱藏它們/將 ncol 保留為3 並刪除它們) 。您還可以確定哪一列用作 by 列,並使用該資訊重建平台,而不使用 By(多次運行並根據需要設定格式)。
回覆:編輯腳本的腳本current report()["Conto?"]
謝謝,非常有用:)
回覆:編輯腳本的腳本您可以收集OutlineBoxes的腳本,將每個(其中資訊+繪圖)封裝在V 列錶框中,並透過Lineup Box排列V 列錶框:
// ask every Outline Box for a scriptable object
obs = (current report() << xpath("//OutlineBox")) << get scriptable object;
// ask the scriptable objects for a script
scripts = obs << get Script;
// prepare a template LineUp Box
myExpr = Expr( Line Up Box( N Col( 3 ), Spacing( 2 )));
// wrap the scripts with V List Box and put them into the template
For each({script}, scripts,
Eval (Substitute(Expr(Insert Into(myExpr, Expr(V list Box (_content_)))), Expr(_content_), Name Expr(script)))
);
// use the template in a new window
New Window("overview", myExpr);
回覆:編輯腳本的腳本使用...所有物件的腳本更接近原始方法:
// there is no
// myScript = (current report()[OutlineBox(1)] << get scriptable object) << get Script for All Objects;
// : (
(current report()[OutlineBox(1)] << get scriptable object) << save Script for All Objects;
sw = Window( "Script Window" );
myScript = Parse(sw[Script Box(1)] << get text);
//--------------------------
<BR />// prepare a Template for the Line Up Box
myExpr = Expr( Line Up Box( N Col( 3 ), Spacing( 2 )));<BR />
// take the V list Box - it contains the Countour Plot commands
myScript = (Extract Expr(myScript, V List Box (Wild List())));
// cycle through Contour Plot commands, "wrap" with V List Box and insert into template
For each({command}, Name Expr(myScript), // an I-DONT-CARE of VLBs
wrapped = Insert (Expr(V list Box ()), Name Expr(command));
Insert Into(myExpr, Name Expr(wrapped))
);
// generate the report
New Window("overview", myExpr);
非常感謝For Each函數的程式設計師!
精彩的 : )
它適用於任何表達式,而不僅僅是列表、關聯數組和矩陣

回覆:編輯腳本的腳本我做的有點不同。我從半導體能力數據表生成了等值線圖,然後運行以下腳本
Clear Globals();
Delete Symbols();
window = Get Window List();
wName = window << Get Window Title;
nWindows = N Items( window );
For( i = nWindows, i > 0, i--,
If( Contains( wName[i], "Contour Plot" ),
obj = window[i]["Contour Plot?"] << Get Scriptable Object;
Break();
)
);
script = Char( obj << get bygroup script );
obj << Close Window;
Eval( Parse( "New Window(\!"Contours\!",lineupbox(ncol(3), spacing(2)," || script || "));" ) );
得到這個輸出

回覆:編輯腳本的腳本啊,對了, get bygroup script()已經在那裡了。事實上,這樣比較容易:)
(current report()["Contour?"] << get scriptable object) << get by group script
是相當健壯的。
它適用於 JMP17(談論第一個圖)

...和 JMP18(與集團平台對話):

如果使用report指令的回傳值,則要小心讓腳本只取得1x:
cp =Contour Plot( ... ,By() ); // returns a list
//cp << get script; // 1 script per plot (N times, message sent to a list)<BR />// cp << get bygroup script; // returns the by group Script N times (message sent to a list)
cp[1] << get bygroup script; // 1x :)</img>
回覆:編輯腳本的腳本
@hogi寫道:
……相當穩健。它與 JMP17(與第一個圖表對話)...和 JMP18(與群組平台對話)配合使用
哦,這句話只是指如何取得groupby腳本的方式:
(current report()["Contour?"] << get scriptable object) << get by group script
不是為了完整的事情......
在 JMP 18 及更高版本中,腳本返回GroupPlatform - 且Lineup Box無法再控制佈局。
然後你可以跳過這個外部部分並直接使用GroupPlatform來控制佈局( @jthi提到的紅色三角形選項)。
透過陣容框的樹狀結構(按腳本分組)

[選定的大綱框 = 第一個圖]
透過前面的方法的樹狀結構:
