<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />Hola a todos,
Tengo una secuencia de comandos en la que una de las salidas es una gráfica bivariante (XY) que utiliza la plataforma bivariante. Básicamente, está trazando el valor de un parámetro de un dispositivo en el eje y frente al tiempo en el eje x. Estas partes tienen un valor de ID común en una columna de la tabla de datos de origen.
Ahora la plataforma ya tiene la funcionalidad donde, si hace clic en un marcador, la fila en la que se basa el marcador se selecciona en la tabla de datos (otros marcadores en el cuadro de visualización se desvanecen). Lo que quiero es que cuando un usuario haga clic en un marcador, todos los demás marcadores con el mismo valor de ID también se resalten (para que el usuario pueda ver cómo se comportó este dispositivo con el tiempo). Solo estoy luchando por encontrar una manera de hacer esto. ¿Hay acceso al código de manejo de eventos que ya existe para la plataforma (es decir, qué permite seleccionar las filas cuando el usuario hace clic en un marcador, o varias filas cuando el usuario hace clic y arrastra un rectángulo en la ventana de trazado)?
Cualquier ayuda en esto sería muy apreciada.
Gracias.
FYI, otro enfoque que utiliza el controlador de estado de fila:
Nombres predeterminados hasta aquí ( 1 ) ;
// Mesa
dt = Nueva tabla ( "Selección de ID bivariado" ,
Agregar filas ( 10 ) ,
Nueva columna ( "IDENTIFICACIÓN" , Numérico , "Nominal" , Formato ( "Mejor" , 12 ) , Establecer valores ( [ 2014 , 2011 , 2012 , 2013 , 2014 , 2011 , 2013 , 2012 , 2011 , 2014 ] ) ) ,
Nueva columna ( "X" , Numérico , "Continuo" , Formato ( "Mejor" , 12 ) , Establecer valores ( [ 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 10 ] ) ) ,
Nueva columna ( "Y" , Numérico , "Continuo" , Formato ( "Mejor" , 12 ) , Establecer valores ( [ 20 , 21 , 25 , 28 , 30 , 31 , 33 , 36 , 37 , 40 ] ) ) ,
Establecer columnas de etiquetas ( : IDENTIFICACIÓN )
) ;
// Función de controlador de estado de fila
seleccione MatchingID = Función ( { X } ,
// Obtener qué filas están actualmente seleccionadas
filas seleccionadas = [] ;
i = 1 ;
Por cada fila (
Si ( Seleccionado ( Estado de fila () ) ,
filas seleccionadas = V concat ( filas seleccionadas , i )
) ;
i ++;
) ;
// Si hay una selección, 'expandirla' a todas las filas requeridas
Si ( Fila N ( filas seleccionadas ) > 0 ,
filas seleccionadas expandidas = [] ;
Para ( i = 1 , i <= Fila N ( filas seleccionadas ) , i ++,
esteID = : IDENTIFICACIÓN [ filas seleccionadas [ i ]] ;
filas coincidentes = dt << getRowsDónde ( : IDENTIFICACIÓN == esteID ) ;
filas seleccionadas expandidas = V concat ( filas seleccionadas expandidas , filas coincidentes ) ;
) ;
dt << Seleccionar filas ( filas seleccionadas expandidas ) ;
) ;
) ;
// Asignar el manejador a la tabla
rsh = dt << HacerRowStateHandler ( seleccione MatchingID ) ;
// Pruébalo con Graph Builder
dt << Generador de gráficos (
Tamaño ( 530 , 454 ) ,
Mostrar panel de control ( 0 ) ,
Variables ( X ( : X ) , Y ( : Y ) ) ,
Elementos ( Puntos ( X , Y , Leyenda ( 5 ) ) , más suave ( X , Y , Leyenda ( 6 ) ) )
) ;
Hola a todos,
Encontré una manera de hacerlo que funciona. Básicamente, solo tiene que crear una secuencia de comandos de gráficos y, allí, escribir un código que obtenga las ID de las filas seleccionadas y luego usar una instrucción select where para hacer coincidir todas las filas con esa ID. Esto también funciona si hace clic y arrastra una cantidad de puntos en la ventana bivariada. Ejemplo de código a continuación.
xParam ="Column Name 1 Here";
yParam = "Column Name 2 Here";
idParam = "Column Name 3 Here";
//tableRef = data table reference
bivPlatform = Bivariate(
Y( Eval(yParam) ),
X( Eval(xParam) ),
);
bivReport = bivPlatform << Report;
bivFrame = bivRawReport[FrameBox( 1 )]; //Assign reference to framebox
// Add Graphics script to select all rows with matching ID when one row is selected on the graph
bivFrame << Add Graphics Script( 2, //Order graphics script is run with respect to other elements in Frame box (Not really needed here)
//Get selected IDs
selectedIDMatrix = tableRef:idParam[ ( tableRef << Get Selected Rows() ) ];
//Get unique IDs (optional I guess)
idArray = Associative Array(selectedIDMatrix);
uniqueIDMatrix = idArray << Get Keys;
//Select other datapoints with matching IDs
tableRef << Select Where( Contains( As List(uniqueIDMatrix), As Column(tableRef, idParam) ) );
);
Hola scwise,
Gracias por esto y espero tener esta capacidad cuando actualice a JMP 12.
Estaba buscando esta funcionalidad solo dentro del cuadro de visualización bivariado. Para usar su ejemplo anterior, me gustaría hacer clic en un punto de datos para 2014 y resaltar todos los puntos de 2014. Espero que haya una solución de script puro por ahí.
En cualquier caso, gracias de nuevo por tu respuesta.
nkelleh,
Gracias por la pregunta sobre poder seleccionar algo en un gráfico bivariado Fit X By Y, pero luego ver todos los puntos correspondientes en la tabla de datos resaltados que tienen ID similares al punto seleccionado.Si bien aún puede haber una respuesta más elegante de "crear scripts desde cero" para lo que desea hacer, encontré una manera fácil de usar la nueva función JMP 12 Application Builder que permite usar un gráfico como filtro de datos.Entonces, con suerte, puede usar partes de este script listo para usar en su trabajo actual, o tal vez solo pueda usar esta capacidad lista para usar tal como está.Tenga en cuenta que estoy usando la versión JMP 12.1 para Mac.
En este caso, creamos una tabla de datos simple como la que describiste con tres columnas: ID, X e Y, con varias ID que tienen varias filas de diferentes medidas de X e Y. Luego combinamos la tabla de datos y luego una distribución de las columnas en una ventana (Combinar Windows en JMP para obtener una vista de Informe personalizado) a continuación para que pueda ver nuestra configuración inicial.

