<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />Graph Builder funciona correctamente con el filtro de datos ajustando los puntos trazados correctamente cuando se mueve el control deslizante del filtro de datos. Además, los valores de las estadísticas que utilizan el cuadro de título se ajustan con el control deslizante Filtro de datos como se esperaba. Hasta ahora, todo bien. Luego quise trazar la media de una columna usando 'Personalizar' y 'Función Y'. El siguiente es el script extraído:
Agregar secuencia de comandos de gráficos (
3,
Descripción( "Guión"),
Función Y( Col Media( :_columnexample_ ), x )
)
La línea media deseada se traza con éxito. Sin embargo, la línea trazada no responde al control deslizante Filtro de datos.
¿Cómo puedo trazar la media de la columna que funciona con el filtro de datos?
Gracias Ian por responder. He estudiado tu guión y veo que funciona. En mi caso, sin embargo, necesito mantener el filtro de datos global para que muchos gráficos puedan verse afectados a la vez, y todavía no lo he logrado.
Basándonos en el pensamiento de Jim, aquí hay una forma (con el filtro de datos local):
NombresDefaultToHere ( 1 ) ;
dt = Abierto ( "$SAMPLE_DATA/Gran Clase.jmp" ) ;
// Constructor de gráficos
gb = dt << Generador de gráficos (
Mostrar panel de control ( 0 ) ,
Balanzas de bloqueo ( 1 ) ,
variables ( X ( : peso ) , Y ( : altura ) ) ,
Elementos ( Puntos ( X , Y , Leyenda ( 6 ) ) , Línea de ajuste ( X , Y , Leyenda ( 8 ) ) ) ,
) ;
// Obtener una referencia al informe
GBReporte = gb << Informe ;
// Agregar un filtro de datos local
ldf = gb << Filtro de datos locales ( Añadir filtro ( columnas ( : sexo ) ) ) ;
// Función de controlador de estado de fila que agrega una línea horizontal a Graph Builder en la media del actual
// selección en el filtro de datos local
agregarMeanYLine =
Función ({ X } , { Local predeterminado } ,
// Obtener filas correspondientes a la selección actual
filas = ldf << getFilteredRows ;
// Obtener el valor medio requerido
mv = Significar (( Columna ( dt , "altura" ) << obtenerValores )[ filas ]) ;
// Agregue el script de gráficos al cuadro de visualización de Graph Builder. . .
gMarcos = GBReporte << XPath ( "//Cuadro de marco" ) ;
// Intenta eliminar un script de gráficos que quizás ya esté ahí
Intentar ( Enviar ( gMarcos [ 1 ] , EliminarGraphicsScript ( 1 ))) ;
// Expresión que agregará el script de gráficos requerido
banderas = Expr. ( Enviar ( gMarcos [ 1 ] , AgregarGraphicsScript ( Color de pluma ( "Rojo" ) ; Línea H ( Por determinar )))) ;
// 'Hornear' valor medio actual
Sustituir en ( banderas , Expr. ( Por determinar ) , mv ) ;
//Añadir el script de gráficos
banderas ;
) ;
// Asigne el controlador de estado de fila al cuadro de visualización del filtro de datos local
rsh = GBReporte [ Cuadro de esquema ( 1 )] << MakeRowStateHandler ( agregarMeanYLine ) ;
Gracias por la respuesta.
Aquí está el script para el filtro de datos, no es local:
Tabla de datos actual() << Filtro de datos(
Ubicación ({325, 212}),
Modo (Mostrar (1), Incluir (1)),
Agregar filtro( columnas( :Bandmeter ), Donde( :Bandmeter >= -100 & :Bandmeter <= -50 ) )
);?
Supongo que el problema radica en la declaración Incluir (1), tal vez debería ser Excluir. Mi prueba gratuita de 30 días acaba de finalizar, así que tendré que esperar para obtener una licencia para probarla.
Se incluyen algunos valores iniciales arbitrarios para el filtro simplemente porque aún no he descubierto cómo incluir todas las filas de la tabla de datos actual. Parecía ser un problema menor en este momento, pero también supongo que no es la causa de la dificultad en el uso del filtro de datos con la función Y.
La solución probablemente dependerá de si está utilizando un filtro de datos o un filtro de datos local.Si está utilizando un filtro de datos, puede aplicar un controlador de estado de fila a la tabla de datos, que volverá a dibujar la función Y.Si se trata de un filtro de datos local, la clave estará en encontrar qué cambia en el gráfico el filtro que se puede activar para volver a dibujar la función Y.
Si puede proporcionar más detalles sobre el filtro de datos que está utilizando, es posible que pueda ofrecerle más soluciones.