Etiqueta flotanteHola,
Me gustaría mostrar una foto en mi etiqueta flotante cuando hago clic en un punto de un gráfico (como en el archivo "Familias de clases grandes", script "constructor de gráficos con imágenes").
Me gustaría hacer lo mismo pero sin la columna "Imagen"
De hecho, tengo una base de datos con muchas líneas y poner fotos para cada línea sería demasiado pesado.
Me gustaría tener una carpeta en mi computadora con todas las fotos, en formato “.jpg”. Estas fotos tendrán el mismo nombre que está en la columna "nombre" de mi base de datos.
Por ejemplo, la foto de Katie se llamará en la carpeta de mi computadora: "KATIE.jpg".
Cuando hago clic en un punto, me gustaría que se muestre la imagen correspondiente (que está en una carpeta de mi computadora y no en una columna de "imagen") gracias a la columna "nombre" que tiene el mismo nombre que mi fotos
Puedes ayudarme por favor ?
Por el momento solo puedo abrir la carpeta con todas mis fotos cuando paso sobre un punto pero no me muestra la foto que corresponde al punto en la etiqueta flotante
Gracias
Acceso a los datosLa personalización en masaRe: Etiqueta flotante@txnelson Gracias por revisar.
Tienes razón, el argumento en miniatura, que es el problema principal. @francoise Lo que estaba preguntando es una característica exclusiva del JMP16. Esto se estableció al principio de este hilo, en mi intercambio con @Emma1 . Supuse que ella lo sabía, pero debería haber sido más explícito (tal vez agregar una verificación de versión al script).
Sería posible crear una versión equivalente a JMP15 reduciendo la imagen explícitamente, antes de devolverla para que se muestre en el script de imagen (devolución de llamada JSL del graflet).
Re: Etiqueta flotante@nascif_jmp , he validado @francoise encontrando que no se muestra ningún gráfico en el grafito que ejecuta JMP 15. Sin embargo, el gráfico sí se muestra en JMP 16.
Re: Etiqueta flotanteHola,
No entiendo tu guión:
Mira la imagen, no hay ninguna imagen en la etiqueta.
atentamente
Re: Etiqueta flotanteHola de nuevo, @francoise ,
Estaba pensando un poco más sobre el problema y creo que podría estar relacionado con el uso de variables JSL fuera de la declaración Set Graphlet. Es difícil decirlo sin ver tu guión, pero eché un segundo vistazo a un guión de ejemplo que publiqué para @Emma1 y veo que la variable que define el tamaño de la miniatura se definió fuera de la definición del grafito. Esto podría resultar problemático.
Consulte el ejemplo adjunto que resuelve este problema; con suerte, le brindará una ruta para resolver el problema que describió.
¡Buena oportunidad!
Re: Etiqueta flotanteEste gráfico utiliza varias agrupaciones.
Incluso si lo quito, no es bueno.
mis mejores deseos
Re: Etiqueta flotanteAunque por lo que parece en la captura de pantalla, los dos puntos parecen estar en el mismo panel. Es difícil decirlo sin mirar el guión. Si no puede publicar una copia aquí, envíe una copia a nuestro soporte técnico.
Además, dado que este problema ya está marcado como resuelto, sugeriría iniciar un hilo nuevo.
Re: Etiqueta flotanteHola @francoise ,
¿Este gráfico utiliza un GrupoX, un GrupoY o algún otro tipo de agrupación? Si es así, es probable que haya configurado un panel pero no el otro: los paneles son independientes debajo de las cubiertas.
Una solución alternativa simple es eliminar la agrupación, agregar la personalización de sus miniaturas y solo entonces agregar la agrupación. Eso asegura que la personalización se aplicará por igual a todos los paneles.
Re: Etiqueta flotanteHola,
Puse en el script la misma miniatura para la etiqueta flotante y para todos los fotogramas, pero no entiendo por qué tengo dos imágenes que no tienen el mismo tamaño.
¿Alguien tiene una explicación?
mejor
saludos
Re: Etiqueta flotanteHola @Emma1 ,
Es bueno verte progresar. Con respecto al mensaje de error, supongo que estaba relacionado con el uso del atributo Miniatura que no es compatible con JMP 15. Parece que no aparece ningún mensaje de error en JMP 15 una vez que se eliminó, ¿es correcto? Además, en su ejemplo de código, comentó el atributo Thumbnail() pero dejó la coma anterior. Yo también lo quitaría.
En cuanto a por qué solo obtuviste la configuración en tu segundo gráfico en tu primer intento, es porque reutilizaste el nombre de la variable 'gb'. Cuando realiza la segunda llamada a 'gb = Graph Builder(...', sobrescribió la referencia al primer gráfico.
En tu segundo intento, las cosas funcionaron porque hiciste la configuración antes de reutilizar la variable, por lo que la referencia al primer gráfico seguía siendo válida. Pero tiene razón en que la duplicación del código es desafortunada.
Adjunto un ejemplo actualizado que muestra cómo resolver este problema usando dos funciones JSL:
- Funciones (para capturar bloques de código para que puedan usarse en múltiples lugares) y
- Listas (para mantener múltiples referencias en una sola variable, que se puede iterar para aplicar una acción a todas ellas).
El uso de estas técnicas le permitirá mantener sus scripts fáciles de mantener y organizados.
Puedes conocer más sobre ellos en el Guía de secuencias de comandos JMP .
Re: Etiqueta flotanteProbé el mismo script en JMP 15 en otra computadora y recibí el mismo mensaje de error, que se muestra al hacer clic en la foto en la miniatura.
Que tenga un buen día
Re: Etiqueta flotanteProbé mi script en JMP 15, lo hice varias veces y cada vez aparece este mensaje de error (y JMP 15 se cierra):