Luego creamos un gráfico que muestra el ajuste bivariado de Y por X.En este punto, si selecciona un punto, en realidad solo está seleccionando en función de las coordenadas X e Y.Obtener la etiqueta de identificación para que aparezca ese punto no es un problema, pero esto solo sombreará (seleccionará) ese punto exacto en su tabla de datos.Entonces, el problema es que Bivariate buscaría coincidencias basadas solo en coordenadas X e Y similares, y no en ID comunes.Consulte la siguiente vista de informe personalizado.
Así que pensé que tal vez podríamos hacer de este un proceso de dos pasos realmente fácil al crear un gráfico de "ayuda" al lado de Bivariate que me permitiría luego seleccionar todos los puntos de identificación de interés con un solo clic.Para hacer esto, creé una Distribución para ID (que convertí en un tipo de columna de datos nominales para una mejor capacidad de selección) y luego desactivé todas las opciones de visualización, excepto una Gráfica de mosaico.Luego, unió los gráficos de distribución y bivariados en una ventana para obtener otra vista de informe personalizado.Luego, debajo del triángulo rojo en el encabezado del informe, seleccionamos el botón Editar aplicación que abre el espacio de trabajo del Generador de aplicaciones (después de seleccionar la tabla de datos subyacente).Ahora, en Application Builder, es tan fácil como seleccionar el primer gráfico de diagrama de mosaico de distribución, hacer clic derecho sobre él y seleccionar Usar como filtro.Ahora puedo tener una solución de dos clics... donde primero selecciono el punto en el gráfico Bivariate Fit Y By X que me interesa, y luego puedo deslizarme y seleccionar (dirección del clic en) la ID completa en el Mosaico parcialmente sombreado eso ahora resaltará todas las ID similares en la tabla de datos.También es bueno ver gráficamente en el gráfico Bivariate Fit Y By X todos los puntos correspondientes al mismo número de identificación después de que lo seleccionamos en Mosaic Plot.


Ahora puede ir al triángulo rojo debajo del encabezado del Informe y guardar la secuencia de comandos en una ventana de secuencias de comandos para ver el trabajo de secuencias de comandos subyacente que se generó para usted al crear esta vista.Nuevamente, aunque esto no es tan ingenioso como poder hacerlo directamente desde Bivariate Fit Y By X, muestra una solución lista para usar y le brinda una forma de generar algunos de los scripts automáticamente.Se adjuntará en este archivo de trabajo JMP con scripts guardados para que usted también los revise.
¡Espero que esto ayude!