Wie verwende ich den Filter Change Handler, um mit der Seitenoption im Graph Builder zu arbeiten?Im Anhang finden Sie eine Beispieldatentabelle. Das folgende Skript versucht, jeden über den lokalen Datenfilter ausgewählten Parameter auf einer neuen „Seite“ im Graph Builder darzustellen. Derzeit wird der Titel der Y-Achse jedes Mal als „Median“ angezeigt, wenn ein neuer „Parameter“ über den lokalen Datenfilter ausgewählt wird.
Ich möchte, dass der Parametername der Titel der Y-Achse ist, wenn ein neuer Parameter ausgewählt und auf einer neuen „Seite“ dargestellt wird.
Ich habe versucht, dafür den Filterwechsel-Handler zu verwenden, aber mein Skript funktioniert nicht ganz. Ich denke, ich muss den Index i unten jedes Mal aktualisieren, wenn ein neuer Parameter ausgewählt wird, oder vielleicht gibt es eine andere Möglichkeit. Jede Richtung wird nützlich sein.
XPath( "//TextEditBox" ))[i]
Hier ist mein Skript
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());Automatisierung und SkripterstellungWindowsBetreff: Wie verwende ich den Filter Change Handler, um mit der Seitenoption im Graph Builder zu arbeiten?@jthi Danke. Bei der ersten Überprüfung funktioniert Ihr erstes Skript wie erwartet (auch wenn alles deaktiviert ist). Es gibt in allen Fällen den erwarteten Y-Achsentitel an. Das zweite Skript zeigt in keinem Fall den korrekten Titel der Y-Achse an (zeigt immer den Median als Titel der Y-Achse an).
Ich werde noch etwas Zeit mit den beiden Skripten verbringen und zurückkommen, wenn ich Fragen habe.
Betreff: Wie verwende ich den Filter Change Handler, um mit der Seitenoption im Graph Builder zu arbeiten?Was zurückgegeben wird, kann meiner Erfahrung nach etwas knifflig sein (insbesondere, wenn nichts/alles ausgewählt ist). Als nächstes müssten Sie herausfinden, was in solchen Situationen zu tun ist, und dann sollten Sie in der Lage sein, mein früheres Skript zu ändern.
Im Folgenden finden Sie einige Lösungen für diese ganze Sache, die für mich funktionieren. Ich bin mir nicht sicher, ob die „einfachere“ Lösung in JMP16 funktioniert. Ich würde nicht empfehlen, sich damit zu befassen, bis Sie herausgefunden haben, was Sie in der „Leer“-Situation tun können, damit Sie verstehen, welche Art von Problemen es geben könnte.
Mehr sehen...Names Default To Here(1);
dt = Open("$DOWNLOADS/exampleSummaryTableNoLimsNew.jmp");
gb = dt << Graph Builder(
Size( 571, 174 ),
Show Control Panel(0),
Variables(X(:PartID), Y(:Median), Page(:Parameter), Color(:TestStage)),
Elements(Points(X, Y, Legend(34))),
SendToReport(Dispatch({}, "graph title", TextEditBox, {Set Text("Trend Chart")}))
);
filter_ref = gb << Local Data Filter(
Conditional,
Add Filter(
columns(:TestDate, :Has Limits?, :TestStage, :Parameter),
Where( :Has Limits? == "Yes" ),
Where( :TestStage == "STG5" ),
)
);
Summarize(dt, all_params = By(:Parameter));
filter_ref = (Report(gb) << top parent)[OutlineBox("Local Data Filter")] << Get Scriptable Object;
update_title = Function({this},
cur_rows = filter_ref << Get Filtered Rows;
If(!Is Empty(cur_rows),
visible_parameters = Associative Array(dt[cur_rows, "Parameter"]) << get keys;
, // else, this wasn't solved
visible_parameters = all_params;
);
tebs = Report(gb) << XPath("//GraphBuilderTitleBox/TextEditBox");
y_tebs = tebs[4 :: N Items(tebs) :: 2]; // skip title, subtitle and xaxis?
If(N Items(y_tebs) != N Items(visible_parameters),
Return(0); // some problem
);
gb << inval;
For Each({param_val, idx}, visible_parameters, y_tebs[idx] << Set Text(param_val));
gb << update window;
Return(1);
);
local_filter = Current Report()["Local Data Filter"] << get scriptable object;
update_title(local_filter);
filter_handler = local_filter << Make Filter Change Handler(update_title());
Names Default To Here(1);
dt = Open("$DOWNLOADS/exampleSummaryTableNoLimsNew.jmp");
gb = dt << Graph Builder(
Size( 571, 174 ),
Show Control Panel(0),
Variables(X(:PartID), Y(:Median), Page(:Parameter), Color(:TestStage)),
Elements(Points(X, Y, Legend(34))),
SendToReport(Dispatch({}, "graph title", TextEditBox, {Set Text("Trend Chart")}))
);
filter_ref = gb << Local Data Filter(
Conditional,
Add Filter(
columns(:TestDate, :Has Limits?, :TestStage, :Parameter),
Where( :Has Limits? == "Yes" ),
Where( :TestStage == "STG5" ),
)
);
Summarize(dt, all_params = By(:Parameter));
filter_ref = (Report(gb) << top parent)[OutlineBox("Local Data Filter")] << Get Scriptable Object;
update_title = Function({this},
gb << inval;
page_texts = Report(gb) << XPath("//GraphBuilderGroupBox/text()"); // Not sure if this can be used in JMP16
tebs = Report(gb) << XPath("//GraphBuilderTitleBox/TextEditBox");
y_tebs = tebs[4 :: N Items(tebs) :: 2]; // skip title, subtitle and xaxis?
For Each({page_text, idx}, page_texts,
y_tebs[idx] << Set Text(Word(-1, page_text, "="));
);
gb << update window;
wait(0);
Return(1);
);
local_filter = Current Report()["Local Data Filter"] << get scriptable object;
update_title(local_filter);
filter_handler = local_filter << Make Filter Change Handler(update_title());
Betreff: Wie verwende ich den Filter Change Handler, um mit der Seitenoption im Graph Builder zu arbeiten?@jthi Danke, ich dachte, ich hätte alles überprüft, indem ich alles deaktiviert habe, aber anscheinend nicht. Mir geht es genauso wie dir.
(Gerade überprüft, dieses Problem scheint auch in Ihrem vorherigen Skript vorhanden zu sein, d. h. das Deaktivieren aller Kontrollkästchen führt nicht zur erwarteten Ausgabe)

