Bubble Plot 'cruza niveles' error<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />Hola,
Estoy tratando de crear un diagrama de burbujas animado y me estoy topando con algunos problemas.
En cada fila tengo un 'estado', 'paso', 'tiempo' e 'id'. La ID es única para un conjunto de filas (con el paso 1 hasta el 10, con estados variables).
Mis filas de datos tienen una variable 'tiempo', es decir. Algunas identificaciones tienen tiempos diferentes que otras identificaciones. En algunos casos el tiempo también se superpone, es decir. una 'ID' tiene varios 'Pasos' o 'estados' con el mismo Tiempo.
Cuando coloco la columna de tiempo en una cantidad de intervalos más grandes, la trama de burbujas comienza y funciona, pero solo SI hago los contenedores lo suficientemente grandes. Sin embargo, el siguiente error se muestra en el registro:
La columna de ID 'ID única' cruza los niveles con la columna del eje categórico 'Paso'. ¿Cambiar ID a 'Step'?
La columna de ID 'ID única' cruza los niveles con la columna del eje categórico 'Estado'. ¿Cambiar ID a 'Estado'?
Cuando no hago un intervalo de tiempo en varios intervalos, el diagrama de burbujas no se inicia completamente y JMP me pide que reemplace la ID con las otras columnas. Cuando rechazo, el gráfico de burbujas no se inicia y se muestra el siguiente error:
La columna de ID 'ID única' cruza los niveles con la columna del eje categórico 'Paso'. ¿Cambiar ID a 'Step'?
La columna de ID 'ID única' cruza los niveles con la columna del eje categórico 'Estado'. ¿Cambiar ID a 'Estado'?
Caja de presentación[]
No se puede asignar suficiente memoria en el acceso o evaluación de 'Bubble Plot', Bubble Plot (
Diálogo de lanzamiento,
X (: Paso),
Y (: Estado),
Tiempo (: binTimeCentred),
Colorear (: Detener condición),
ID (: ID única)
)
Mis disculpas por no incluir un ejemplo, preparar un ejemplo que podría publicar en línea tomaría algún tiempo. Por lo tanto, esperaba que alguien tuviera alguna idea sobre cómo solucionar este problema basándose solo en la descripción.
Mejor,
Re: Bubble Plot 'cruza niveles' errorInteresante manera de visualizar las transiciones de Dan. También sería poderoso poner el último estado de cada cadena en el eje x. A partir de otros análisis, he descubierto que algunos estados nunca conducirán (o siempre conducirán) a un cierto estado final. Las visualizaciones como esta, de hecho, funcionan muy bien en combinación con la transferencia de selecciones a otras plataformas.
He estado experimentando con formas de visualizar todas las cadenas observadas a la vez. He incluido una columna en el conjunto de datos de ejemplo que contiene el estado de una fila y todos los estados anteriores en su cadena (: statepath), también he asignado colores según el estado de la fila y he hecho: estado de la etiqueta de la fila. Esta información se puede utilizar para crear algo que se asemeja a una estructura de árbol de todas las cadenas posibles. Yo uso un gráfico de barras apiladas para mostrar esta información. Cada: paso es una barra, cada segmento de la barra a: estado en esa 'rama' del árbol. Puedes leer la gráfica de izquierda a derecha. Cada segmento de una barra en uno de los pasos se divide para convertirse en múltiples segmentos en la siguiente barra (: paso). Cambiar el número de "niveles en vista" en el eje x superior le permite recorrer el gráfico.
Siéntase libre de proporcionar comentarios.

Generador de gráficos (
tamaño ( 1142 , 591 ) ,
Mostrar panel de control ( 0 ) ,
Mostrar leyenda ( 0 ) ,
Variables ( Y ( : Llave ) , Grupo x ( : Paso ) , Cubrir ( : ruta del estado ) ) ,
Elementos (
Bar (
Y ,
Leyenda ( 5 ) ,
Estilo de barra ( "Apilados" ) ,
Estadística de resumen ( "NORTE" ) ,
Etiqueta ( "Etiqueta de la fila" )
)
)) ;
Re: Bubble Plot 'cruza niveles' errorUna forma interesante de resumir los datos es agregar una columna de "estado anterior":
Tabla de datos ( "datos de prueba del diagrama de burbuja" ) << Nueva Columna ( "PrevState" ,
Tipo de datos ( Personaje ) ,
Fórmula ( Izquierda ( Derecha ( : ruta del estado , 4 ) , 2 ) ) ,
Establecer propiedad ( Etiquetas de valor , Arg ( : Estado << Obtener propiedad ( Etiquetas de valor ) , 1 ) ) ,
Establecer propiedad ( Orden de valor , : Estado << Obtener propiedad ( Orden de valor ) )
) ;
Con esta columna agregada, un mapa de calor de Graph Builder mostrará la frecuencia de cada transición:
Generador de gráficos (
Mostrar panel de control ( 0 ) ,
Variables ( X ( : PrevState ) , Y ( : Estado ) ) ,
Elementos ( Mapa de calor ( X , Y , Leyenda ( 3 ) ) ) ,
Filtro de datos local (
Ubicación ( { 642 , 61 } ) ,
Modo ( Seleccionar ( 0 ) , Show ( 1 ) , Incluir ( 1 ) ) ,
Añadir filtro (
columnas ( : Estado ) ,
Dónde ( : Estado == { "01" , "02" , "03" , "10" , "11" , "12" , "20" , "21" , "22" , "30" } ) ,
Monitor ( : Estado , tamaño ( 204 , 174 ) , Visualización de lista )
)
)
) ;
Utilicé un filtro de datos locales para excluir las transiciones a un estado "00" (faltante). Cuando hace una pausa sobre una celda, la información sobre herramientas al desplazarse mostrará el recuento de las transiciones coincidentes:

Esta vista podría usarse en combinación con otras plataformas para seleccionar y resaltar ciertas transiciones.
Re: Bubble Plot 'cruza niveles' errorGracias Dan por tu elaborada respuesta. Sus enfoques alternativos son interesantes y su explicación sobre el uso de la memoria en relación con el tiempo de agrupación ha sido muy útil. Es bueno saber que binning es una solución en esta situación, aunque sí significa perder la visualización de algunas transiciones.
¡Gracias!
Re: Bubble Plot 'cruza niveles' errorHola gv
Gracias por los datos y el script de muestra, es muy útil ver el caso que está viendo. Sobre los temas:
- Memoria: para hacer la animación, Bubble Plot almacenará la posición de cada burbuja en cada momento único. De tus 250k filas, veo 83k valores de tiempo no faltantes, y más de 5k de ellos son únicos. Como cada burbuja solo persiste durante 10 pasos, los valores de tiempo de 5k requieren bastante memoria (7.7GB en mi máquina en comparación con 1.5GB en su ejemplo agrupado).
- El binning tiene sentido completo dado lo anterior. No se realiza una agregación en todas las ID, por lo que no perderá ninguna burbuja, pero perderá la capacidad de ver algunas transiciones de estado que ocurren muy rápidamente, dentro del tamaño de la bandeja.
- No hay forma de evitar el cuadro de diálogo "niveles cruzados" para uso interactivo, pero cuando se ejecuta desde un script, el mensaje simplemente se escribirá en el registro, sin interrupción.
Si la animación de tiempo no es tan importante, otras plataformas pueden ser útiles. Este ejemplo utiliza un elemento de Línea de Generador de Gráficos con rol de Superposición para mostrar todas las transiciones a la vez:
Generador de gráficos (
Mostrar panel de control ( 0 ) ,
Variables ( X ( : Paso ) , Y ( : Estado ) , Cubrir ( : Identificación única ) ) ,
Elementos (
Línea ( X , Y , Leyenda ( 3 ) , Orden de fila ( 0 ) , Estadística de resumen ( "Media" ) )
) ,
) ;

Dentro de este gráfico, si arrastra y selecciona cualquier parte de una línea, seleccionará todas las filas con el mismo ID.
Si cambia la forma de los datos para incluir todas las transiciones de estados en una sola fila:
Tabla de datos ( "datos de prueba del diagrama de burbuja" ) << División (
Dividir por ( : Paso ) ,
División ( : Estado ) ,
Grupo ( : Identificación única )
)
luego puede usar la plataforma Parallel Plot para ver una vista similar. En esta plataforma, puede hacer clic con el botón derecho> Personalizar para establecer la transparencia de Polilínea en algo así como 0.01. Esto le dará una vista sombreada donde las transiciones más comunes son más oscuras y las transiciones menos comunes se desvanecen. Si selecciona un segmento en cualquier línea, se dibujará resaltado:

