Asignación de colores del diagrama de SankeyHola comunidad JMP,
¿Tienes experiencia asignando colores a todas las secuencias de un diagrama de Sankey con la misma categoría de color? El problema que encontré fue que cada secuencia tenía una categoría de color diferente, lo que dificultaba el seguimiento del cambio de elementos de la secuencia 1 a la 2... a la n con el mismo color asignado.
¡Muchas gracias!
Análisis y modelado de datos básicosExploración y visualización de datosVentanasRe: Asignación de colores del diagrama de SankeyHola @qunw ,
¡Bienvenido a la comunidad!
Creo que el gráfico de coordenadas paralelas podría ser útil para su objetivo, gracias a la codificación por colores por categoría. Puede encontrar más información aquí: https://www.jmp.com/support/help/es/18.2/#page/jmp/parallel-plots.shtml
También puedes consultar el diagrama de Sankey mejorado (ESP) creado por @jthi : https://community.jmp.com/t5/JMP-Add-Ins/Plot Sankey mejorado-ESP/ta-p/549745
Espero que estas opciones te ayuden.
Re: Asignación de colores del diagrama de SankeyHola @qunw , ¿podrías publicar un ejemplo (anónimo) del problema que experimentas?
Por mi parte, me gustaría poder utilizar diagramas de Sankey para monitorear cambios de estado de "propiedades" durante el flujo de un proceso.
por ejemplo, con diferentes categorías de aprobado y reprobado.
En un diagrama de Sankey, el color no indica el valor por categoría, sino "grupos". (El rojo a la izquierda del diagrama corresponde a las mismas filas de la tabla de datos que el rojo a la derecha, en cualquier otro lugar del diagrama). ¿Es esto lo que describes con " cada secuencia tenía una categoría de color diferente "?
Como consecuencia, en el ejemplo siguiente, por ejemplo, el azul puede ser 0 a la izquierda y azul en el centro y a la derecha:

Por otro lado, según cómo funciona la trama, no tiene sentido dar todos los "1" con el mismo color.
Pero, ¿cómo "encontrar" los 1 en un diagrama de Sankey complicado?
¿Si no tienen el mismo color?
Desafortunadamente: ¡SÓLO POR LAS ETIQUETAS!
¿Y cómo encontrar cambios de "estado"? Por ejemplo, de 0 a 1. -> Es casi imposible "a simple vista"; simplemente funciona con una gran carga en el coprocesador cerebral.
Diferente a un diagrama de Sankey para valores continuos:

... para columnas con tipo de modelado nominal, el mismo valor puede estar en posiciones bastante diferentes a lo largo del eje Y.
Esto hace que sea muy difícil detectar cambios de "estado" en los gráficos de Sankey con valores nominales.
Podría haber una opción para cambiar del modo nominal a un "modo cuasi-continuo" - con los mismos valores en la misma altura - pero con la interesante característica adicional de rastrear la "población" por el ancho de los "tubos".
Se desea habilitar este modo: Trazado paralelo: ejes sincronizados
La solución alternativa en este momento:
Utilice valores (pseudo)continuos.
Re: Asignación de colores del diagrama de SankeyAdemás de la usabilidad, también hay un aspecto estético:
¿Por qué Ahorros , Vivienda y demás se inclinan hacia arriba? ¿Por qué no permanecen en una misma altura?
Hay suficiente espacio (vacío) en la parte inferior derecha:

Re: Asignación de colores del diagrama de SankeyGracias, Víctor, por tus referencias. Utilicé el gráfico de coordenadas paralelas para el diagrama de Sankey del perfil de tratamiento del paciente, y resulta difícil asignar los mismos colores a los mismos regímenes en la secuencia de tratamientos. Los dos ejemplos incluidos en las instrucciones del gráfico paralelo no son exactamente similares a mi caso, por lo que podría requerir codificación adicional para sincronizar la configuración de color entre los tratamientos.
Re: Asignación de colores del diagrama de SankeyMuchísimas gracias, Hogi, por ayudarme con esta consulta y compartir los ejemplos. Usé el diagrama de Sankey para perfilar el tratamiento de los pacientes e intenté asignar los mismos colores a los mismos regímenes en la secuencia de tratamientos. Mi caso es bastante similar a tu ejemplo. Tenías razón en mi descripción de que "cada secuencia tenía una categoría de color diferente". Los "valores 1, 2 y 3" en el eje x son como "tratamiento 1, 2 y 3", y los "valores 0, 1, 2" son como regímenes por tratamiento. Me gustaría sincronizar la configuración de color de 0, 1 y 2 en cada "valor 1, 2 y 3", donde "1" es rojo, "2" es verde y "0" es azul en los valores 1, 2 y 3. Esto ayudará a comprender el proceso de tratamiento de los pacientes. Si tienes alguna solución, avísame. Muchas gracias.

