en un anterior correo , aprendió sobre los ajustes preestablecidos de graflet y el comando Pegar graflet. Le mostramos cómo admiten miniaturas de visualización sensibles al contexto y 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 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 un marco al que también puede acceder directamente el usuario, lo que permite la implementación de requisitos que no están cubiertos por las características de porcelana.
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 presets y los graphlets 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 graphlets, incluidos los ajustes preestablecidos, utilizan el Establecer graflet comando, pero cada ajuste preestablecido inicializa el marco con un conjunto diferente de argumentos. Estos argumentos incluyen fragmentos de secuencias de comandos 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 mouse 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 etiquetas flotantes (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 preajuste de histograma. Después de mirar el contexto para encontrar la asignación de roles Y de visualización de referencia, luego reutiliza esa columna para su propia asignación de roles Y.
Otros puntos de entrada al marco de extensiones de etiquetas flotantes incluyen Pegar graflet (un envoltorio para Set Graphlet), Establecer hoja de texto , y Establecer cuadrícula . En esta publicación, usaremos el comando Establecer Graphlet como ejemplo, pero los mismos principios también se aplican a los demás.
La mejor manera de crear graphlets personalizados es usar el Editor de etiquetas flotantes diálogo. También puede usar el Editor de etiquetas flotantes para inspeccionar cómo se define un ajuste preestablecido de graflet. Las definiciones preestablecidas proporcionan excelentes ejemplos de cómo usar las capacidades del marco.

Devoluciones de llamada de Graphlet
El panel Graphlet de Hover Label Editor 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 breve período de tiempo, como cuando el usuario detiene el mouse sobre una barra en un gráfico de barras, se ejecuta el fragmento de script de imagen. Hacerlo da como resultado la producción de 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 recorrerá 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 flotante.
- Haciendo clic: Cuando el usuario hace clic con el botón izquierdo en la miniatura del graflet de la etiqueta flotante, se activa el argumento Click opcional. Si no está presente, se reutiliza el script de imagen, pero la ejecución de una plataforma contenida da como resultado una ventana visible. Así es como los presets lanzan 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 los contextos de ejecución, que tienen dos componentes:
- Un filtro de datos local que divide las filas en subconjuntos 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 en un gráfico corresponde a un subconjunto de los datos originales. Por ejemplo, veamos un gráfico de barras que muestra el promedio de la estatura 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 LDF se basa en:
- El tipo de gráfico de visualización de línea base.
- 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 gráfico de barras de múltiplos pequeños. 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 ser ú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 basadas 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 graflet, lo que permite que el graflet muestre un comportamiento dinámico y consciente del contexto. El marco envuelve cada devolución de llamada de graflet en un espacio de nombres local antes de ejecutarlo.
El marco de trabajo rellena el espacio de nombres local del graflet 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. Capturan información de diferentes fuentes asociadas al contexto de ejecución actual:
- Tipo de elemento visual flotante (barra, marcador, etc.).
- Índice de la primera fila de los datos asociados.
- Número de observaciones en los datos asociados.
- Pase el mouse sobre las entradas de la cuadrícula de etiquetas (una variable para cada entrada).
- Tipo de devolución de llamada (imagen, clic, etc.).
- LDF cláusula where.
- Los niveles de desglose cuentan.
Una forma sencilla de comprobar los valores de un nuevo graflet al depurarlo es utilizar el ajuste preestablecido de contexto de Textlet, que añade los valores como texto a la propia etiqueta flotante, como se ve a continuación:

Poniendolo todo junto
El siguiente diagrama muestra cómo las diferentes partes del marco se unen en la ejecución de un ajuste preestablecido de graflet. En un graflet 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 de la HLEC. Instancia la plantilla dentro de la 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 graflet personalizado
Ahora que comprende la mecánica, aquí hay un ejemplo de cómo acceder al marco de trabajo de graphlet subyacente ayudó a un usuario a resolver un problema real.
No hace mucho tiempo, un usuario hizo una pregunta aquí en el Comunidad de usuarios de JMP . Tenía una carpeta con archivos de imágenes (específicamente, imágenes 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 a pedido?
Hubo algunos obstáculos para que esto sucediera. No se alineaba con ninguno de los ajustes preestablecidos existentes, no encajaba bien con Pegar Graphlet ya que requería un comportamiento dinámico y el nombre de archivo de la imagen mostrada tenía que calcularse a pedido.
La solución fue crear un graflet 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 de archivo se basa en una de las variables de espacio de nombres locales de HLEC. Como beneficio adicional, puede ver cómo abrir una página web relacionada en respuesta al clic del usuario 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 usar ajustes preestablecidos y pegar gráficos para implementar la mayoría de sus requisitos, sabemos que eso no siempre es posible. Al usar 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 su próximo graflet genial!