¿Tienes una explicación?
Recibí un mensaje, que ya fue al soporte técnico.
Re: Etiqueta flotanteAl reelaborar mi guión, logré reducir aún más el tamaño de la imagen cuando hago clic en la miniatura. Mantuve el valor de 0,25 que me parece perfecto.
Para mi segundo problema (la parte del script para mostrar imágenes que solo se aplicaba a mi segundo gráfico y no al primero), lo resolví.
Copio la parte del script que me permite mostrar las imágenes en las miniaturas y la "pego" debajo de cada uno de mis gráficos.
Pesó mi guión pero solo encontré esta solución. ¿Estás pensando en algo más?
Gracias
Re: Etiqueta flotanteHola,
Aquí está mi guión:
Names Default To Here( 1 );
cwd = "...";
//dt = Open("....jmp");
//thumbSize = {400, 400};
scaleValue = 1.0;
gb = Graph Builder(
Size( 604, 492 ),
Variables( X( :Mois ), Y( :"A"n ) ),
Elements( Points( X, Y, Legend( 4 ) ) )
);
gb = Graph Builder(
Size( 604, 492 ),
Variables( X( :Semaine ), Y( :B ), Group X( :Produit ) ),
Elements( Points( X, Y, Legend( 5 ) ), Smoother( X, Y, Legend( 6 ) ) )
);
frames = (gb << report) << xpath( "//FrameBox" );
Show( N Items( frames ) );
frames << Set Graphlet(
Picture(
Picture Box(
fileName = cwd || :Name( "Quantième +n°cuve" )[local:_firstRow] || ".jpg";
Show( fileName );
img = Open( fileName, "jpg" );
img << scale( scaleValue );
img;
)
),
//Thumbnail( thumbSize )
);
En primer lugar, no puse "Miniatura" en el script porque otros usuarios tienen JMP 15. La imagen todavía se muestra muy bien, en miniatura de tamaño estándar (170 x 200). ¿El "valor de escala" se utiliza para mostrar la foto de un tamaño determinado cuando haces clic en la imagen en miniatura? Eso es todo ?
Luego, hice un script para generar dos gráficos.
Las imágenes aparecen en la etiqueta solo en el segundo gráfico (varias partes), no en el primer gráfico.
Sin embargo, en mi segundo gráfico el problema de las miniaturas está solucionado, tengo imágenes en mis etiquetas en todas las partes.
Me gustaría encontrar una manera de que la última parte del script (que muestra fotos en la etiqueta) se use para todos los gráficos anteriores (en realidad hay muchos más de 2) para que las fotos estén en las miniaturas de todos los gráficos. Es posible ?
Gracias
Que tenga un buen día
Re: Etiqueta flotanteLo único específico de JMP16 es el atributo Thumbnail() que le permite reducir el tamaño de la miniatura.
Sospecho que con la nueva forma en que reducimos la imagen antes de mostrarla al hacer clic, es posible que no la necesite.
Re: Etiqueta flotanteOk, probaré tu script para aplicarlo a los demás de mis gráficos.
Por otro lado, no entendí qué funcionaba en JMP 16 y no en JMP 15. ¿Puedes explicarlo por favor?
De hecho, estoy probando JMP 16 EA pero otros usuarios tienen JMP 15, así que necesito un script que funcione con JMP 15...
Gracias
Que tenga un buen día
Re: Etiqueta flotanteHola de nuevo, @Emma1 !
Me alegro de que la configuración del tamaño de miniatura ahora funcione para usted. Lamento no haberle dado un ejemplo completo. Pero lo descubriste, ¡bien hecho!
Solo un recordatorio para otros lectores, esta configuración se agregó en 16.0, así que supongo que estás usando una versión Early Adopter.
En cuanto a que la imagen que se muestra al hacer clic es demasiado grande, sigue leyendo, agregué una solución para eso en el siguiente script.
Con respecto a configurar el grafito de visualización de imágenes en un gráfico que utiliza una variable de agrupación, ya ha adivinado el problema. Debajo de las sábanas, el gráfico en cada uno de los paneles, o marcos, como los llamamos, es un gráfico individual, y el comando DispatchReport solo configura el primero.
Una solución sencilla para esto es utilizar XPath para encontrar todos los fotogramas en su gráfico compuesto:
gb = dt << Graph Builder( ... );
frames = (gb << report) << xpath("//FrameBox");
Show(NItems(frames)); // one frame(graph) per panel
Las referencias de marco se capturan en una lista. Ahora podemos configurarlos todos a la vez enviando un mensaje setGraphlet (cualquier mensaje, en realidad) a la lista, que "transmite" el mensaje a sus miembros:
frames << Set Graphlet( ... );
El guión completo se adjunta a continuación. Observe cómo usamos el mensaje scale() para cambiar el tamaño de la imagen (la amplié, probablemente querrá reducirla) antes de devolverla para que JMP la muestre al hacer clic en la imagen en miniatura (que aún utiliza el tamaño determinado por el atributo Thumbnail()).
img = Open( fileName, "jpg" );
img << scale( scaleValue );
Si desea mostrar una imagen diferente al hacer clic en la miniatura, o realizar una acción diferente (abrir una página web o ejecutar un script), puede pasar un fragmento JSL al atributo llamado setGraphlet() Click().
Re: Etiqueta flotanteHola de nuevo !
Intenté "pegar" mi script para mostrar las fotos en otros gráficos, pero todavía tengo un problema.
Cuando se trata de gráficos con una variable que tenemos "agrupados" en la parte superior (como en la imagen que os envío), las fotos de los quesos se muestran sólo en la parte izquierda, no en las demás partes.
Como si JMP considerara que eran dos gráficos y aplicara el script sólo en la parte izquierda.

