557067_de-DE
Fügen Sie eine Referenzlinie für das Übersichtsstatistikdiagramm hinzu, die auf lokale Datenfilteränderungen reagiert
Erstellen Sie ein Verlaufsdiagramm mit einer Referenzlinie für den Mittelwert der Daten. Fügen Sie einen lokalen Datenfilter hinzu und ändern Sie den Mittelwert, wenn Kategorien ausgewählt werden. Habe die mittleren Ehrenzeilen ausgeschlossen.
Zutaten:- Graph-Generator
- Zeilenstatus-Handler
Beispieldatentabelle: Große Klasse
Schwierigkeit: Schwer
Schritte:- Starten Sie das Skript mit Namen standardmäßig hier(1);
- Öffne das Große Klasse Beispieldatentabelle und geben Sie eine Referenz an dt .
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
- Einige Zeilen nach dem Zufallsprinzip ausschließen.
dt << select randomly(sampling rate(0.2)) << exclude << clear select;
- Erstellen Sie das Diagramm mit Graph Builder und geben Sie ihm eine Referenz gb .
gb = Graph Builder(
Size( 621, 472 ),
Variables( Y( :height ) ),
Elements( Line( Y, Legend( 3 ), Row order( 1 ) ) ),
);
- Fügen Sie den lokalen Datenfilter hinzu und geben Sie ihm eine Referenz df .
df = gb << local data filter(add filter(columns(:sex)));
- Das Filterwechsel-Handler erstellen (f) Nachricht an das Datenfilterobjekt wertet das Benutzerfunktionsargument aus f jedes Mal, wenn der Datenfilter geändert wird. Erstellen Sie die Funktion zum Entfernen der Referenzlinie, falls vorhanden, finden Sie den Mittelwert der Antwort für die Zeilen, die vom lokalen Datenfilter ausgewählt wurden und nicht ausgeschlossen sind, und fügen Sie dann eine Referenzlinie zur Y-Achse am Mittelwert der Antwort für diese hinzu Reihen. Senden Sie dann die Nachricht an den Datenfilter.
//user function to be called when filter is changed
f = function({a}, //a is not used
//remove the y axis reference line, if it exists
try(report(gb)[axisbox(2)] << remove ref line(meanHeight));
//get the where clause from the data filter
//it will look like Select Where(...)
txt = df << get where clause;
//get the argument, if it exists
arg = if(length(txt), arg(parse(txt), 1), txt);
//get row numbers of filtered rows
aaDf = if(length(txt),
associative array(dt << get rows where(arg)),
index(1, nrow(dt))
);
//find row numbers of non-excluded rows
vecEx = dt << select excluded
<< invert row selection
<< get selected rows
<< clear select;
aaEx = associative array(vecEx);
//get row numbers of both
aaEx << intersect(aaDf);
lstAll = aaEx << get keys;
//find the mean of filtered/non-excluded response
//if nothing is filtered, find the mean of non-excluded only
meanHeight = if(length(txt),
mean(column(dt, "height")[lstAll]),
mean(column(dt, "height")[aaEx << get keys])
);
//add reference line
report(gb)[axisbox(2)] << add ref line(meanHeight, "Solid", 19, 2);
);
rs = df << make filter change handler(f);
Tipps für den Erfolg
- Erstellen Sie die Objekte „Graph Builder“ und „Data Filter“ interaktiv und kopieren Sie dann ihre Skripts mit „Skript speichern“ > in das Skriptfenster oder verwenden Sie das erweiterte Protokoll.
- Verwenden Sie den Skriptindex, um die Nachrichten zu verstehen, auf die Objekte wie Data Filter reagieren können. Führen Sie die Beispiele aus, um zu sehen, wie sie funktionieren. Was wird zum Beispiel im Argument a auf die Benutzerfunktion f umgestimmt?
- Fangen Sie klein an. Dieses Beispiel wurde ohne Berücksichtigung ausgeschlossener Zeilen erstellt. Erst nachdem das Skript erstellt wurde, wurde es an einer Tabelle mit ausgeschlossenen Zeilen ausprobiert. Der Sonderfall einer Tabelle mit ausgeschlossenen Zeilen wurde später hinzugefügt. Der andere Sonderfall, dass nichts im Filter ausgewählt ist, wurde ebenfalls danach hinzugefügt.
Automatisierung und SkripterstellungHauptgänge
Comments
There are no comments yet