en un anterior correo , aprendió sobre los ajustes preestablecidos de grafitos y el comando Pegar grafitos. Le mostramos cómo admiten miniaturas de visualización contextuales en las que se puede hacer clic en etiquetas flotantes. Estos comandos implementan el aspecto de "porcelana" de la función de extensiones de etiquetas flotantes de JMP 15, proporcionando una interfaz fácil de usar que no requiere ninguna habilidad de codificación.
En esta publicación, verá mejor la capa de "plomería" subyacente que alimenta la capa de porcelana. Esta capa está diseñada como una estructura a la que también puede acceder directamente el usuario, permitiendo implementar requisitos que no están cubiertos por las características del porcelánico.
El marco de extensiones de etiquetas flotantes
Un marco es una combinación de servicios básicos y puntos de extensión. Desde el punto de vista del marco, los ajustes preestablecidos y los grafitos personalizados son idénticos, por lo que la única diferencia es que JMP proporciona las definiciones preestablecidas para comodidad de los usuarios.
A nivel de marco, todos los graflets, incluidos los ajustes preestablecidos, utilizan el Establecer grafito comando, pero cada ajuste preestablecido inicializa el marco con un conjunto diferente de argumentos. Estos argumentos incluyen fragmentos de script JSL, que luego se utilizan como devoluciones de llamada. El marco evalúa estas devoluciones de llamada en respuesta a las interacciones del usuario, como pasar el cursor sobre un elemento visual o hacer clic en la miniatura de una etiqueta flotante.
La evaluación de devolución de llamada ocurre dentro de un Contexto de ejecución de etiqueta flotante (HLEC), que captura información contextual sobre el elemento visual subyacente. Las devoluciones de llamada pueden aprovechar esta información contextual para implementar un comportamiento dinámico. Tomemos, por ejemplo, el ajuste preestablecido de histograma. Después de observar el contexto para encontrar la asignación de roles Y de visualización de referencia, reutiliza esa columna para su propia asignación de roles Y.
Otros puntos de entrada al marco de extensiones de etiquetas flotantes incluyen Pegar Graphlet (un contenedor para Set Graphlet), Establecer texto , y Establecer cuadrícula . En esta publicación, usaremos el comando Establecer Graphlet como ejemplo, pero los mismos principios se aplican a los demás también.
La mejor manera de crear grafitos personalizados es utilizar el Editor de etiquetas flotantes diálogo. También puede utilizar el editor de etiquetas flotante para inspeccionar cómo se define un ajuste preestablecido de grafito. Las definiciones preestablecidas proporcionan excelentes ejemplos de cómo utilizar las capacidades del marco.

Devoluciones de llamada de Graphlet
El panel Graphlet del Editor de etiquetas flotantes expone algunos argumentos de secuencia de comandos, siendo los más importantes Imagen y Clic. El marco los llamará en tiempo de ejecución en respuesta a los siguientes eventos:
- Flotando: Cuando el usuario coloca el puntero del mouse sobre un elemento visual durante un corto período de tiempo, como cuando el usuario pausa el mouse sobre una barra en un gráfico de barras, se ejecuta el fragmento de secuencia de comandos de imagen. Al hacerlo, se producirá un PictureBox (un caja de presentación que contiene un objeto de imagen gráfica) o un árbol de visualización que contiene un PictureBox. Si el script requiere la ejecución de una Plataforma, se iniciará dentro de una ventana invisible. Luego, el marco atravesará el árbol de visualización del resultado y luego capturará y reducirá una captura de pantalla del primer PictureBox encontrado. Esa imagen se convierte en la miniatura que se muestra dentro de la etiqueta emergente.
- Haciendo clic: Cuando el usuario hace clic con el botón izquierdo en la miniatura del grafito de etiqueta flotante, se activa el argumento opcional Click. Si no está presente, el script de imagen se reutiliza, pero la ejecución de una plataforma contenida da como resultado una ventana visible. Así es como los ajustes preestablecidos inician sus visualizaciones.
La devolución de llamada Click puede ejecutar scripts JSL arbitrarios. Por ejemplo, puede abrir páginas web, realizar llamadas REST, cargar archivos desde el disco y actualizar tablas. Permite la integración con datos externos, sistemas y otros escenarios avanzados.
Como se mencionó anteriormente, la evaluación de las devoluciones de llamada ocurre dentro de contextos de ejecución, que tienen dos componentes:
- Un filtro de datos local que subconjuntos de filas para que coincidan con los datos del elemento visual.
- Un espacio de nombres local que captura los atributos del elemento visual.
Filtro de datos locales
Cada elemento visual de un gráfico corresponde a un subconjunto de los datos originales. Por ejemplo, veamos un gráfico de barras que muestra el promedio de altura de los estudiantes por sexo. La primera barra corresponde a las alumnas; el segundo es para los machos. Esta agrupación implícita ocurre durante la definición de una visualización.
El marco hace explícita la agrupación a través de un equivalente Filtro de datos locales (LDF), que se utiliza para restringir las filas de la tabla de datos visibles durante la ejecución de la devolución de llamada. La definición de LDF se basa en:
- El tipo de gráfico de visualización de referencia.
- Las columnas asignadas a sus roles de agrupación (X, Grupo X/Y, Superposición, etc.).
- Los valores asociados con estas columnas.
En el siguiente ejemplo, el gráfico de referencia es un pequeño gráfico de barras de múltiplos. El marco lo asigna a un LDF en función de sus dos variables de agrupación:
- El asignado al rol X (edad).
- El asignado al Grupo Y (sexo).
Observe cómo la barra flotante y el panel que contiene el gráfico generan los valores de filtro.

