設定圖形生成器圖表的標題我在 JMP 18 中編寫了一個腳本,它使用「圖形產生器」、「擬合組」創建 3 行折線圖。基本上,這些表包含多個“生物反應器”中多個“時間點”內“分析物”的測量值。在 JMP 18 中,我為每個圖表提供了一個標題,但使用 JMP 17 的同事發現標題遺失,這使得圖表毫無意義。我完全被難住了!關於添加標題有什麼建議嗎?
這是腳本:
newWindow = New Window(reportName, tb = Tab Box());
//loop through the dataTables and add tab page box for each with a local data filter for dilution factor on left, and line charts on the right
for( i = 1, i <= NItems(dataTables), i++,
tb << Add(
Tab Page Box(
Title(dataTables[i] << get name),
Data Filter Context Box(
H List Box(
dataTables[i] << Data Filter(
Local,
Add Filter( columns( :Dilution Factor, :Type ) ),
Mode( Select( 1 ), Show( 1 ), Include( 1 ) )
),
V List Box(
dataTables[i] << Fit Group(
Graph Builder(
Size( 300, 300 ),
Show Control Panel( 0 ),
Variables(
X( :Time point ),
Y( :"Mean(Value)"n ),
Overlay( :Vessel )
),
Elements( Line( X, Y, Legend( 20 ) ) ),
By( :Analyte )
),
<<{Arrange in Rows( 3 )}
)
)
)
)
)
)
);
tb << set selected(1);In JMP 17 the title highlighted with the red arrow is missing for each chart:
自動化和腳本編寫回覆:設定圖形產生器圖表的標題為了排除首選項中的奇怪設置,您可以比較以下輸出:
Names Default To Here( 1 );
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
New Window( "test",
dt << Fit Group(
Graph Builder(
Ignore Platform Preferences(1), // next step: disable this line
Size( 300, 300 ),
Show Control Panel( 0 ),
Variables( X( :height ), Y( :weight ), Overlay( :sex ) ),
Elements( Line( X, Y, ) ),
By( :age )
),
<<{Arrange in Rows( 3 )}
)
);
下一步:停用該線路並再次檢查。
如果範例資料集沒有問題,我們必須在您的資料中找到問題。
-> 可以分享嗎?
回覆:設定圖形產生器圖表的標題您的資料過濾器在 JMP17 中破壞了它
Names Default To Here( 1 );
dts = {};
Insert Into(dts, Open("$SAMPLE_DATA/Big Class.jmp"));
Insert Into(dts, Open("$SAMPLE_DATA/Big Class Families.jmp"));
nw = New Window("", tb = Tab Box());
For(i = 1, i <= N Items(dts), i++,
tb << Add(
Tab Page Box(Title(dts[i] << get name),
Data Filter Context Box(
H List Box(
/*dts[i] << Data Filter(
Local,
Add Filter(
columns(:sex)),
Mode(Select(1), Show(1), Include(1))
),*/
V List Box(
dts[i] << Fit Group(
Graph Builder(
Size(300, 300),
Show Control Panel(0),
Variables(X(:height), Y(:weight), Overlay(:sex)),
Elements(Line(X, Y, )), By(:age)
),
<<{Arrange in Rows(3)}
)
)
)
)
)
)
);
如果您想使用 << Fit Group (不太確定是否應該使用它,因為它不適用於圖形產生器,即使它有效,您也沒有什麼選擇:在建立後修復標題或以不同的方式建立它們。
這很可能不是很強大,但可以讓您了解您可以做什麼(使用列中的值而不是依賴Where表達式很可能是更強大的選項)
Names Default To Here( 1 );
dts = {};
Insert Into(dts, Open("$SAMPLE_DATA/Big Class.jmp"));
Insert Into(dts, Open("$SAMPLE_DATA/Big Class Families.jmp"));
nw = New Window("", tb = Tab Box());
For(i = 1, i <= N Items(dts), i++,
tb << Add(
Tab Page Box(Title(dts[i] << get name),
Data Filter Context Box(
H List Box(
dts[i] << Data Filter(
Local,
Add Filter(
columns(:sex)),
Mode(Select(1), Show(1), Include(1))
),
V List Box(
dts[i] << Fit Group(
Graph Builder(
Size(300, 300),
Show Control Panel(0),
Variables(X(:height), Y(:weight), Overlay(:sex)),
Elements(Line(X, Y, )), By(:age)
),
<<{Arrange in Rows(3)}
)
)
)
)
)
)
);
wait(0);
If(Word(1, JMP Version(), ".") == "17",
gb_obs = nw << XPath("//OutlineBox[@helpKey = 'Graph Builder']");
For Each({gb_ob}, gb_obs,
gb = gb_ob << Get Scriptable Object;
s = gb << get script;
w = Extract Expr(s, Where(Wild List()));
a = Substitute(Char(Arg(w, 1)), "==", "=");
gb << Title("Graph Builder " || Substr(a, 2))
);
);
編輯:如果使用資料過濾器,標題將被破壞
回覆:設定圖形產生器圖表的標題對於不同版本使用單獨的方法可能是最簡單的方法,因為 JMP18 中按列的工作方式已更改,並且並非所有方法都適用
Names Default To Here( 1 );
dts = {};
Insert Into(dts, Open("$SAMPLE_DATA/Big Class.jmp"));
Insert Into(dts, Open("$SAMPLE_DATA/Big Class Families.jmp"));
nw = New Window("", tb = Tab Box());
For(i = 1, i <= N Items(dts), i++,
tb << Add(
Tab Page Box(Title(dts[i] << get name),
Data Filter Context Box(
H List Box(
dts[i] << Data Filter(
Local,
Add Filter(
columns(:sex)),
Mode(Select(1), Show(1), Include(1))
),
If(Word(1, JMP Version(), ".") == "17",
Lineup Box(N Col(3),
gb = Graph Builder(
Size(300, 300),
Show Control Panel(0),
Variables(X(:height), Y(:weight), Overlay(:sex)),
Elements(Line(X, Y, )), By(:age)
)
)
,
gb = Graph Builder(
Size(300, 300),
Group Options(Layout("Arrange in Rows", N Across(3))),
Show Control Panel(0),
Variables(X(:height), Y(:weight), Overlay(:sex)),
Elements(Line(X, Y, )), By(:age)
)
)
)
)
)
)
);
如果您希望使用者能夠更改每行中的項目數,您可以新增大綱框和腳本。
回覆:設定圖形產生器圖表的標題正如@jthi指出的,數據過濾器是差異的來源之一。 Fit Group 回應資料過濾器的方式在 JMP 18+ 中發生了變化。
JMP 17 和 JMP 18 之間的另一個重大差異是新增了按組的群組平台。在 JMP 18 中,這個新平台具有與 Fit Group 類似的佈局選項。在 JMP 17 中,您可以將佈局的「擬合組」替換為「排列框」。將兩者結合在一起,這個腳本在以下兩個方面對我來說都相當有效:
dataTables = EvalList({
Open("$SAMPLE_DATA/Big Class.jmp"),
Open("$SAMPLE_DATA/Big Class Families.jmp")
});
newWindow = New Window("Reports", tb = Tab Box());
//loop through the dataTables and add tab page box for each with a local data filter for dilution factor on left, and line charts on the right
for( i = 1, i <= NItems(dataTables), i++,
tb << Add(
Tab Page Box(
Title(dataTables[i] << get name),
Data Filter Context Box(
H List Box(
dataTables[i] << Data Filter(
Local,
Add Filter( columns( :sex ) )
),
V List Box(
Line Up Box(NCol(3),
dataTables[i] << Graph Builder(
Size( 300, 300 ),
Show Control Panel( 0 ),
Variables(
X( :height ),
Y( :weight )
),
Elements( Line( X, Y, Legend( 20 ) ) ),
By( :age ),
Group Options( Layout( "Arrange in Rows", N Across( 3 ) ) )
)
)
)
)
)
)
)
);
tb << set selected(1);
17/18 之間的佈局會有所不同 - 在 JMP 17 中,LineUpBox 管理網格,而在 JMP 18 中,Group Platform 管理佈局,並且所有 LineUpBox 只有 1 個子項目。
您的另一個選擇可能是在圖形產生器中使用“Wrap”角色,而不是使用“By”,但這會為您提供共享的軸和圖例,這是您可能不想要的。
-和
回覆:設定圖形產生器圖表的標題另一個選擇:讓同事更新到 JMP18.1 並使用 JMP18 引入的新頁面選項:)
給他的獎勵:
尋找不再有問題 - 或找不到?

Names Default To Here( 1 );
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
Graph Builder(
Variables(
X( :height ),
Y( :weight ),
Page( :age, Levels per Row( 3 ) ),
Overlay( :sex )
),
Elements( Points( X, Y ), Smoother( X, Y ) )
);
回覆:設定圖形產生器圖表的標題感謝您對此的幫助 - 在 JMP 17 中對其進行測試花了幾天時間,但它運行良好。
回覆:設定圖形產生器圖表的標題非常感謝這個建議。我最終為 JMP 17 和 JMP 18 使用了 Line Up Box