Parcela Paralela (
Escala uniformemente ( 0 ) ,
Centro a cero ( 0 ) ,
Y (
: Nombre ( "1" ) ,
: Nombre ( "2" ) ,
: Nombre ( "3" ) ,
: Nombre ( "4" ) ,
: Nombre ( "5" ) ,
: Nombre ( "6" ) ,
: Nombre ( "7" ) ,
: Nombre ( "8" )
: Nombre ( "9" ) ,
: Nombre ( "10" )
) ,
SendToReport (
Envío (
{} ,
"Paralelo paralelo" ,
FrameBox ,
{ Tamaño del marco ( 633 , 420 ) , DispatchSeg (
PolylineSeg ( 1 ) ,
{ Transparencia ( 0.01 )}
)}
)
)
) ;
Espero que estas ideas sean de ayuda!
-Dan
Re: Bubble Plot 'cruza niveles' errorHola dan
Gracias por su respuesta y explicación. Tengo varias filas para cada ID (: ID única), pero estas corresponden a valores diferentes del eje X (: Paso) y valores de tiempo (: hora de inicio o (: binTimeCentred). Estoy perdido por qué esto se consideraría un problema ya que el punto de la identificación es seguir una burbuja a través de los otros parámetros, ¿no? Pero quizás me esté perdiendo algo. He incluido algunos datos. Estoy relacionado con el uso de la versión de 32 bits (11.1.1) por cierto, por lo que probablemente tampoco ayude con los problemas de memoria.
Mis datos describen una 'cadena' (secuencia) de estados (: estado) que se produce durante una réplica de una simulación (: clave), pueden existir múltiples cadenas para una: clave. Los estados se siguen en una serie de pasos (: Paso) en lo que se llama una cadena. Cada nuevo paso en una cadena es un estado que es diferente del estado anterior y ocurre en un momento en el tiempo (: StartTimestate). Esto crea aproximadamente 255 combinaciones diferentes de pasos (: ID). Pero, en total se observan alrededor de 25000 cadenas (: uniqueID). Cada cadena siempre tiene 10 pasos pero pueden faltar datos.
Lo que estoy tratando de lograr es una visualización de cómo se comportan las cadenas en la dimensión 'estado' y 'tiempo'. Me gustaría mostrar cómo una burbuja de cada cadena (: UniqueID) se mueve a través de sus pasos (eje x) a lo largo del tiempo, y cómo cambia su estado (eje y). El resultado sería un gráfico de burbujas en el que las burbujas siempre se mueven de izquierda a derecha (: paso), pero se comportan de manera diferente hacia arriba y hacia abajo (estado). Creo que esta sería una forma divertida de visualizar patrones en un conjunto de datos multidimensionales bastante grande, el script se usará en una interfaz de usuario, por lo que preferiría que no aparezcan advertencias. Cuando se usa la variable: starttimestate como tiempo, sería grandioso, pero esto dispara el error de 'memoria'. Extrañamente el uso de intervalos de tiempo (bastante grandes) (: binttimecentred) funciona, lo digo de forma extraña porque esto no cambia el número de ID.
Todos los pensamientos son bienvenidos, también sobre cómo suprimir el error de "niveles cruzados"
¡Gracias de nuevo!
Guión:
tabla de datos ("datos de prueba del diagrama de burbujas") << Gráfico de burbujas (
X (: Paso),
Y (: Estado),
Tiempo (: binTimeCentred),
Colorear (: Detener condición),
ID (: UniqueID),
Tamaño de la burbuja (15.24),
Índice de tiempo (2.5),
Formas orientales (1),
Etiqueta ("Ninguna"),
Líneas de Sendero ("Seleccionadas"),
Establecer forma ("triángulo"),
Posición del título (8, 5.11),
SendToReport (
Envío(
{},
"1",
ScaleBox,
{Mínimo (-0.5), Máx (9.5), Inc (1), garrapatas menores (0)}
)
Envío(
{},
"2",
ScaleBox,
{Mín. (-0.5), Máx. (10.5), Inc (1), Señales Menores (0)}
)
)
);
Re: Bubble Plot 'cruza niveles' errorHola gv
El error 'Niveles de cruces' es simplemente una advertencia, porque en muchos casos no es lo que el cliente esperaba.
Cuando tiene un eje categórico y dos filas con el mismo mapa de ID para diferentes valores en el eje, la pregunta es dónde colocar la burbuja. Si se niega a cambiar las variables, aún debería funcionar, pero es más difícil leer los valores del gráfico. Puede que no esté claro si una burbuja en X = "Carolina del Norte" realmente representa observaciones de Carolina del Norte o si la burbuja representa una agregación de dos burbujas con X = "Virginia" y X = "Carolina del Sur". El "promedio" se basa simplemente en los órdenes de valor de la columna categórica, por lo que cualquier combinación es posible.
Creo que su problema de memoria se relaciona con el (número de ID) x (número de veces). Si tiene muchas ID que solo tienen datos para un pequeño subconjunto de veces, las necesidades de almacenamiento pueden ser mayores de lo esperado. Si puede compartir un conjunto de datos o comentar más sobre las características de los datos, podemos confirmar que este es el problema.
-Dan
Re: Bubble Plot 'cruza niveles' errorHola,
Todavía estaría interesado en cualquier sugerencia que pueda tener. Tal vez, uno de los profesionales de JMP podría comentar sobre el significado del error 'Niveles de cruces', ya que no se menciona en ninguna de la documentación disponible. También parece ser un límite a la cantidad de datos que se pueden usar en un gráfico de burbujas, ya que también recibo un 'no se pudo asignar suficiente memoria', o ¿esto podría deberse a algún tipo de error en mis datos de entrada? Desafortunadamente, no he podido reproducir el error con los datos de muestra utilizados en el ejemplo de la trama de burbujas: ( Ejemplo de un gráfico de burbuja dinámico ).
Mejor,