您好,我對 JMP 比較陌生,正在使用二元繪圖平台從資料集中產生二元繪圖清單。我開始使用自動生成的 JSL 腳本向所有繪圖添加相同的軸和圖例設置,如下所示:
Bivariate(
Y( :PeakValue ),
X( :"Duration (s)"n ),
By( :Checker Name ),
SendToReport(
Dispatch(
{},
"Duration (s)",
ScaleBox,
{Scale( "Log" ), Format( "Engineering SI", 9 ), Min( 0.0000000001 ),
Max( 0.001 ), Inc( 1 ), Minor Ticks( 1 ),
Label Row(
{Show Major Grid( 1 ), Show Minor Grid( 1 ), Show Minor Labels( 0 )}
)}
),
Dispatch( {}, "PeakValue", ScaleBox, {Label Row( Show Major Grid( 1 ) )} ),
Dispatch(
{},
"Bivar Plot",
FrameBox,
{Marker Drawing Mode( "Normal" ),
Row Legend(
Corner,
Color( 1 ),
Color Theme( "JMP Default"(1) ),
Marker( 0 ),
Marker Theme( "" ),
Continuous Scale( 0 ),
Reverse Scale( 0 ),
Excluded Rows( 0 )
)}
)
)
);
正如您在上面看到的,我按“檢查者名稱”列對資料集進行分組。但是,我想透過添加透明 Rect() 圖形物件來擴展此腳本,以為每個散點圖創建可接受的範圍。但是,這些 Rect() 物件的尺寸和位置將根據繪製它的二元圖而有所不同。雙變量圖。這是否容易/合理地合併到我上面的預先生成的腳本中?
謝謝你!
您可以嘗試在 JMP 中以互動方式執行此操作(您很可能必須將 Rect() 值硬編碼到每個散佈圖)。我建議使用帶有循環的 JSL。
您如何建議我將帶有 By( :Checker Name ) 的雙變數函數拆分為具有唯一檢查器名稱的雙變數迴圈?
-雅各布
儲存變數的參考清單:biv = Bivariate( ... )。您可以迭代該列表。您可以查詢大綱框以確定按變數級別,或使用 Summarize() 函數取得群組清單。它將按照相同的順序。
我正在考慮使用關聯數組將矩形物件分配給“檢查器名稱”列中的每個可能的鍵。您能否提供一個迭代輪廓框列表並向每個輪廓框添加 rect() 物件的範例?我對 Summarize 功能也不熟悉。
我假設您使用的是 JMP18。當您使用 By 時,您會得到一個平台列表,然後您可以對其進行循環。然後就是弄清楚如何獲取標題等(或者您可以使用 Summarize,在這種情況下我會以稍微不同的方式建立參考列表)。如果很難弄清楚循環,您可以先建立單個雙變量平台並使其工作,然後擴展到循環
Names Default To Here(1);
dt = Open("$SAMPLE_DATA/Big Class.jmp");
aa_rect = Associative Array();
aa_rect["M"] = Expr(Rect(80, 60, 120, 55));
aa_rect["F"] = Expr(Rect(90, 65, 140, 55));
bivs = dt << Bivariate(Y(:height), X(:weight), By(:sex));
For Each({cur_biv}, bivs,
ob = Report(cur_biv)[OutlineBox(1)];
obtitle = ob << get title;
show(obtitle);
category = Word(-1, obtitle, "=");
fb = ob[FrameBox(1)];
Eval(EvalExpr(
fb << Add Graphics Script(
Pen Color("Blue");
Pen Size(2);
Expr(aa_rect[category]);
)
));
);
