如何使用篩選器更改處理程序與圖形產生器中的頁面選項一起使用?附上數據表示例。下面的腳本嘗試在圖形產生器的新「頁面」中繪製透過本機資料過濾器選擇的每個參數。目前,每次透過本機資料篩選器選擇新的「參數」時,y 軸標題都會顯示為「中位數」。
當選擇新參數並將其繪製在新「頁面」上時,我希望參數名稱成為 y 軸標題。
我嘗試使用過濾器更改處理程序來執行此操作,但我的腳本不太有效。我想我需要每次選擇新參數時更新下面的索引i或可能有另一種方法。任何方向都會有用。
XPath( "//TextEditBox" ))[i]
這是我的腳本
Names Default To Here (1);
Clear Log ();
gb = Graph Builder(
Size( 531, 325 ),
Show Control Panel( 0 ),
Variables( X( :PartID ), Y( :Median ), Page( :Parameter ), Color( :TestStage ) ),
Elements( Points( X, Y, Legend( 34 ) ) ),
Local Data Filter(
Conditional,
Add Filter(
columns( :TestStage, :Parameter ),
Where( :TestStage == {"A", "B"} ),
Where( :Parameter == {"BKDVoltage", "Capacitance"} )
)
),
SendToReport( Dispatch( {}, "graph title", TextEditBox, {Set Text( "myTitleGoesHere" )} ) )
);
ldf = Current Report()["Local Data Filter"] << get scriptable object;
changeTitle = Function( {this},
print(this);
ldfText = Regex(ldf << get where clause(),"\(?\s*(:Parameter == .*?)\)","\1");
if(ismissing(ldfText),ldfText = " Selected Test Parameter ");
(Report( gb ) << XPath( "//TextEditBox" ))[6] << Set Text(ldfText);
);
fsh = ldf << Make Filter Change Handler(changeTitle());自動化和腳本編寫視窗回覆:如何使用篩選器變更處理程序與圖形產生器中的頁面選項一起使用?您可以嘗試讓您的 XPath 查詢更加準確(探索 XML 和屬性樹)。像這樣的東西可能會起作用
Report(gb) << XPath("//GraphBuilderTitleBox/TextEditBox[text()='Median']")回覆:如何使用篩選器變更處理程序與圖形產生器中的頁面選項一起使用?@jthi這部分有效,但所有選定的參數在所有繪製的圖表中都顯示為 Y 軸標題。
我變了
(Report( gb ) << XPath( "//TextEditBox" ))[6] << Set Text(ldfText);
到
(Report(gb) << XPath("//GraphBuilderTitleBox/TextEditBox[text()='Median']")) << Set Text(ldfText);並得到

