557067_it-IT
Aggiungere una riga di riferimento del grafico statistico di riepilogo che risponda alle modifiche del filtro dati locali
Creare un diagramma di esecuzione con una linea di riferimento per la media dei dati. Aggiungi un filtro dati locale e cambia la media quando le categorie vengono selezionate. Fai in modo che l'onore medio abbia escluso le righe.
Ingredienti:- Generatore di grafici
- Gestori dello stato di riga
Tabella dati di esempio: Grande classe
Difficoltà: Difficile
Passi:- Inizia lo script con Nomi predefiniti qui(1);
- Apri il Grande classe tabella di dati di esempio e dargli un riferimento dt .
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
- Escludi alcune righe a caso.
dt << select randomly(sampling rate(0.2)) << exclude << clear select;
- Crea il grafico usando Graph Builder e assegnagli un riferimento gb .
gb = Graph Builder(
Size( 621, 472 ),
Variables( Y( :height ) ),
Elements( Line( Y, Legend( 3 ), Row order( 1 ) ) ),
);
- Aggiungi il filtro dati locale e assegnagli un riferimento df .
df = gb << local data filter(add filter(columns(:sex)));
- Il fare il gestore del cambio del filtro (f) messaggio all'oggetto filtro dati valuterà l'argomento della funzione utente f ogni volta che si cambia il filtro dati. Crea la funzione per rimuovere la linea di riferimento se esiste, trova la media della risposta per le righe selezionate dal filtro dati locale e che non sono escluse, quindi aggiungi una linea di riferimento all'asse Y alla media della risposta per quelle righe. Quindi inviare il messaggio al filtro dati.
//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);
Suggerimenti per il successo
- Crea gli oggetti Generatore grafico e Filtro dati in modo interattivo, quindi copia i relativi script utilizzando Salva script > nella finestra script o utilizza il registro avanzato.
- Utilizzare l'indice di script per comprendere i messaggi a cui possono rispondere oggetti come Filtro dati. Esegui gli esempi per vedere come funzionano. Ad esempio, cosa viene riaccordato nell'argomento a alla funzione utente f?
- Inizia in piccolo. Questo esempio è stato creato senza considerare le righe escluse. È stato solo dopo la creazione dello script che è stato provato su una tabella con righe escluse. Il caso speciale di una tabella con righe escluse è stato aggiunto dopo. Dopo è stato aggiunto anche l'altro caso speciale di nulla selezionato nel filtro.
Automazione e scriptPiatti principali
Comments
There are no comments yet