Betreff: Wie verwende ich den Filter Change Handler, um mit der Seitenoption im Graph Builder zu arbeiten?Wenn Sie an meinem Skript keine Änderungen vorgenommen haben, gibt es immer noch eine Situation, die nicht gelöst ist

Wenn Sie von einer einzelnen Auswahl zu keiner wechseln/Auswahl löschen. Das sollte zuerst gelöst werden
Betreff: Wie verwende ich den Filter Change Handler, um mit der Seitenoption im Graph Builder zu arbeiten?@jthi Ich denke, mir geht es genauso. Siehe unten.
Ist die nächste Aufgabe die Einführung der Funktion zum Ändern des Y-Achsentitels auf jeder neuen Seite?
(Anscheinend müsste sich Ihre bisherige Vorgehensweise jetzt ändern.)


Betreff: Wie verwende ich den Filter Change Handler, um mit der Seitenoption im Graph Builder zu arbeiten?Wenn es mit JMP-Beispieldaten funktioniert, gehen Sie zum einfachsten möglichen Beispiel mit Ihren eigenen Daten über
Names Default To Here(1);
dt = Open("$DOWNLOADS/exampleSummaryTableNoLimsNew.jmp");
gb = dt << Graph Builder(
Size( 571, 174 ),
Show Control Panel(0),
Variables(X(:PartID), Y(:Median), Page(:Parameter), Color(:TestStage)),
Elements(Points(X, Y, Legend(34))),
SendToReport(Dispatch({}, "graph title", TextEditBox, {Set Text("Trend Chart")}))
);
filter_ref = gb << Local Data Filter(
Conditional,
Add Filter(
columns(:TestDate, :Has Limits?, :TestStage, :Parameter),
Where( :Has Limits? == "Yes" ),
Where( :TestStage == "STG5" ),
)
);
Summarize(dt, all_params = By(:Parameter));
filter_ref = (Report(gb) << top parent)[OutlineBox("Local Data Filter")] << Get Scriptable Object;
get_selected_parameters = function({a},
cur_rows = filter_ref << Get Filtered Rows;
If(!Is Empty(cur_rows),
visible_parameters = Associative Array(dt[cur_rows, "Parameter"]) << get keys;
Show(N Items(visible_parameters));
,
Show("Empty..."); // Your problem, you should have all states visible here
);
);
get_selected_parameters(1);
f = filter_ref << Make Filter Change Handler(get_selected_parameters);
Diese Zählungen sollten immer übereinstimmen

