557067_es-ES
Agregue una línea de referencia de gráfico de estadísticas de resumen que responda a los cambios de filtro de datos locales
Cree un gráfico de ejecución con una línea de referencia para la media de los datos. Agregue un filtro de datos local y tenga el cambio medio a medida que se seleccionan las categorías. Tener filas excluidas de honor medio.
Ingredientes:- Generador de gráficos
- Manejadores de estado de fila
Tabla de datos de muestra: clase grande
Dificultad: Difícil
Pasos:- Comience el guión con Nombres predeterminados aquí (1);
- Abre el clase grande muestra la tabla de datos y dale una referencia dt .
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
- Excluya algunas filas al azar.
dt << select randomly(sampling rate(0.2)) << exclude << clear select;
- Cree el gráfico usando Graph Builder y asígnele una referencia GB .
gb = Graph Builder(
Size( 621, 472 ),
Variables( Y( :height ) ),
Elements( Line( Y, Legend( 3 ), Row order( 1 ) ) ),
);
- Agrega el filtro de datos locales y dale una referencia. d.f. .
df = gb << local data filter(add filter(columns(:sex)));
- los hacer controlador de cambio de filtro (f) el mensaje al objeto de filtro de datos evaluará el argumento de la función de usuario F cada vez que se cambia el filtro de datos. Cree la función para eliminar la línea de referencia si existe, encuentre la media de la respuesta para las filas seleccionadas por el filtro de datos local y que no están excluidas, luego agregue una línea de referencia al eje Y en la media de la respuesta para esos filas Luego envíe el mensaje al filtro de datos.
//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);
Consejos para el éxito
- Cree los objetos Graph Builder y Data Filter de forma interactiva, luego copie sus secuencias de comandos usando Guardar secuencia de comandos > en la ventana de secuencias de comandos o use el registro mejorado.
- Utilice el índice de secuencias de comandos para comprender los mensajes a los que pueden responder objetos como el filtro de datos. Ejecute los ejemplos para ver cómo funcionan. Por ejemplo, ¿qué se devuelve en el argumento a a la función de usuario f?
- Empieza pequeño. Este ejemplo se creó sin tener en cuenta las filas excluidas. Fue solo después de que se creó el script que se probó en una tabla con filas excluidas. El caso especial de una tabla con filas excluidas se agregó después. El otro caso especial de nada seleccionado en el filtro también se agregó después.
Automatización y secuencias de comandosPlatos principales
Comments
There are no comments yet