通過變量更改行圖例我正在嘗試自動化一些雙變量圖,但在嘗試更改行圖例時遇到了問題。
這是我正在嘗試做的一個例子:
Open("$SAMPLE_DATA/Big Class.jmp");
variables = {"age", "sex"};
for(v=1,v<=nitems(variables),v++,
::var = variables[v];
biv = Bivariate( Y( :height), X( :weight),
group by(as column(::var)),
Fit Spline( 1, Standardized, {Line Width( 2 )} ));
Report( biv )[Frame Box(1)] << Row Legend( ::var, color(1), marker(1));
);我的預期輸出將是兩個具有相同圖的窗口 - 一個具有樣條擬合和年齡圖例,另一個具有樣條擬合圖例用於性別。 樣條擬合按預期工作,但行圖例命令無法識別我的變量。 我錯過了什麼?
提前致謝!
回复:通過變量更改行圖例很有幫助的解釋。 謝謝!
回复:通過變量更改行圖例差異的原因是因為 2 個不同語句的要求。您提到的 Fit Spline 沒有變量引用,所以我假設您實際上是在質疑為什麼 Group By 不需要 Eval()。推理是由 Group By 和 Row Legend 的要求組成的。Group By 是一個非常簡單的語句,其靈活性非常有限。它知道必須指定一列。事實上,即使沒有 As Column() 函數,代碼也能很好地運行。轉向行圖例,這個元素可以採用許多不同的格式,並且沒有 Eval() 解析器將嘗試使用 ::var 的實際字符串作為信息的一部分,並且 ::var 不是您想要解析的, ::var 的值是您要解析的值。
回复:通過變量更改行圖例謝謝!
幫助我理解變量評估的第二個問題 - 為什麼樣條擬合在沒有 eval(); 的情況下工作? 什麼時候需要評估變量,什麼時候不需要評估?
回复:通過變量更改行圖例你只需要 Eval() ::Var 變量
Open("$SAMPLE_DATA/Big Class.jmp");
variables = {"age", "sex"};
for(v=1,v<=nitems(variables),v++,
::var = variables[v];
biv = Bivariate( Y( :height), X( :weight),
group by(as column(::var)),
Fit Spline( 1, Standardized, {Line Width( 2 )} ));
Report( biv )[Frame Box(1)] << Row Legend( eval(::var), color(1), marker(1));
);