Es posible un control adicional sobre la inclusión de columnas a través de la Saltar filtros atributos. Si bien rara vez es necesario, puede resultar útil si desea mostrar más datos de los que normalmente se asocian con el elemento visual subyacente.
El mecanismo central detrás desgloses es la capacidad de lanzar plataformas con LDF basados en contexto en respuesta a las interacciones del usuario.
Espacio de nombres local
El segundo componente del HLEC es un espacio de nombres local . Su objetivo principal es exponer información de contexto al grafito, lo que le permite exhibir un comportamiento dinámico y consciente del contexto. El marco envuelve cada devolución de llamada de grafito en un espacio de nombres local antes de ejecutarla.
El espacio de nombres local del grafito lo rellena el marco con variables locales. Estos variables de contexto siguen una convención de nomenclatura, lo que significa que sus nombres siempre deben comenzar con un guión bajo. Captan información de diferentes fuentes asociadas al contexto de ejecución actual:
- Tipo de elemento visual suspendido (barra, marcador, etc.).
- Índice de la primera fila de los datos asociados.
- Número de observaciones en los datos asociados.
- Colocar el cursor sobre las entradas de la cuadrícula de etiquetas (una variable para cada entrada).
- Tipo de devolución de llamada (Imagen, Clic, etc.).
- LDF donde cláusula.
- Los niveles de desglose cuentan.
Una manera fácil de verificar los valores de un nuevo grafito al depurarlo es usar el ajuste preestablecido de contexto de Textlet, que agrega los valores como texto a la etiqueta flotante, como se ve a continuación:

Poniendolo todo junto
El siguiente diagrama muestra cómo se unen las diferentes partes del marco en la ejecución de un ajuste preestablecido de grafito. En un grafito personalizado, el usuario proporciona la plantilla de gráfico utilizando el argumento de secuencia de comandos de imagen.

Primero, el marco captura una plantilla de gráfico y otros argumentos en el momento de la configuración. Posteriormente, en respuesta a las interacciones del usuario, crea el filtro y el espacio de nombres que forman parte del HLEC. Crea una instancia de la plantilla dentro del HLEC para generar la imagen en miniatura de la etiqueta flotante. Si el usuario hace clic en esa imagen, inicia la plataforma asociada en su propia ventana.
Un ejemplo de grafito personalizado
Ahora que comprende la mecánica, aquí hay un ejemplo de cómo acceder al marco de trabajo del grafito subyacente ayudó a un usuario a resolver un problema real.
No hace mucho, un usuario hizo una pregunta aquí en el Comunidad de usuarios de JMP . Tenía una carpeta con archivos de imágenes (específicamente, fotografías de alta resolución) de sus experimentos. Quería mostrar la imagen asociada con un experimento en la etiqueta flotante, pero las imágenes eran demasiado grandes para almacenarlas en sus tablas JMP. ¿Era posible cargarlos desde el disco bajo demanda?
Hubo algunos obstáculos para que esto sucediera. No se alineaba con ninguno de los ajustes preestablecidos existentes, no era una buena opción para Pegar Graphlet ya que requería un comportamiento dinámico y el nombre de archivo de la imagen mostrada tenía que calcularse según demanda.
La solución fue crear un grafito personalizado ampliando el marco con devoluciones de llamada basadas en primitivas de archivos JSL.
Los principios de esa solución se muestran a continuación en un ejemplo basado en el conjunto de datos de Iris. La parte crítica de este ejemplo es mostrar cómo se puede cargar la imagen directamente desde el disco. El nombre del archivo se basa en una de las variables del espacio de nombres local HLEC. Como beneficio adicional, puede ver cómo abrir una página web relacionada en respuesta a que el usuario haga clic en la imagen mostrada.
Set Graphlet(
// Value from hover label grid entry (labeled column)
Picture(
Picture Box( Open( img_dir || local:_Species || ".jpg", "jpg" ) )
),
// Value from data table using column reference for visualized row
Click(
Web( "https://en.wikipedia.org/wiki/Iris_" || Column( "Species" )[local:_firstRow] )
)
)

Conclusión
Si bien esperamos que siempre pueda utilizar ajustes preestablecidos y pegar gráficos para implementar la mayoría de sus requisitos, sabemos que eso no siempre es posible. Al utilizar el marco, puede crear sus propias extensiones de etiquetas flotantes personalizadas siempre que tenga una necesidad especial.
Si tiene preguntas, desea compartir sus creaciones o simplemente ver qué se les ocurre a otros usuarios, únase a nosotros aquí en el Comunidad de usuarios de JMP . ¡Esperamos ver tu próximo genial grafito!