<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />Hola a todos,
¿Alguien tiene experiencia en la producción de gráficos de burbujas con espacios de tiempo desiguales?
En los gráficos de burbujas, la dimensión temporal es bastante limitada. No es una dimensión en tiempo real sino que anima fila por fila. Por lo tanto, al intentar animar eventos de datos de registro reales con diferencias de tiempo desiguales, la animación es irrespetuosa con el tiempo.
en el archivo adjunto hay un registro de eventos (cada fila es un evento) en el que un individuo (ID) está ubicado en un espacio X, Y. En cada fila hay un tiempo de lectura del evento. La secuencia de comandos de burbuja en el archivo anima fila por fila sin acomodarse adecuadamente para las diferentes duraciones de cada uno.
La siguiente secuencia de comandos infla la tabla de datos, por lo que cada fila es de un minuto y produce una representación más honesta del espacio a lo largo del tiempo.
Me gustaría puntuar cualquier comentario al respecto.
// primero abre la tabla adjunta "Bubble Plot2"
// luego ejecuta el scrtipt.
dt = Tabla de datos actual () ;
// la tabla original suele estar ordenada por hora de registro
// Ordenar por ID para permitir el cálculo de la duración por evento para cada ID.
dt << ordenar ( por ( CARNÉ DE IDENTIDAD ) , Ascendente , reemplazar mesa ( 1 ) ) ;
// Añadir una columna para calcular la duración de cada evento.
dt << Nueva Columna ( "Duración del evento" ,
Numérico ,
Continuo ,
Formato ( "Mejor" , 6 ) ,
Fórmula (
Si (
CARNÉ DE IDENTIDAD == Retraso ( CARNÉ DE IDENTIDAD , - 1 ) , Diferencia de fecha ( : hora , Retraso ( : hora , - 1 ) , "minuto" , "real" ) ,
// se suponía que esto debía calcular una duración hipotética hasta el último evento en el conjunto de datos, pero no funciona.
Diferencia de fecha ( : hora , Col Max ( hora ) ) , "minuto" ,
"real"
)
) ,
) ;
dt << ejecutar fórmulas ;
Columna ( dt , "Duración del evento" ) << eliminar fórmula ;
// Registre la longitud original de la tabla antes de agregar filas.
// El uso de Nrow () directamente en el bucle For producirá un bucle sin fin.
filaN = N fila () ;
// Para cada fila original, genere nuevas filas hasta la duración de cada evento.
por ( yo = 1 , yo <= filaN , yo ++,
Rowi = dt << obtener fila ( yo ) ;
por ( z = 1 , z <= ( : Nombre ( "Duración del evento" ) [ yo ] - 1 ) , z ++,
z ;
dt << añadir fila ( Rowi ) ;
dt << ejecutar fórmulas ;
) ;
) ;
// ordena la tabla de datos una vez más para simplificar la siguiente fórmula.
dt << ordenar ( por ( CARNÉ DE IDENTIDAD , hora ) , Ascendente , reemplazar mesa ( 1 ) ) ;
// Añadir nueva columna con el tiempo real para cada fila.
Nueva Columna ( "Tiempo real" ,
Numérico ,
Continuo ,
Formato ( "aaaa-mm-ddThh: mm" , dieciséis ) ,
Formato de entrada ( "aaaa-mm-ddThh: mm" ) ,
Fórmula (
Si (
Fila () == 1 , : hora ,
: CARNÉ DE IDENTIDAD > Retraso ( : CARNÉ DE IDENTIDAD , 1 ) , : hora ,
// esto agregará un minuto a la indicación de tiempo anterior.
Retraso ( : Tiempo real , 1 ) + 60
)
) ,
) ;
// Establecer marcador el color por ID
Tabla de datos actual () << Color por columna (
CARNÉ DE IDENTIDAD ,
Color ( 1 ) ,
Tema de color ( "JMP predeterminado" ) ,
Marcador ( 0 ) ,
Tema del marcador ( "" ) ,
Escala continua ( 0 ) ,
Escala inversa ( 0 ) ,
Filas Excluidas ( 0 )
) ;;
// producir el gráfico de burbujas con indicación de tiempo real.
Parcela de burbuja (
X ( : X ) ,
Y ( : y ) ,
Hora ( : Tiempo real ) ,
CARNÉ DE IDENTIDAD ( : CARNÉ DE IDENTIDAD ) ,
Posición del título ( 1.61111111111111 , 2.7 ) ,
SendToReport (
Envío (
{} ,
"Gráfico de burbujas de y por x a través de ID de identificación en tiempo real" ,
OutlineBox ,
{ Establecer título ( "Diagrama de burbuja de y por x a través de la ID de identificación en tiempo real - ¡Corregir los intervalos de tiempo!" )}
) ,
Envío ( {} , "1" , ScaleBox , { Min ( 0.5 ) , Max ( 3.5 ) , Cía ( 0.5 ) , Garrapatas menores ( 1 ) , Etiquetas rotadas ( "Horizontal" )} ) ,
Envío ( {} , "2" , ScaleBox , { Min ( 0.5 ) , Max ( 3.5 ) , Cía ( 0.5 ) , Garrapatas menores ( 1 ) , Etiquetas rotadas ( "Horizontal" )} )
)
) ;
gracias dan
los problemas son correctos En realidad me preguntaba si sería posible agregar una opción de "Duración" en la plataforma, ya que otras plataformas tienen una opción de peso o Frecuencia.
La cosa es que los datos pueden tener todo tipo de estructuras. por ejemplo, una columna para la hora de inicio y otra para la hora de finalización de cada evento. o alternativamente, tiempo de inicio y duración. además, en muchos casos hay un problema de definición de la duración del último evento.
En mi caso, la animación entre los eventos no es tan importante. lo que es más crucial es la posición relativa correcta de los eventos en cada punto del tiempo como en un juego de ajedrez. el problema surge cuando los datos no se recopilan a intervalos fijos de cada observación pero solo se registran los cambios (Registro de eventos),
ron
Hola ron
Gracias por el ejemplo: hay varios otros modelos de eventos que son interesantes a considerar para Bubble Plot. Creo que puede haber dos problemas aquí:
1) Bubble Plot no tiene el concepto de duración del evento. Cada observación es instantánea y se supone que los grupos de identificación se mueven linealmente entre las observaciones. Me doy cuenta de que cuando amplía la tabla mantiene la posición constante, por lo que supongo que en su caso no se desea la interpolación.
2) El problema más grande puede ser que el tiempo en sí está animado linealmente entre cada observación, pero no linealmente en general. Esto ayuda en casos donde las observaciones pueden aparecer en grupos con grandes espacios entre ellos, pero puede aparecer distorsionada cuando se espera que la animación siga el tiempo a una velocidad constante.
Si estos problemas parecen correctos, los agregaré como sugerencias para futuros trabajos de Bubble Plot ...
Atentamente,
-Dan