Además, tengo algunos gráficos que tienen varios "Envío" dentro de "Enviar al informe".
En estos casos, ¿dónde puedo colocar mi script de búsqueda de mis fotos de queso para poder aplicarlo a todo mi gráfico?
Gracias por tu ayuda y perdón por todas estas preguntas.
De hecho, me ayudaste mucho la primera vez...
Re: Etiqueta flotanteHola,
Tengo otra pregunta :
Este script solo se aplica a un gráfico (que construí al principio)
Tengo otro script (mucho más largo) que te permite crear varios gráficos y mostrarlos en la misma ventana y en diferentes pestañas.
Me gustaría aplicar el script anterior (que muestra las fotos de los quesos cuando hacemos clic en un punto) a todos mis demás gráficos.
¿Hay una forma fácil de hacer esto?
Gracias
Re: Etiqueta flotante@nascif_jmp ¡Logré!
Tenía que anteponerse a "constructor de gráficos".
tX = 400;
tY = 400;
size = Eval List( {tX, tY} );
gb = Graph Builder( /* ... */ );
Y para la miniatura:
SendToReport(
Dispatch(
{},
"Graph Builder",
FrameBox,
{Set Graphlet(
Picture(
Picture Box(
fileName = cwd || :Name( "Quantième +n°cuve" )[local:_firstRow] || ".jpg";
Show( fileName );
Open( fileName, "jpg" );
)
),
Thumbnail( size )
)}
)
)
Gracias de nuevo por tu ayuda !
que tenga un buen día
Re: Etiqueta flotanteHola,
Estoy intentando aumentar el tamaño de la miniatura con el script.
Agregué al comienzo de mi guión:
gb = Graph Builder(
tX = 400;
tY = 400;
size = Eval List( {tX, tY} );
Size( 531, 456 );,
Show Control Panel( 0 )
// ...
);
Sin embargo, cuando agrego "Miniatura" al final de esta manera, ya no funciona:
gb = Graph Builder(
tX = 400;
tY = 400;
size = Eval List( {tX, tY} );
Size( 531, 456 );,
Show Control Panel( 0 ),
// ...
SendToReport(
Dispatch(
{},
"Graph Builder",
FrameBox,
{Set Graphlet(
Thumbnail( size ),
Picture(
Picture Box(
fileName = cwd || :Name( "Quantième +n°cuve" )[local:_firstRow] || ".jpg";
Show( fileName );
Open( fileName, "jpg" );
)
)
)},
)
)
);
Intenté configurar "Miniatura (tamaño)" en otros lugares del script pero no puedo aumentar el tamaño, creo que no lo estoy colocando en el lugar correcto.
Es una buena idea hacer clic en la foto directamente en la miniatura para verla en grande, pero el tamaño es demasiado grande.
Que tenga un buen día
Gracias
Re: Etiqueta flotante¡Me alegro mucho de que haya funcionado! ¡Y más aún ver un queso tan bonito! 
Puede agregar el tamaño de la miniatura al script. Agregue al comienzo del guión:
tX = 400; tY = 400;
size = EvalList({tX, tY});Y luego agregue, dentro de su llamada setGraphlet (tal vez después del atributo Imagen)
Thumbnail( size )
Tenga en cuenta también que tiene la opción de hacer clic en la miniatura para abrir la imagen (en tamaño completo) en una ventana separada.
Re: Etiqueta flotanteMuchas gracias por tu ayuda ¡Lo logré!
Sólo faltaba un "/" al final de mi ruta "cwd"
Aquí está la foto:

En mi captura de pantalla, aumenté el tamaño de mi foto en el editor de etiquetas flotantes y luego en la pestaña "Miniatura"
Puse Ancho = Alto = 400 mientras que al principio estaba Ancho = 200 y Alto = 170
¿Es posible agregar este tamaño de foto en el guión? 400 x 400?
¿O cada usuario del script necesita cambiar esto con el editor de etiquetas flotantes?
Gracias
Re: Etiqueta flotanteHola @Emma1 ,
Les prometo que JMP puede establecer la conexión entre la identificación y el nombre del archivo. Pero tenemos que darle suficiente información para que lo haga.
¿Ha definido la variable 'cwd' para que apunte a la carpeta donde está el archivo? El comando 'Abrir' necesita un nombre de archivo completo.
Agregue al comienzo del script, antes de la creación de la instancia de Graph Builder, una expresión para definir cwd como una cadena con la ruta a su carpeta de imágenes.
Algo como:
Names Default to Here(1);
cwd = "C:/myProject/myImages/"; //CHANGE THE PATH TO MATCH YOUR IMAGE FOLDER
gb = Graph Builder( ...
En el ejemplo original que compartí, estaba definiendo 'cwd' usando el directorio actual (desde donde se cargó el script) porque en mi caso la carpeta de la imagen estaba en el mismo directorio que el script. Este podría ser o no tu caso. Es más sencillo si simplemente especifica la ruta de la carpeta de imágenes directamente.
Además, no olvide usar Show() y verificar los registros para asegurarse de que el nombre del archivo sea el que esperaba.
¡Estás muy cerca! ¡Estoy deseando ver una captura de pantalla de la etiqueta emergente con una de sus imágenes dentro!
Re: Etiqueta flotanteHola
Probé tu línea de código:
SendToReport(
Dispatch(
{},
"Graph Builder",
FrameBox,
{Set Graphlet(
Picture(
Picture Box(
fileName = cwd || :Name( "Quantième +n°cuve" )[local:_firstRow] || ".jpg";
Show( fileName );
Open( fileName, "jpg" );
)
)
)}
)
)
Desafortunadamente, todavía no funciona. Todavía tengo una cruz en mi etiqueta flotante.
JMP no establece la conexión entre el nombre de mi columna y el nombre de mis imágenes que están en una carpeta de mi computadora.
Intenté también cambiar el nombre "Quantième+n°cuve" para poner uno más simple ("id"), mientras cambiaba el nombre de la columna en mi base de datos, sin embargo, todavía no funciona.
Gracias por tu ayuda
Re: Etiqueta flotanteLa cruz indica que no pudo cargar el archivo. Entonces todavía no estamos generando el nombre del archivo correctamente.
Es hora de hacer un poco de depuración.
Prueba esto:
Imagen( Cuadro de imagen (
nombre de archivo = cwd || :Nombre( "Quantième +n°cuve") [local:_firstRow] || ".jpg";
Mostrar (nombre de archivo);
Abierto ( Nombre del archivo , "jpg" ))
),
Luego verifique el registro de JMP después de pasar el cursor sobre un punto. Asegúrese de que el nombre del archivo impreso allí coincida con el nombre del archivo de imagen en su carpeta.
Tenga en cuenta también cómo cambié la forma en que se refiere al nombre de la columna; debe usar la función Nombre() para nombres de columnas que incluyen caracteres de nombre JSL no válidos como ese. Ese cambio podría en realidad resolver este problema.
Re: Etiqueta flotanteOk genial gracias!
Ahora tengo esto:

Y la última línea de mi guión es:
Picture(PictureBox(Open( cwd || :"Quantième +n°cuve"[local:_firstRow] || ".jpg", "jpg"))),
Ahora, tengo una cruz en mi etiqueta flotante...
Puedes ayudarme por favor ?
Gracias
Re: Etiqueta flotanteVale, veamos:
>>Aplico lo que me dices pero cuando hago clic en un punto, la etiqueta flotante no aparece, solo se abre el archivo de fotos de mi computadora.
La etiqueta flotante (el nombre de JMP para lo que generalmente se llama información sobre herramientas) aparece, como su nombre lo indica, cuando pasa el mouse o coloca el mouse sobre un marcador en su gráfico, no cuando hace clic en él. Una vez que se muestra la etiqueta emergente (y si todo va bien, debería incluir una miniatura de su archivo de imagen), puede hacer clic en la imagen para realizar acciones adicionales, por ejemplo, abrir la imagen en una nueva ventana JMP.
>> En la última línea de mi script: "Imagen (PictureBox (Open (cwd," \ .jpg "))),"
El comando de apertura anterior tiene dos problemas:
1) Al primer argumento le falta el valor de la fila de la tabla para crear un nombre de archivo correspondiente. Está intentando abrir una carpeta, no un archivo de imagen.
2) El segundo argumento, el modificador de tipo que le indica al comando de apertura cómo leer los datos del archivo, debe ser simplemente "jpg".
Para recordar, aquí está el comando de apertura del ejemplo que publiqué anteriormente:
Picture(PictureBox(Open( cwd || local:_Species || ".jpg", "jpg"))),
Observe cómo se utiliza una variable local ("local:_Species") para crear el nombre del archivo que coincida con su observación. Creo que tiene una columna similar en su tabla de datos. Las variables locales que contienen el valor correspondiente para el marcador visual actual se crean automáticamente para las columnas etiquetadas. Si la columna de su tabla de datos que coincide con el nombre del archivo no está etiquetada, aún puede obtener su valor utilizando una referencia de columna directa utilizando la variable local 'local:_firstRow' como índice. Se vería así:
Picture(PictureBox(Open( cwd || :species[local:_firstRow] || ".jpg", "jpg"))),
Estas variables locales se definen como parte del Contexto de ejecución de etiqueta flotante .
>> ¿Es posible en este paso especificar abrir la foto del punto que tiene el mismo nombre en mi carpeta de fotos y en una de mis columnas en mi base de datos? ¿Vincular los nombres de esta columna a los nombres de las imágenes en la carpeta de mi computadora?
Sí, lo es. Estamos muy cerca de hacerlo funcionar. 
Re: Etiqueta flotanteEstá bien, gracias !
Aplico lo que me dices, pero cuando hago clic en un punto, la etiqueta flotante no aparece, solo se abre el archivo de fotos de mi computadora.
En la última línea de mi script: "Imagen (PictureBox (Open (cwd," \ .jpg "))),"
¿Es posible en este paso especificar abrir la foto del punto que tiene el mismo nombre en mi carpeta de fotos y en una de mis columnas de mi base de datos? ¿Vincular los nombres de esta columna a los nombres de las imágenes en la carpeta de mi computadora?
Gracias
Re: Etiqueta flotante@Emma1 ,
El script que publiqué como ejemplo en mi respuesta muestra cómo mostrar la imagen dentro de la etiqueta emergente como una miniatura como lo describió.
Y sí lee la imagen del disco, no de la web.
La función "abrir", a pesar de su nombre, no abre la carpeta. Carga la imagen y la pasa a un Cuadro de imagen , que se reduce y se muestra como una miniatura dentro de la etiqueta emergente.
La visualización de la imagen en el navegador en un evento de clic es opcional. Puede eliminar el atributo "Clic" del script si no lo desea.
En cuyo caso, al hacer clic en la miniatura se mostrará la imagen en una ventana JMP normal.
Re: Etiqueta flotanteMuchas gracias por tus dos respuestas. @HadleyMyers y @nascif_jmp .
Ya leí el artículo con Iris y probé el guión.
Sin embargo, en lugar de hacer referencia a un enlace web, me gustaría hacer referencia a una imagen en una carpeta.
No debería aparecer en mi script un enlace web, sino un enlace para encontrar una foto en particular.
Además, no sería necesario abrir la carpeta de fotos con la función "abrir" presente en el script, solo sería necesario que esta foto se muestre en la etiqueta flotante.
Re: Etiqueta flotanteMe gusta esto más de lo que sugerí.
Re: Etiqueta flotanteHola @Emma1 ,
Esto se puede hacer usando Graphlets, una extensión de etiqueta flotante agregada en JMP 15.0. Necesitará un poco de JSL para indicarle a JMP cómo encontrar su archivo de imagen, según el valor de su columna de imagen. El siguiente ejemplo ilustra ese enfoque, utilizando el conjunto de datos Iris y derivando el nombre del archivo de imagen de la especie correspondiente. Como beneficio adicional, muestra cómo abrir la foto en una ventana del navegador cuando haces clic en la miniatura de la etiqueta emergente.
También puede utilizar el Editor de etiquetas flotantes para implementar esta misma técnica, con menos codificación (solo necesitará proporcionar el contenido para los atributos 'Imagen' y 'Clic' (opcional) a continuación.
Más detalles en nuestro documentación.
Consulta también el WikiReader Script de intercambio de archivos para ver un ejemplo de visualización de imágenes (y texto) desde una API web (en este caso, Wikipedia).
// Uses Graphlet to display flower image as thumbnail, click to open in browser
Names Default to Here(1);
cwd = Get Default Directory();
dt = Open("$SAMPLE_DATA/Iris.jmp");
gb = dt <<
Graph Builder(
Size( 531, 456 ),
Show Control Panel( 0 ),
Variables( X( :Petal length ), Y( :Sepal length ), Color( :Species ) ),
Elements( Points( X, Y, Legend( 2 ) ) ),
SendToReport(
Dispatch(
{},
"Graph Builder",
FrameBox,
{Set Graphlet(
Picture(PictureBox(Open( cwd || local:_Species || ".jpg", "jpg"))),
Click(Web( "file://" || cwd || local:_Species || ".jpg" ))
)}
)
)
);
Re: Etiqueta flotanteHola,
¡Ésta es una petición realmente interesante!Se me ocurre una forma posible de hacer esto sería usar secuencias de comandos para 1) crear una nueva columna, 2) insertar la imagen en esa columna en una fila donde el nombre del archivo coincida con un valor en otra columna, 3) mostrar la imagen como una etiqueta flotante.De esta manera, las imágenes solo se agregarán a la tabla cuando se pase el cursor sobre los puntos.Puede agregar una línea al inicio del script que elimine la columna de imagen si existe antes de crear una nueva, asegurando así que solo se inserte una imagen en su tabla a la vez.¿Suena esto como algo que funcionaría?