Betreff: Wie verwende ich den Filter Change Handler, um mit der Seitenoption im Graph Builder zu arbeiten?@jthi Danke. Ihr letztes Skript funktioniert, wenn ich es ausführe, und die Ergebnisse sind wie erwartet mit JMP-Beispieldaten (gilt für alle Ihre Skripte bisher). Ich habe meine Datentabelle verwendet, weil ich dachte, das Datenformular, das ich habe, könnte mein Problem verursachen.
Ich fürchte, ich bin jetzt etwas verloren angesichts all der verschiedenen Skripte, die auf dem Tisch liegen.
Betreff: Wie verwende ich den Filter Change Handler, um mit der Seitenoption im Graph Builder zu arbeiten?Bleiben Sie bei den einfachen JMP-Beispieldaten und lösen Sie Ihre Probleme einzeln. Zuerst müssen Sie Ihre Probleme definieren. Ich überspringe einige Probleme, die Sie lösen müssen (oder bereits gelöst haben), damit dies funktioniert, und versuche, mich auf das aktuelle Problem zu konzentrieren:
- Auf der obersten Ebene möchten Sie herausfinden, wie Sie die Titel der Y-Achse basierend auf dem Seitennamen aktualisieren
- Sie haben Filter, die beeinflussen, welche Seiten sichtbar sind
- Sie können den Filter auf „Alle“, „Eins“, „Viele“ und „Keine“ einstellen
- Alle und keine sind grundsätzlich gleich (alle Seiten sind sichtbar), müssen jedoch getrennt verwaltet werden
- Wie können Sie mit diesen unterschiedlichen Situationen umgehen? Alle, keiner, einer und viele?
- Wie können Sie mit diesen Situationen innerhalb einer Funktion umgehen, die im Filterwechselhandler verwendet wird?
Bis Sie dieses Problem gelöst haben, macht es keinen Sinn, auf die vollständige Anwendung umzusteigen, die Sie haben (wenn Sie nicht weiterkommen, können Sie zunächst ein separates Problem lösen, falls Sie welche haben). Unten sehen Sie ein Beispielskript. Sie sollten in der Lage sein, die else-Anweisung so zu gestalten, dass sie immer 41 zurückgibt (oder vielmehr eine vollständige Liste der Zustände, wenn Sie N Items() entfernen).
Names Default To Here(1);
dt = Open("$SAMPLE_DATA/Cities.jmp");
gb = dt << Graph Builder(
Size(630, 590),
Show Control Panel(0),
Include Missing Categories(1),
Variables(X(:State)),
Elements(Treemap(X, Legend(4))),
Local Data Filter(
Conditional,
Add Filter(columns(:Region, :POP), Display(:Region, N Items(6)))
)
);
Summarize(dt, all_states = By(:State));
show(N Items(all_states));
filter_ref = (Report(gb) << top parent)[OutlineBox("Local Data Filter")] << Get Scriptable Object;
get_selected_states = function({a},
cur_rows = filter_ref << Get Filtered Rows;
If(!Is Empty(cur_rows),
visible_states = Associative Array(dt[cur_rows, "State"]) << get keys;
Show(N Items(visible_states));
,
Show("Empty..."); // Your problem, you should have all states visible here
);
);
get_selected_states(1);
f = filter_ref << Make Filter Change Handler(get_selected_states);Betreff: Wie verwende ich den Filter Change Handler, um mit der Seitenoption im Graph Builder zu arbeiten?@jthi unter Verwendung meiner Datentabelle exampleSummaryTableNoLimsNew.jmp, Folgendes scheint wie erwartet zu funktionieren (ich habe die Datentabelle und die Ausgaben manuell überprüft). Wie kommt man von hier aus zu meinem eigentlichen Problem, bei dem sich der Datenfilter im Graph Builder befindet? Ich finde assoziative Arrays sehr verwirrend und bitte hier um Hilfe.
Names Default To Here(1);
clear log ();
dt = Current Data Table();
obj = dt << Data Filter(Conditional,
Add Filter(columns(:TestDate, :Has Limits?, :TestStage, :Parameter) ),
Mode(Select(0), Show(0), Include(1))
);
Summarize(dt, all_Parameters = By(:Parameter));
show(all_Parameters);
// Change filter value at this point and run the code below
cur_rows = obj << Get Filtered Rows;
visible_Parameters = Associative Array(dt[cur_rows, "Parameter"]) << get keys;
Show(N Items(all_Parameters), N Items(visible_Parameters));
Betreff: Wie verwende ich den Filter Change Handler, um mit der Seitenoption im Graph Builder zu arbeiten?Die Verwendung von Datentabellen-Subskribierungen ist eine Option
Names Default To Here(1);
dt = Open("$SAMPLE_DATA/Cities.jmp");
obj = dt << Data Filter(
Add Filter(columns(:Region, :POP)),
Mode(Select(0), Show(0), Include(1))
);
Summarize(dt, all_states = By(:State));
show(all_states);
// Change filter value at this point and run the code below
cur_rows = obj << Get Filtered Rows;
visible_states = Associative Array(dt[cur_rows, "State"]) << get keys;
Show(N Items(all_states), N Items(visible_states));Betreff: Wie verwende ich den Filter Change Handler, um mit der Seitenoption im Graph Builder zu arbeiten?@jthi Danke, ich habe versucht zu sehen, welche Zeilen gefiltert werden, und das Skript funktioniert teilweise mit der Datentabelle exampleSummaryTableNoLimsNew.jmp, aber nicht in allen Filterungsfällen.
Ich versuche, die gefilterten Zeilen in der Datentabelle auszuwählen und manuell zu überprüfen, ob sie korrekt sind. Momentan stecke ich fest.
Offensichtlich ist es mein mangelndes Verständnis des Codeflusses, das mich daran hindert, weiter zu debuggen, daher würde ich um weitere Hilfe bitten.
Das untenstehende Skript wurde geändert (in Zeile 28 überprüfe ich es mit get filtered rows ).
Names Default To Here(1);
clear log ();
dt = Current Data Table();
gb = dt << Graph Builder(
Size( 571, 174 ),
Show Control Panel(0),
Variables(X(:PartID), Y(:Median), Page(:Parameter), Color(:TestStage)),
Elements(Points(X, Y, Legend(34))),
SendToReport(Dispatch({}, "graph title", TextEditBox, {Set Text("Trend Chart")}))
);
ldf = gb<<LOCAL data="https://community.jmp.com/" filter=""></LOCAL>Betreff: Wie verwende ich den Filter Change Handler, um mit der Seitenoption im Graph Builder zu arbeiten?Sie könnten einfach ausprobieren, was es macht, wenn Sie es an einen Datenfilter senden.
Hier ist ein Beispiel aus dem JMP17-Skriptindex
Names Default To Here(1);
dt = Open("$SAMPLE_DATA/Cities.jmp");
obj = dt << Data Filter(
Add Filter(columns(:Region, :POP), where(:Region == {"C", "N"})),
Mode(Select(0), Show(0), Include(1))
);
obj << Get Filtered Rows; // [1, 4, 5, 6, 7, 19, 20, 26, 36, 40, 42, 46]Betreff: Wie verwende ich den Filter Change Handler, um mit der Seitenoption im Graph Builder zu arbeiten?@jthi Danke, aber mein Scripting Index (JMP 16.2) enthält ein Beispiel für die Verwendung von << Get Filtered Rows.
Könnte ich Hilfe bei der Verwendung in meinem Fall bekommen?

