gráficos circulares + mapas de calorHola a todos,
Como biólogo marino, recientemente me topé con una presentación visual de datos de arrecifes de coral que realmente me gusta (ver archivo adjunto). En él, verá varios gráficos circulares en los que las cuñas individuales son esencialmente mapas de calor para mostrar niveles relativos de ciertos parámetros. Me gustaría adaptar esto para mi propia investigación y CREO que se puede hacer con Graph Builder, aunque no como un mapa de calor per se. Aquí está mi idea: digamos que quiero cuatro sectores que representen cuatro variables de respuesta (A, B, C y D). El tamaño no es importante, así que le daré a cada uno un valor de 0,25 para que ocupen áreas iguales. Me doy cuenta de que puedo superponer colores, así que creé una columna de "color" y asigné valores para las cuatro variables de respuesta, pero luego mi gráfico no cambió en consecuencia.
Intenté colorear y etiquetar valores, pero no tuve suerte. ¡Siento que acabo de configurar mal mi mesa! ¿¿Alguna sugerencia?? ¡Gracias!
Re: gráficos circulares+mapas de caloranderson,
Ese ejemplo del cuerpo humano se usa aquí: Análisis de datos personales de dieta y estado físico con JMP y aquí: Uso de mapas personalizados como filtros de selección para crear subconjuntos y explorar gráficos de los datos de mi entrenamiento en JMP® 12
yo vi tu Presentación Discovery Summit Americas 2020 grabación: Hacia la predicción del destino de los corales de arrecife (2020-US-45MP-615) ¡pero tengo muchas ganas de verlo en vivo!
~Juan
Re: gráficos circulares+mapas de calorJohn,
Esto es genial y tengo la intención de ver la charla durante la semana (está en mi agenda). Creo que esta capacidad, junto con los "graphlets", abrirá todo tipo de puertas para superponer datos en gráficos de Graphbuilder y trazar datos en figuras personalizadas (como el ejemplo del cuerpo humano del que hablamos anteriormente y que se encuentra en algún lugar del sitio web de JMP en en forma de tutorial, creo). Tendré curiosidad por ver si alguien tiene alguna sugerencia en términos de estética. Personalmente, me gustan los gráficos circulares, pero ¿quizás haya una forma mejor que ni siquiera estamos considerando? También me gusta tu idea del estilo de videojuego "barras de salud".
Ahora que lo pienso, tal vez esto podría beneficiar a los epidemiólogos. Por ejemplo, si tuviera tasas de infección superpuestas en una cuadrícula lat-lon y luego fijara cuñas/gráficos circulares con información adicional sobre pacientes o grupos de pacientes en el gráfico de contorno, podría agregar una capa de complejidad que quizás no sea posible usando las características estándar de GraphBuilder (aunque supongo que para la mayoría de los tipos de datos, los grafitos también funcionarían para esto).
Re: gráficos circulares+mapas de calorEsta discusión me inspiró a crear un artículo y una presentación para JMP Discovery Americas 2020.¿Qué obtienes cuando combinas un biólogo marino, un videojuego y JMP? (2020-US-45MP-543)
Mientras preparaba el artículo, tuve tiempo para experimentar y mejorar las técnicas descritas en esta publicación.
Con el documento se incluyen algunos recursos (mapas personalizados y ejemplos) e instrucciones detalladas sobre cómo utilizarlos.
Espero que encuentres útil esta publicación y mi artículo.
Gracias,
~Juan
Re: gráficos circulares+mapas de caloranderson,
Graph Builder no proporciona una manera de colocar gráficos de barras o gráficos circulares en ubicaciones específicas de un mapa. Puedes evitarlo mediante:
- Crear una tabla a partir de su gráfico Graph Builder donde usa el número de muestra en la función del mapa (construida usando barras o formas de mapa personalizadas). Esto crea una tabla con una columna de número de muestra y una columna de imágenes para cada muestra.
- Copie la columna de imagen de la tabla generada nuevamente a la tabla de datos no apilados (asegúrese de que la columna de imagen coincida con el orden del número de muestra). **
- a. Etiquete la columna de la imagen O b. Establezca 'Usar como marcador' para la columna de imagen.
- Usando la tabla de datos no apilados, cree un mapa de contorno en Graph Builder usando la columna de salinidad o temperatura como función de color.
- Añade un elemento de puntos.Opcionalmente utilizando otro rol de color.
- Si sigue el paso 3.a, las imágenes aparecerán en etiquetas flotantes. Puede fijar algunas etiquetas flotantes y Reemplazar texto para eliminar cualquier texto de etiqueta flotante no deseado.
- Si sigue el paso 3 b, todos los marcadores se mostrarán con la imagen de la columna de imágenes. Esto puede provocar una visualización desordenada que puede resolver haciendo zoom o eliminando imágenes que se superpongan.
** Descubrí que no estaban en el mismo orden y tuve que ordenarlos antes de copiar la columna de imágenes. En retrospectiva, me di cuenta de que podría haber usado una unión o una unión virtual para colocar las imágenes en las filas correctas. Ojalá hubiera leído esto primero: https://community.jmp.com/t5/JSL-Cookbook/Geographic-Maps-with-Graphs-as-Markers/ta-p/53782.
Publiqué tanto 3.a como 3.b aquí:
https://public.jmp.com/packages/Heat-contour-with-image-annotations/js-p/5d64597acf28b80f980812ba