Re: Asignación de colores del diagrama de SankeyAprendí este gráfico en una publicación de la comunidad, que ofrecía otra forma de visualizar una pregunta relacionada, como el seguimiento de la diversidad de cada régimen en el tratamiento inicial y los tratamientos posteriores. Descubrí una manera de generarlo etiquetando cada valor en los siguientes flujos de salida con el valor del flujo de salida 1 como prefijo si corresponden al mismo valor del flujo de salida 1, como "Auto", "Casa", "Impuestos", etc. Esto requiere preprocesamiento de datos. Espero que encuentres una mejor manera de hacerlo. ¡Muchas gracias!
Re: Asignación de colores del diagrama de Sankey
@qunw escribió:
Me gustaría sincronizar la configuración de color de 0, 1 y 2 en cada "valor 1, 2 y 3", donde "1" es rojo, "2" es verde y "0" es azul en los valores 1, 2 y 3.
Ok, entendido.
Me temo que esto no es posible (ni está previsto) mediante el diagrama de Sankey.
Re: Asignación de colores del diagrama de SankeyEn GraphBuilder, los colores se pueden asignar a través de los estados de fila o la zona de colocación de color.
En ambos casos, el color se define 'por fila'.
Por lo tanto, al seleccionar una trayectoria en el gráfico, se selecciona una fila específica. El color de la trayectoria se define por el color de esta fila. Una trayectoria, un color.

Ver más...
New Table( "treatment",
Add Rows( 9 ),
New Column( "patient",
Character,
Set Values(
{"V1_0", "V1_1", "V1_2", "V1_3", "V1_4", "V1_5", "V1_6", "V1_7", "V1_8"}
)
),
New Column( "treatment 1",
"Nominal",
Set Values( [1, 1, 1, 2, 2, 2, 3, 3, 3] )
),
New Column( "treatment 2",
"Nominal",
Set Values( [1, 2, 3, 1, 2, 3, 1, 2, 3] )
),
New Column( "treatment 3",
"Nominal",
Set Values( [1, 1, 2, 1, 2, 3, 3, 3, 3] )
)
)
Re: Asignación de colores del diagrama de SankeyPara obtener colores diferentes para la misma fila, hay que usar scripts o dividir la fila.
Dividir la fila: Apilar la tabla:
current data table << Stack( columns( :treatment 1, :treatment 2, :treatment 3 ));
Graph Builder(
Show Control Panel( 0 ),
Variables( X( :Label ), Y( :patient ), Color( :Data ) ),
Elements( Heatmap( X, Y, Legend( 4 ) ) )
);

Re: Asignación de colores del diagrama de SankeyEl gráfico del mapa de calor contiene toda la información, pero es sorprendente la cantidad de coprocesamiento que necesita el cerebro humano para "comprenderla".
Más cerca del diagrama de Sankey, con el tratamiento indicado por el color Y la posición a lo largo del eje y.
-> Se necesita menos coprocesamiento: es mucho más fácil ver la información a simple vista.

Aún más cerca de Sankey, con todas las trayectorias en un solo gráfico,
El gráfico se vuelve demasiado recargado y ya no es posible seguir trayectorias específicas.

Re: Asignación de colores del diagrama de Sankey¡Tienes toda la razón!
Re: Asignación de colores del diagrama de SankeyEn efecto. Un diagrama de Sankey sigue siendo la mejor visualización para el seguimiento de perfiles.
Re: Asignación de colores del diagrama de Sankey¿Qué tal la propuesta en Trama Paralela: ejes sincronizados ?
utilice la misma posición "Y" para identificar el mismo "valor".
Esta opción ya está disponible para columnas con tipo de modelado “continuo” (no nominal).
Se puede ajustar el ancho de la línea para obtener un gráfico con mejor aspecto.
Desafortunadamente, no hay posibilidad de utilizar el ancho de línea para representar la fracción/población.
El color se puede utilizar para identificar otro tipo de información:
Tratamiento inicial:

Número de tratamientos diferentes:

dt = New Table( "treatment",
Add Rows( 9 ),
New Column( "patient",
Character,
Set Values(
{"V1_0", "V1_1", "V1_2", "V1_3", "V1_4", "V1_5", "V1_6", "V1_7", "V1_8"}
)
),
New Column( "treatment 1",
//"Nominal",
Set Values( [1, 1, 1, 2, 2, 2, 3, 3, 3] )
),
New Column( "treatment 2",
//"Nominal",
Set Values( [1, 2, 3, 1, 2, 3, 1, 2, 3] )
),
New Column( "treatment 3",
//"Nominal",
Set Values( [1, 1, 2, 1, 2, 3, 3, 3, 3] )
)
);
//this functionality is only available for scripters.<BR />//via the GUI, a user can create the equation manually
dt << New Formula Column(
Operation( Category( "Character" ), "Concatenate with Underscore" ),
Columns( :treatment 1, :treatment 2, :treatment 3 )
) << Run Formulas;
Graph Builder(
Size( 568, 240 ),
Show Control Panel( 0 ),
Summary Statistic( "Median" ),
Graph Spacing( 4 ),
Variables(
X( :treatment 1 ),
X( :treatment 2, Position( 1 ) ),
X( :treatment 3, Position( 1 ) ),
Color( :"Concatenate[treatment 1,treatment 2,treatment 3]"n )
),
Elements(
Parallel( X( 1 ), X( 2 ), X( 3 ) )
)
);