只需要繪製的參數名稱作為每個圖表上的 Y 軸標題。
回覆:如何使用篩選器變更處理程序與圖形產生器中的頁面選項一起使用?一個選擇是解析 get where 子句
ldfText = Regex(ldf << get where clause(),"\(?\s*(:Parameter == .*?)\)","\1");
分成單獨的項目並循環這些項目並在循環中設定標題。
編輯:
這也需要對 y 軸文字編輯框引用的部分進行一些修改。以下是一個可能有效的選項
Names Default To Here (1);
dt = Open("$DOWNLOADS/exampleSummaryTable.jmp");
gb = dt << Graph Builder(
Size( 531, 325 ),
Show Control Panel( 0 ),
Variables( X( :PartID ), Y( :Median ), Page( :Parameter ), Color( :TestStage ) ),
Elements( Points( X, Y, Legend( 34 ) ) ),
Local Data Filter(
Conditional,
Add Filter(
columns( :TestStage, :Parameter ),
Where( :TestStage == {"A", "B"} ),
Where( :Parameter == {"BKDVoltage", "Capacitance"} )
)
),
SendToReport( Dispatch( {}, "graph title", TextEditBox, {Set Text( "myTitleGoesHere" )} ) )
);
update_title = Function( {this},
param_where = Regex(local_filter << get where clause(),"\(?\s*(:Parameter == .*?)\)","\1");
param_where_list = Words(param_where, "|");
tebs = Report(gb) << XPath("//GraphBuilderTitleBox/TextEditBox");
y_tebs= tebs[4::N Items(tebs)::2];
If(N Items(y_tebs) != N Items(param_where_list),
return(); // some problem
);
For Each({where_str, idx}, param_where_list,
title = Trim Whitespace(Word(-1, where_str, "="));
Substitute Into(title, "\!"", "");
y_tebs[idx] << Set Text(title);
);
);
local_filter = Current Report()["Local Data Filter"] << get scriptable object;
filter_handler = local_filter << Make Filter Change Handler(update_title());
回覆:如何使用篩選器變更處理程序與圖形產生器中的頁面選項一起使用?@jthi除了初始圖表(在過濾器更改處理程序孩子之前)仍然具有中位數作為 y 軸標題之外,這有效。有任何解決這個問題的方法嗎?

回覆:如何使用篩選器變更處理程序與圖形產生器中的頁面選項一起使用?在建立過濾器更改處理程序之前觸發該函數一次
update_title(local_filter);

回覆:如何使用篩選器變更處理程序與圖形產生器中的頁面選項一起使用?@jthi好的。注意到觸發器。如果我的參數名稱中有下劃線(我的實際資料中的參數名稱中有幾個底線),則該腳本將無法運作。參數名稱中附有底線的範例資料表。下面的腳本在附加資料表的Words函數上引發錯誤。
還必須評論Size() ,如果沒有它,初始圖表看起來很奇怪。
Names Default To Here (1);
clear log ();
dt = Current Data Table();
gb = dt << Graph Builder(
//Size( 531, 525 ),
Show Control Panel( 0 ),
Variables( X( :PartID ), Y( :Median ), Page( :Parameter ), Color( :TestStage ) ),
Elements( Points( X, Y, Legend( 34 ) ) ),
Local Data Filter(
Conditional,
Add Filter(
columns( :TestStage, :Parameter ),
Where( :TestStage == {"A", "B"} ),
Where( :Parameter == {"BKDVoltage_1", "Capacitance_1"} )
)
),
SendToReport( Dispatch( {}, "graph title", TextEditBox, {Set Text( "myTitleGoesHere" )} ) )
);
update_title = Function( {this},
param_where = Regex(local_filter << get where clause(),"\(?\s*(:Parameter == .*?)\)","\1");
param_where_list = Words(param_where, "|");
tebs = Report(gb) << XPath("//GraphBuilderTitleBox/TextEditBox");
y_tebs= tebs[4::N Items(tebs)::2];
If(N Items(y_tebs) != N Items(param_where_list),
return();
);
For Each({where_str, idx}, param_where_list,
title = Trim Whitespace(Word(-1, where_str, "="));
Substitute Into(title, "\!"", "");
y_tebs[idx] << Set Text(title);
);
);
local_filter = Current Report()["Local Data Filter"] << get scriptable object;
update_title(local_filter);
filter_handler = local_filter << Make Filter Change Handler(update_title());回覆:如何使用篩選器變更處理程序與圖形產生器中的頁面選項一起使用?問題很可能是您將多重回應列作為參數


回覆:如何使用篩選器變更處理程序與圖形產生器中的頁面選項一起使用?@jthi謝謝,從參數屬性中刪除多個回應確實使腳本適用於範例資料(exampleSummaryTable2)。但我的實際資料集仍然存在問題,其中沒有具有多重回應集的列(遺憾的是無法共享實際資料)。還能是什麼?

回覆:如何使用篩選器變更處理程序與圖形產生器中的頁面選項一起使用?這沒有返回它應該返回的結果
param_where = Regex(local_filter << get where clause(),"\(?\s*(:Parameter == .*?)\)","\1");
原因之一可能是您沒有在本機資料篩選器中選擇任何值。您可以新增對缺失值的額外檢查,如果 param_where 缺失,則儘早從函數返回而不執行任何操作(或者更確切地說,您將所有值作為參數,並且必須以其他方式獲取參數值)
回覆:如何使用篩選器變更處理程序與圖形產生器中的頁面選項一起使用?@jthi在實際資料情況下,如果我註解掉
update_title(local_filter);
如
local_filter = Current Report()["Local Data Filter"] << get scriptable object;
//update_title(local_filter);
filter_handler = local_filter << Make Filter Change Handler(update_title());
一切都按預期工作,除了初始圖表沒有正確的 Y 軸標題。只有在選擇另一個 TestStage 後,Y 軸標題才會正確。我的位置是
update_title(local_filter);
正確還是應該放在其他地方?