Sobre el método que utilicé para dibujar las barras. No utilicé mapas personalizados, utilicé el script de gráficos personalizados para calcular la longitud de las barras y colocarlas sobre cada punto.
Cuando se trata de racionalización, JSL suele ser la mejor opción.
~Juan
Re: gráficos circulares+mapas de calorJohn,
¡Esto es genial! ¿Crees que se podría hacer directamente en Graph Builder o requeriría secuencias de comandos y conocimientos avanzados para hacerlo? Sé que puedo modificar el script, pero estoy pensando en simplificarlo si elijo esta opción sobre los gráficos circulares para toneladas y toneladas de datos. ¿Requirió una forma personalizada o fijó manualmente todos esos íconos en el mapa?
Re: gráficos circulares + mapas de calorDe nada, Anderson y DS.
Publiqué un ejemplo de script de gráficos personalizados mejorado que anota tres variables por punto en un mapa.

Está en JMP Public. Simplemente haz clic en el siguiente enlace:
https://public.jmp.com/packages/5d605bce3560ce0d2cafd48b
Utilicé barras simples (líneas gruesas) para representar tres valores de celda ficticios por punto. Las formas circulares requerirían un poco más de trabajo, pero quería ofrecer esto como prueba de concepto. El script JSL se puede ver y descargar desde los detalles de la publicación en JMP Public.
~Juan
Re: gráficos circulares+mapas de calor¡Guau! Esto es genial. Gracias por toda la ayuda e información John. No tenía idea de que existía la función de mapa personalizado, así que entré en esa "madriguera de conejo" durante uno o dos días simplemente pensando en todas las formas geniales en que podría usar eso para trazar datos en imágenes calcadas de los corales que estudio (lamentablemente, sin embargo, rara vez tomo toneladas de muestras DENTRO de la misma colonia, aunque definitivamente es una idea de proyecto en segundo plano, y esta sería una manera genial de mostrar los hallazgos).
Creo que tener la capacidad de trazar datos en cualquier tipo de forma, imagen, etc. es definitivamente una característica de JMP que más gente debería conocer, y sugiero que sea una característica real dentro del paquete en el futuro (en lugar de una complemento, aunque el complemento funciona bien por el momento).
Para DS: En realidad, había pensado en hacer mis gráficos circulares y mapas en JMP (trazar datos en mapas es bastante sencillo con JMP una vez que lo has hecho una o dos veces), y luego usar Adobe para hacer los tipos de figuras. se muestra en mi publicación original, pero JMP tiene formas de anotar puntos de datos en gráficos, incluso fijando imágenes en ellos. Por lo tanto, con un poco de práctica y trabajo, es muy probable que puedas crear prácticamente la figura COMPLETA del mapa y los datos de mi publicación original solo en JMP. De hecho, es posible que intente hacer precisamente esto en las próximas semanas.
¡Gracias de nuevo a John por brindar la solución!
Re: gráficos circulares+mapas de calorHola @John_Powell_JMP ,
Gracias por la informacion adicional. He marcado esta discusión como favorita para poder tenerla archivada y luego volver a leer la información adicional que envió.
Lo siento, me preocupa no haber explicado lo que quise decir acerca de marcar tu publicación como una solución. No creo que pueda hacerlo porque no fui el autor original (y por lo tanto no tengo esa opción), no porque tú no abordó el mapa de calor. Mis disculpas si se lee de esa manera. Regresé y lo releí, y suena como si lo estuviera diciendo de esa manera (no es bueno de mi parte).
Estoy familiarizado con JSL y lo uso para muchas otras cosas, pero no he intentado usarlo para gráficos personalizados como este, ¡así que esta será un área nueva que aprenderé!
¡Gracias!,
DSRe: gráficos circulares + mapas de calorGracias por tus amables palabras @SDF1 .
Tienes razón en que no respondí completamente la parte sobre superponer estos gráficos sobre un mapa de fondo.
La superposición en un mapa requeriría un mecanismo diferente, como usar el script en el cuadro de diálogo Personalizar: 
Se proporcionan algunos scripts de muestra:

Puede encontrar información sobre la función Personalizar aquí:
https://www.jmp.com/support/help/14-2/customize-graphic-elements.shtml
He aquí un pequeño ejemplo utilizando círculos:

Re: gráficos circulares+mapas de calorHola @John_Powell_JMP ,
Gracias por tu rápida y clara respuesta. Antes de recibir su respuesta, volví a leer la publicación original y me di cuenta de que la había hojeado demasiado rápido y noté la mención de las últimas cinco columnas.
Luego descargué su contenido de JMP Public, examiné más los detalles allí y noté la referencia a la forma del mapa para las propiedades de la columna de etiqueta. No había explorado esa posibilidad en el pasado, así que estuve leyendo un poco y experimentando con sus mapas. ¡Muy genial!
Esperaba superponer también en el fondo la posición de longitud/latitud de donde se recopilaron los datos en el mapa mundial, como en el ejemplo del cartel original. Sin embargo, creo que eso va más allá de lo que se puede hacer en el generador de gráficos; sin embargo sería genial. Es una buena idea de visualización. Sí, definitivamente puedo ver cómo eso será útil para mi trabajo. Lo probé con algunos de nuestros datos y todo lo que tengo que hacer es ajustar el Nombre para la ID de la forma y funciona. ¡Muy bonito, gracias!
Por cierto, marcaría tu publicación como una solución (al menos para el gráfico circular), pero no creo que pueda hacerlo. ¿Puede JMP hacer tanto el gráfico circular como el contorno (o mapa de calor) como esperaba el cartel original?
¡Gracias!,
DSRe: gráficos circulares+mapas de calorApilé columnas denominadas: Sym GE HMS, host GE HMS, color de colonia, variabilidad e índice de aberración sumado. En la tabla adjunta a la publicación pública de JMP, ahora se encuentran en la columna denominada Respuestas con la etiqueta para cada respuesta (los nombres de las columnas anteriores) en la columna Etiqueta.
JMP no crea automáticamente gráficos seccionales de "diana". Hay algunos pasos involucrados:
- Creé los archivos de formas de mapas personalizados proporcionados con la publicación pública de JMP que definen las secciones y la diana.
- En Graph Builder, arrastré la columna Etiqueta a la función Forma (abajo a la izquierda), que mostraba el contorno de la forma personalizada.
- Para aplicar los colores, arrastré la columna Respuestas a la función Color (a la derecha). Esto completa el formulario con las respuestas promedio para cada sector.
- Para separar cada muestra, arrastré la columna del número de muestra a la función Ajustar (arriba a la derecha).
No puedo atribuirme el mérito de la bonita idea de visualización. Proviene del cartel original.
Me alegra ver que también puede ayudarte.
~Juan
Re: gráficos circulares+mapas de calorHola @John_Powell_JMP ,
Estoy realmente interesado en probar esto para ver si puedo adaptarlo a algunos de los informes que realiza mi empresa.
Mencionas que apilaste por columnas de interés, pero ¿cuáles son esas? Descargué la tabla de datos, pero no puedo determinar qué columnas se necesitan para apilar. Y, ¿JMP genera automáticamente el gráfico circular como una "diana" seccional, o se trata de una configuración separada? No había visto uno como este antes. Es una visualización agradable y nueva para mí, por eso tengo curiosidad.
¡Gracias!,
DSRe: gráficos circulares + mapas de calorCon las columnas de interés apiladas, se puede utilizar un mapa personalizado para lograr la visualización que estás buscando.
A continuación se muestra un ejemplo en JMP público que utiliza los datos que ha proporcionado.
Puede encontrar el mapa personalizado y la tabla de datos modificados en:
https://public.jmp.com/packages/5d5aa110f40f010268e63cf4
~Juan
Re: gráficos circulares+mapas de calorTodavía estoy perplejo, así que pensé en adjuntar el archivo de datos real. Básicamente, quiero colocar las últimas cinco columnas en un gráfico circular en el que los colores de la cuña reflejen los colores de las celdas (agrupados por número de muestra). Estoy empezando a pensar que esto puede no ser posible con Graph Builder.....
Re: gráficos circulares + mapas de calorHola ,
Me uno a esta discusión bastante tarde, pero estoy intentando crear una visualización muy similar. Me interesa especialmente la solución "3.b", ya que quiero mostrar gráficos circulares en una cuadrícula que abarque Europa (el estilo de las etiquetas no es legible en absoluto en este caso).
El problema es que cuando uso gráficos como marcadores, el fondo es blanco, lo cual no se ve muy bien en los mapas: tienden a superponerse en la esquina.
Aunque puedo reducir el área blanca ajustando el tamaño del gráfico circular, el fondo blanco sigue siendo visible. ¿Existe alguna forma de hacer que este fondo sea transparente o eliminarlo por completo en JMP 17?
Johanna
Re: gráficos circulares + mapas de calorHola @johanna_younous ,
Bienvenidos a la conversación.
Cuando me uní a esta conversación, mis gráficos también tenían fondos blancos.
Para cuando hice la presentación que mencioné anteriormente, ya había descubierto cómo hacer que el fondo fuera transparente.
Utilicé el siguiente script JSL para hacer transparentes los píxeles blancos en mi tabla de imágenes donde el nombre de la columna de imágenes de gráficos era "Graph".
dt=CurrentDataTable();
For Each Row(
{r, g, b} = dt:Graph[] << getpixels( "rgb" );
a = !AND(r == g, g == b);
dt:Graph[] << setpixels( "rgba", {r, g, b, a} );
);
Esto también hace que los píxeles grises sean transparentes cuando los componentes de color rojo, verde y azul son todos iguales. También tenía algo de gris en el fondo.
Espero que esto te funcione.
~Juan
Re: gráficos circulares + mapas de calorGracias @John_Powell_JMP ,
Desafortunadamente, este bucle no me funciona del todo bien y me cuesta averiguar por qué.
Cuando ejecuto el bucle completo, el fondo blanco de mis gráficos no se elimina:
);
dtgraph= Graphbuild<< Make Into Data Table( );
For( i=1, i <= nrows(dtgraph) , i++, //i=3
img =dtgraph:Graph[i] ;
{r, g, b} = img << getpixels( "rgb" );
// Pixel coloré → alpha = 1 (opaque)
// Pixel gris/blanc/noir (r==g==b) → alpha = 0 (transparent)
a = ! (r==g==b);
Wait(0);
img << setpixels("rgba", {r, g, b, a});
Wait(0);
dtgraph:Graph[i] = img;
);
Pero si lo ejecuto paso a paso, ¡la actualización se aplica correctamente a la primera fila!
img =dtgraph:Graph[1] ;
{r, g, b} = img << getpixels( "rgb" );
// Pixel coloré → alpha = 1 (opaque)
// Pixel gris/blanc/noir (r==g==b) → alpha = 0 (transparent)
a = ! (r==g==b);
Wait(0);
img << setpixels("rgba", {r, g, b, a});
Wait(0);
dtgraph:Graph[1] = img;
Esto me está volviendo loco. Supongo que podría ser un problema con el momento de la actualización o algo relacionado con la columna de tipo de expresión.
Cualquier aportación sería muy apreciada 
Johanna
Re: gráficos circulares + mapas de calorSi bien esta solución (y muchas de las otras contribuciones) son bastante innovadoras, debo decir que no encuentro los gráficos circulares muy útiles (me recuerda a la cita de Tufte, que parafrasearé ya que no recuerdo exactamente dónde la dijo: "lo único peor que un estúpido gráfico circular es más de un estúpido gráfico circular"). Los gráficos de anillos, como siempre, son mejores que los gráficos circulares, pero creo que los gráficos de barras funcionan mucho mejor en este caso. Con las múltiples comparaciones en las 4 dimensiones, hay un par de problemas: primero, el orden de las porciones y, segundo, el tamaño de las mismas. Es más fácil ordenar barras que porciones de pastel, y los tamaños también son mucho mejores en comparación con las barras. Puede que haya otras representaciones que funcionen incluso mejor, pero realmente no veo que estos gráficos circulares sean fáciles de descifrar en absoluto.
Re: gráficos circulares + mapas de calorMientras tanto, logré que funcionara de la manera más sorprendente (después de pasar por un largo proceso de pruebas y fallos, como puede atestiguar este script realmente subóptimo).
dtgraph= Graphbuild<< Make Into Data Table( );
For( i=1, i <= nrows(dtgraph) , i++, //i=6;
img =dtgraph:Graph[i] ; //
img1=char(img);
{r, g, b,a1} = img << Get Pixels( "rgba" );
a2 = !AND(r == g, g == b);
Wait(0);
eval(parse( "img << set Pixels(\!"rgba\!", {r, g, b, a2})" ));
img2= char(img);
print(img1==img2);
Wait(0);
dtgraph:Graph[i] = parse(char(img2));
img=empty();
);
print("fin loop1");
//exact same loop !!
For( i=1, i <= nrows(dtgraph) , i++, //i=6;
img =dtgraph:Graph[i] ; //
img1=char(img);
{r, g, b,a1} = img << Get Pixels( "rgba" );
a2 = !AND(r == g, g == b);
Wait(0);
eval(parse( "img << set Pixels(\!"rgba\!", {r, g, b, a2})" ));
img2= char(img);
print(img1==img2);
Wait(0);
dtgraph:Graph[i] = parse(char(img2));
img=empty();
);
print("fin loop2");
// log output
1
1
1
1
1
1
"fin loop1"
0
0
0
0
0
0
"fin loop2"
Es un comportamiento realmente extraño, pero como funciona, digamos que es suficiente: le dediqué demasiado tiempo a este problema ^^
Me interesaría mucho cualquier explicación sobre este fenómeno.
Re: gráficos circulares + mapas de calorEstoy de acuerdo contigo en ese punto, sin embargo, que es una petición de mis partes interesadas... ¡gráficos circulares (y peor aún, gráficos de radar) es!
Re: gráficos circulares + mapas de calor@johanna_younous ,
Me alegra que hayas encontrado una solución y la hayas compartido con la comunidad, pero coincido en que probablemente exista una solución más sencilla y eficiente. Es posible que los bucles "For Each" tengan ventajas sobre los bucles "For".
Me sorprendió ver que usaste "rgba" en la función Get Pixels, pero tal vez después de ejecutar el script una vez, los píxeles de las imágenes tenían un componente alfa.
En mi caso, las imágenes estaban en una tabla de datos aparte y se vinculaban mediante una unión virtual. Puede que tu situación sea diferente, lo que provocó que el cambio en las imágenes se reflejara inmediatamente en mi caso.
Quizás alguien de la comunidad con más experiencia en programación con JMP que yo pueda ofrecer una solución o explicación más sencilla.
Gracias,
~Juan