Betreff: Wie verwende ich den Filter Change Handler, um mit der Seitenoption im Graph Builder zu arbeiten?Diese Prüfung verursacht die Probleme.

Es gibt weitere Filter, die dazu führen können, dass nicht alle Parameter sichtbar sind. Eine Möglichkeit wäre, << Get Filtered Rows zu verwenden und zu berechnen, welche Parameter sichtbar sind, anstatt einfach davon auszugehen, dass alle sichtbar sind.
Betreff: Wie verwende ich den Filter Change Handler, um mit der Seitenoption im Graph Builder zu arbeiten?@jthi In den Beispielfällen funktioniert bisher alles wie erwartet und stimmt mit dem überein, was Sie sehen.
Allerdings konnte ich einen Teil des Problems, mit dem ich bei meinen tatsächlichen Daten konfrontiert bin, reproduzieren, indem ich eine andere Datentabelle erstellt habe, die besser mit meinen tatsächlichen Daten übereinstimmt. Die Datentabelle ist beigefügt und verwendet das folgende Skript
Names Default To Here(1);
dt = Current Data Table();
gb = dt << Graph Builder(
Size( 571, 174 ),
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(:TestDate, :Has Limits?, :TestStage, :Parameter ),
Where( :Has Limits? == "Yes" ),
Where( :TestStage == "STG5" ),
)
),
SendToReport(Dispatch({}, "graph title", TextEditBox, {Set Text("myTitleGoesHere")}))
);
Summarize(dt, uniq_params = By(:Parameter));
update_title = Function({this},
param_where = Regex(local_filter << get where clause(), "\(?\s*(:Parameter == .*?)\)", "\1");
If(Is Missing(param_where),
param_list = uniq_params,
param_where_list = Words(param_where, "|");
param_list = Transform Each({where_str}, param_where_list,
title = Trim Whitespace(Word(-1, where_str, "="));
Substitute(title, "\!"", "");
);
);
tebs = Report(gb) << XPath("//GraphBuilderTitleBox/TextEditBox");
y_tebs = tebs[4 :: N Items(tebs) :: 2]; // skip title, subtitle and xaxis?
If(N Items(y_tebs) != N Items(param_list),
Return(0); // some problem
);
gb << inval;
For Each({param_val, idx}, param_list, y_tebs[idx] << Set Text(param_val));
gb << update window;
Return(1);
);
local_filter = Current Report()["Local Data Filter"] << get scriptable object;
update_title(local_filter);
filter_handler = local_filter << Make Filter Change Handler(update_title());Ich erhalte Folgendes, wenn keine Parameter ausgewählt sind:

und dieses, nachdem alle Parameter ausgewählt und wieder abgewählt wurden. Hier erhält nur das obere Diagramm die korrekte Y-Achsenbeschriftung.

Wenn diese Probleme gelöst werden, funktioniert hoffentlich auch mein eigentlicher Datenfall wie erwartet. Jede Richtung wäre sehr nützlich.
Betreff: Wie verwende ich den Filter Change Handler, um mit der Seitenoption im Graph Builder zu arbeiten?Unter Verwendung von exampleSummarTable.jmp und dem neuesten von mir bereitgestellten Skript.
Nachdem ein Wert gefiltert wurde

Deaktivieren Sie diesen einzelnen Wert (damit nichts gefiltert wird)

Betreff: Wie verwende ich den Filter Change Handler, um mit der Seitenoption im Graph Builder zu arbeiten?@jthi Ich verstehe nicht, was Sie mit „Funktioniert es, wenn Sie einen Wert auswählen und dann alle Auswahlen aus Ihrem Filter entfernen?“ meinen. Könnten Sie es bitte umformulieren? Außerdem verwende ich JMP 16.2.
Betreff: Wie verwende ich den Filter Change Handler, um mit der Seitenoption im Graph Builder zu arbeiten?Ich bin mir nicht sicher, was falsch sein könnte, da es anscheinend mit den Originaldaten und mit den Daten2 nach dem Entfernen der Mehrfachantworten einwandfrei funktioniert (mit JMP17.2). Funktioniert es, wenn Sie einen Wert auswählen und dann alle Auswahlen aus Ihrem Filter entfernen?
Mehr sehen...
Names Default To Here(1);
dt = Current Data Table();
gb = dt << Graph Builder(
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"})
)
),
SendToReport(Dispatch({}, "graph title", TextEditBox, {Set Text("myTitleGoesHere")}))
);
Summarize(dt, uniq_params = By(:Parameter));
update_title = Function({this},
param_where = Regex(local_filter << get where clause(), "\(?\s*(:Parameter == .*?)\)", "\1");
If(Is Missing(param_where),
param_list = uniq_params,
param_where_list = Words(param_where, "|");
param_list = Transform Each({where_str}, param_where_list,
title = Trim Whitespace(Word(-1, where_str, "="));
Substitute(title, "\!"", "");
);
);
tebs = Report(gb) << XPath("//GraphBuilderTitleBox/TextEditBox");
y_tebs = tebs[4 :: N Items(tebs) :: 2]; // skip title, subtitle and xaxis?
If(N Items(y_tebs) != N Items(param_list),
Return(0); // some problem
);
gb << inval;
For Each({param_val, idx}, param_list, y_tebs[idx] << Set Text(param_val));
gb << update window;
Return(1);
);
local_filter = Current Report()["Local Data Filter"] << get scriptable object;
update_title(local_filter);
filter_handler = local_filter << Make Filter Change Handler(update_title());
Betreff: Wie verwende ich den Filter Change Handler, um mit der Seitenoption im Graph Builder zu arbeiten?@jthi Danke. Dies läuft bei meinem aktuellen Datensatz fehlerfrei, aber die anfänglichen Diagramme enthalten immer noch die korrekten Parameternamen auf der y-Achse. Die korrekten Y-Achsentitel werden nur ausgelöst, wenn ich eine zweite Testphase auswähle (zunächst wird nur eine über das Skript ausgewählt).
Betreff: Wie verwende ich den Filter Change Handler, um mit der Seitenoption im Graph Builder zu arbeiten?Wie ich bereits sagte, liegt es höchstwahrscheinlich daran, dass Parameter gefiltert werden
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" )} ) )
);
Summarize(dt, uniq_params = By(:Parameter));
update_title = Function( {this},
param_where = Regex(local_filter << get where clause(),"\(?\s*(:Parameter == .*?)\)","\1");
If(Is Missing(param_where),
param_list = uniq_params;
,
param_where_list = Words(param_where, "|");
param_list = Transform Each({where_str}, param_where_list,
title = Trim Whitespace(Word(-1, where_str, "="));
Substitute(title, "\!"", "");
);
);
tebs = Report(gb) << XPath("//GraphBuilderTitleBox/TextEditBox");
y_tebs= tebs[4::N Items(tebs)::2]; // skip title, subtitle and xaxis?
If(N Items(y_tebs) != N Items(param_list),
return(0); // some problem
);
gb << inval;
For Each({param_val, idx}, param_list,
y_tebs[idx] << Set Text(param_val);
);
gb << update window;
return(1);
);
local_filter = Current Report()["Local Data Filter"] << get scriptable object;
update_title(local_filter);
filter_handler = local_filter << Make Filter Change Handler(update_title());
Betreff: Wie verwende ich den Filter Change Handler, um mit der Seitenoption im Graph Builder zu arbeiten?@jthi Im tatsächlichen Datenfall, wenn ich auskommentiere
update_title(local_filter);
wie in
local_filter = Current Report()["Local Data Filter"] << get scriptable object;
//update_title(local_filter);
filter_handler = local_filter << Make Filter Change Handler(update_title());
Alles funktioniert wie erwartet, außer dass die ursprünglichen Diagramme nicht den richtigen Y-Achsentitel haben. Der Titel der Y-Achse wird erst korrekt, nachdem eine andere Testphase ausgewählt wurde. Ist meine Platzierung von
update_title(local_filter);
richtig oder sollte es woanders platziert werden?
Betreff: Wie verwende ich den Filter Change Handler, um mit der Seitenoption im Graph Builder zu arbeiten?Dies gibt nicht das zurück, was es soll
param_where = Regex(local_filter << get where clause(),"\(?\s*(:Parameter == .*?)\)","\1");
Ein Grund könnte sein, dass Sie im lokalen Datenfilter keine Werte ausgewählt haben. Sie könnten eine zusätzliche Prüfung auf fehlende Werte hinzufügen und, wenn param_where fehlt, vorzeitig von der Funktion zurückkehren, ohne etwas zu tun (oder besser gesagt, Sie haben alle Werte als Parameter und müssen die Parameterwerte auf andere Weise abrufen).
Betreff: Wie verwende ich den Filter Change Handler, um mit der Seitenoption im Graph Builder zu arbeiten?@jthi Danke, durch das Entfernen von Mehrfachantworten aus Parametereigenschaften funktioniert das Skript für die Beispieldaten (exampleSummaryTable2). Aber ich habe immer noch Probleme mit meinem tatsächlichen Datensatz, da es keine Spalten mit dem Satz „Mehrfachantworten“ gibt (tatsächliche Daten können leider nicht geteilt werden). Was könnte es sonst sein?

Ich kann denselben Fehler auch reproduzieren, wenn ich dies im Skript auskommentiere
//Where( :Parameter == {"BKDVoltage_1", "Capacitance_1"}wie in
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]; //show (y_tebs);
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());In meinem konkreten Datenfall habe ich nicht den Luxus, einen oder mehrere Parameter über den lokalen Datenfilter vorab auszuwählen. Möglicherweise ist dies die Ursache des Problems im tatsächlichen Datenfall. Gibt es eine Möglichkeit, das zu umgehen?
Betreff: Wie verwende ich den Filter Change Handler, um mit der Seitenoption im Graph Builder zu arbeiten?Das Problem liegt höchstwahrscheinlich daran, dass Sie als Parameter die Spalte „Mehrfachantwort“ haben


