557067_fr-FR
Ajouter une ligne de référence de graphique de statistiques récapitulatives qui répond aux modifications du filtre de données locales
Créez un diagramme de progression avec une ligne de référence pour la moyenne des données. Ajoutez un filtre de données local et changez la moyenne au fur et à mesure que les catégories sont sélectionnées. Faites en sorte que la moyenne respecte les lignes exclues.
Ingrédients:- Générateur de graphiques
- Gestionnaires d'état de ligne
Exemple de tableau de données : Grande classe
Difficulté: Dur
Pas:- Lancez le script avec Les noms sont ici par défaut (1);
- Ouvrez le Grande classe exemple de tableau de données et donnez-lui une référence dt .
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
- Exclure certaines lignes au hasard.
dt << select randomly(sampling rate(0.2)) << exclude << clear select;
- Créez le graphique à l'aide de Graph Builder et donnez-lui une référence Go .
gb = Graph Builder(
Size( 621, 472 ),
Variables( Y( :height ) ),
Elements( Line( Y, Legend( 3 ), Row order( 1 ) ) ),
);
- Ajoutez le filtre de données local et donnez-lui une référence df .
df = gb << local data filter(add filter(columns(:sex)));
- La faire le gestionnaire de changement de filtre (f) le message à l'objet filtre de données évaluera l'argument de la fonction utilisateur F chaque fois que le filtre de données est modifié. Créez la fonction pour supprimer la ligne de référence si elle existe, trouvez la moyenne de la réponse pour les lignes sélectionnées par le filtre de données local et qui ne sont pas exclues, puis ajoutez une ligne de référence à l'axe Y à la moyenne de la réponse pour celles Lignes. Envoyez ensuite le message au filtre de données.
//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);
Conseils pour réussir
- Créez les objets Graph Builder et Data Filter de manière interactive, puis copiez leurs scripts à l'aide de Save script > to Script Window ou utilisez le journal amélioré.
- Utilisez l'index de script pour comprendre les messages auxquels des objets tels que Data Filter peuvent répondre. Exécutez les exemples pour voir comment ils fonctionnent. Par exemple, qu'est-ce qui est réaccordé dans l'argument a à la fonction utilisateur f ?
- Commencer petit. Cet exemple a été créé sans tenir compte des lignes exclues. Ce n'est qu'après la création du script qu'il a été essayé sur une table avec des lignes exclues. Le cas particulier d'un tableau avec des lignes exclues a été ajouté par la suite. L'autre cas particulier de rien sélectionné dans le filtre a également été ajouté après.
Automatisation et scriptPlats principaux
Comments
There are no comments yet