具有使用者指定設定的所有選定列的變異圖循環大家好,
我對 JMP 腳本相當陌生。我需要一點小小的支持。我現在正在設計一個執行以下操作的應用程式
步驟1:當使用者點擊按鈕時。變異性圖表視窗打開,我們在其中指定用於繪圖的所有列、x 軸分組以及當前活動資料表中的所有設置
obj = dt << 變異圖();
步驟 2:我想在單獨的變數中取得使用者指定的項目,例如
col_list = obj 中選取的所有欄位的列表
x_grouping = 指定的所有 x 變數
..對於Variability Chart()的所有參數
步驟 3:提取所有資訊後.. 現在我將為每個列變數運行一個循環,但是
對於 i==1 (第一列),我將在報告中繪製圖表...使用者將進行一些更改(例如添加圖例指定背景顏色等)
現在我將將此範本(此圖中的所有設定)套用至所有列,並在新視窗中為每列建立報告。
我面臨以下問題:步驟 2 和步驟 3 如何提取 Variability Chart() 的參數並執行操作
PS:我還計劃對其他圖表類型並行實現這一點\
請指導
自動化和腳本編寫回覆:具有使用者指定設定的所有選定列的變異圖循環最簡單的選擇是自行建立變異性圖表啟動器 UI。如果您不想這樣做,您可以使用 << Get Script 來取得已啟動的腳本並解析其中的列
Names Default To Here(1);
dt = Open("$SAMPLE_DATA/Big Class.jmp");
dt << Distribution();
dist = Current Report()[OutlineBox(1)] << Get Scriptable Object;
dist << get script;回覆:具有使用者指定設定的所有選定列的變異圖循環步驟1
obj = dt << Variability Chart();
將開啟「變異性圖表」對話框,當使用者按一下「確定」時,此時將執行所有圖表。
但是,在執行變異性圖表後,您可以查詢從變異性圖表平台返回的腳本並取得 X 和 Y
obj = Variability Chart( Y( :NPN1, :PNP1 ), Model( "Main Effect" ), X( :SITE ) );
theScript = char(obj << get script);
theYsList = words(word(1,substr(theScript,contains(theScript,"Y(")+2),")"),",");
theXsList = words(word(1,substr(theScript,contains(theScript,"X(")+2),")"),",");
對於步驟 2,您可以直接查詢顯示的圖表並取得各種設定。查看腳本索引,了解如何取得幀大小、最小和最大以及各個軸的增量等,您需要將其應用於變異性圖表的其他應用程式。
我認為你建議的方法弊大於利。我建議您不要使用“變異性圖表”對話框,而是創建自己的對話框,類似於“變異性圖表”對話框,然後您將獲得預先需要的所有信息,然後步驟 2 和 3 將變得更容易實施。
有關如何建立您自己的新 window.dialog 框的信息,請參閱腳本指南
回覆:具有使用者指定設定的所有選定列的變異圖循環@txnelson非常感謝您的見解。實際上我的主要目標是為每一列都有單獨的報告視窗。例如,如果我為 Y 選擇 5 列,並且在報告中我們會得到所有 5 個參數的圖。如果我在大綱框中的第一個圖表中添加圖例、更改顏色等,我想編寫一個腳本來分隔單獨視窗中的每個圖,同時也使用我對第一個圖所做的更改。有沒有辦法實現這一點。請建議
回覆:具有使用者指定設定的所有選定列的變異圖循環這是處理我認為您想做的事情的一種方法的示例。該腳本非常不完整,需要添加大量異常處理,但它應該為您提供一個起點。
Names Default To Here( 1 );
dt = Open( "$SAMPLE_DATA/semiconductor capability.jmp" );
nw = New Window( "Col List Box Example",
modal,
H List Box(
Col List Box( all, width( 250 ) ),
V List Box(
Lineup Box( N Col( 2 ),
ybb = Button Box( "Y Col" ),
Y = Col List Box( Show( "run" ) ),
xbb = Button Box( "X Col" ),
x = Col List Box(),
Button Box( "Cancel",
nw << close window;
Throw();
),
Button Box( "OK",
ycols = y << get items;
xcols = x << get items;
)
)
)
)
);
// ycols and xcols now have been populated and you can then bring up one graph and
// let the user make the changes
nw = New Window( "Graphical Settings",
modal,
vc = dt << Variability Chart( Y( ycols[1] ), Model( "Main Effect" ), X( xcols[1] ) );
vc << on close(
// In the closing of the Variability Chart capture the script
theScript = Char( vc << get script );
);
);
// Run all of the graphs
For Each( {theCol, index},ycols, Eval( Parse( Substitute( theScript, ycols[1], theCol ) ) ) );