Betreff: Wie verwende ich den Filter Change Handler, um mit der Seitenoption im Graph Builder zu arbeiten?@jthi Ok. Habe den Auslöser bemerkt. Das Skript funktioniert nicht, wenn mein Parametername einen Unterstrich enthält (ich habe in den Parameternamen meiner tatsächlichen Daten nur wenige Unterstriche). Beispieldatentabelle mit Unterstrich im Parameternamen angehängt. Das folgende Skript löst einen Fehler in der Words- Funktion mit der angehängten Datentabelle aus.
Musste auch die Size() kommentieren, ohne die die ursprünglichen Diagramme seltsam aussahen.
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());Betreff: Wie verwende ich den Filter Change Handler, um mit der Seitenoption im Graph Builder zu arbeiten?Lösen Sie die Funktion einmal aus, bevor Sie den Filteränderungshandler erstellen
update_title(local_filter);

Betreff: Wie verwende ich den Filter Change Handler, um mit der Seitenoption im Graph Builder zu arbeiten?@jthi Dies funktioniert, außer dass das ursprüngliche Diagramm (vor den Filterwechsel-Handler-Kindern) immer noch den Median als Y-Achsentitel hat. Gibt es eine Möglichkeit, das zu beheben?

Betreff: Wie verwende ich den Filter Change Handler, um mit der Seitenoption im Graph Builder zu arbeiten?Eine Möglichkeit wäre, die get where-Klausel zu analysieren
ldfText = Regex(ldf << get where clause(),"\(?\s*(:Parameter == .*?)\)","\1");
in separate Elemente aufteilen und diese durchlaufen und die Titel in der Schleife festlegen.
Bearbeiten:
Dies erfordert auch eine kleine Änderung an dem Teil, in dem Sie Verweise auf Textbearbeitungsfelder für die Y-Achse erhalten. Nachfolgend finden Sie eine Option, die funktionieren könnte
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());
Betreff: Wie verwende ich den Filter Change Handler, um mit der Seitenoption im Graph Builder zu arbeiten?@jthi Dies funktioniert teilweise, aber alle ausgewählten Parameter werden in allen gezeichneten Diagrammen untereinander als Y-Achsentitel angezeigt.
ich habe mich verändert
(Report( gb ) << XPath( "//TextEditBox" ))[6] << Set Text(ldfText);
Zu
(Report(gb) << XPath("//GraphBuilderTitleBox/TextEditBox[text()='Median']")) << Set Text(ldfText);und bekomme

Es wird nur der Name des dargestellten Parameters als Titel der Y-Achse in jedem Diagramm benötigt.
Betreff: Wie verwende ich den Filter Change Handler, um mit der Seitenoption im Graph Builder zu arbeiten?Sie könnten versuchen, Ihre XPath-Abfrage genauer zu machen (erkunden Sie XML und den Eigenschaftenbaum). So etwas könnte funktionieren
Report(gb) << XPath("//GraphBuilderTitleBox/TextEditBox[text()='Median']")