<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />Hola a todos,
Tengo un script donde una de las salidas es un gráfico bivariado (XY) que utiliza la plataforma bivariada. Básicamente, se trata de trazar el valor de un parámetro de un dispositivo en el eje y versus el 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 ese 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 a lo largo del tiempo). Simplemente estoy luchando por encontrar una manera de hacer esto. ¿Existe 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 sobre esto sería muy apreciada.
Gracias.
Para su información, otro enfoque que utiliza el controlador de estado de fila:
Nombres predeterminados aquí ( 1 ) ;
// Mesa
dt = Nueva mesa ( "Selección de ID bivariada" ,
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
seleccionarID coincidente = Función ( { X } ,
// Obtener qué filas están seleccionadas actualmente
filas seleccionadas = [] ;
i = 1 ;
Por cada fila (
Si ( Seleccionado ( Estado de la fila () ) ,
filas seleccionadas = V Concat ( filas seleccionadas , i )
) ;
i ++;
) ;
// Si hay una selección, 'expandirla' a todas las filas requeridas
Si ( N fila ( filas seleccionadas ) > 0 ,
Filas seleccionadas expandidas = [] ;
Para ( i = 1 , i <= N fila ( filas seleccionadas ) , i ++,
este ID = : IDENTIFICACIÓN [ filas seleccionadas [ i ]] ;
filas coincidentes = dt << getRowsDónde ( : IDENTIFICACIÓN == este ID ) ;
Filas seleccionadas expandidas = V Concat ( Filas seleccionadas expandidas , filas coincidentes ) ;
) ;
dt << seleccionar filas ( Filas seleccionadas expandidas ) ;
) ;
) ;
//Asigna el controlador a la mesa.
rsh = dt << MakeRowStateHandler ( seleccionarID coincidente ) ;
// 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 un script de gráficos y allí escribir un código que obtenga los ID de las filas seleccionadas y luego usar una instrucción de selección donde para hacer coincidir todas las filas con ese ID. Esto también funciona si hace clic y arrastra varios puntos en la ventana Bivariada. Código de muestra 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 justo dentro del cuadro de visualización bivariado. Para usar el ejemplo anterior, me gustaría hacer clic en un punto de datos de 2014 y resaltar todos los puntos de 2014. Espero que exista una solución de script pura.
En cualquier caso, gracias de nuevo por tu respuesta.
nkelleh,
Gracias por la pregunta sobre poder seleccionar algo en un gráfico bivariado Ajustar X por Y, pero luego ver todos los puntos correspondientes en la tabla de datos resaltados que tienen ID similares al punto seleccionado.Si bien todavía puede haber una respuesta más elegante de "scripting desde cero" a lo que desea hacer, encontré una manera fácil de usar la nueva característica JMP 12 Application Builder que permite usar un gráfico como filtro de datos.Entonces, con suerte, podrá utilizar partes de este script ya preparado en su trabajo actual, o tal vez simplemente pueda utilizar 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 describió con tres columnas: ID, X e Y, con varias ID que tienen múltiples filas de diferentes medidas X e Y. Luego combinamos la tabla de datos y luego una distribución de las columnas en una ventana (Combine 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 está seleccionando solo en función de las coordenadas X e Y.Obtener la etiqueta de ID para que aparezca ese punto no es un problema, pero esto solo sombreará (seleccionará) ese punto exacto nuevamente en su tabla de datos.Entonces, el problema es que Bivariate buscaría coincidencias basadas únicamente en coordenadas X e Y similares, y no en ID comunes.Vea la siguiente vista de Informe personalizado.
Así que pensé que tal vez podríamos hacer de este un proceso realmente sencillo de dos pasos creando un gráfico "ayudante" al lado del bivariado que me permitiría 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 nominal para una mejor capacidad de selección) y luego desactivé todas las opciones de visualización excepto un Gráfico de mosaico.Luego unió los gráficos de Distribución y Bivariado 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 el Generador de aplicaciones 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 Bivariado Ajuste Y por X que me interesa, y luego puedo deslizarme y seleccionar (hacer clic en la dirección) la identificación 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 Bivariado Ajuste Y por X todos los puntos correspondientes al mismo número de identificación después de seleccionarlo en el Gráfico de mosaico.


Ahora puede ir al triángulo rojo debajo del encabezado Informe y guardar el script en una ventana de script para ver el trabajo de script subyacente que se generó al crear esta vista.Nuevamente, si bien 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 manera de generar algunas de las secuencias de comandos automáticamente.Se adjuntará este archivo de trabajo JMP con scripts guardados para que usted también los revise.
¡Espero que esto ayude!