<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />안녕 모두,
고르지 않은 시간 공간을 가진 버블 플롯을 제작 한 경험이 있습니까?
버블 플롯에서는 시간 차원이 다소 제한적입니다. 그것은 실시간 차원이 아니라 오히려 행 단위로 움직입니다. 따라서 불규칙한 시간 차이로 실제 로그 데이터 이벤트를 애니메이션으로 만들려고 할 때 애니메이션은 그 시간에 무례합니다.
첨부 된 파일에는 X, Y 공간에 개인 (ID)이있는 이벤트의 로그가 있습니다. 각 행은 이벤트입니다. 각 행마다 이벤트를 읽는 시간이 있습니다. 파일의 버블 플롯 스크립트는 각기 다른 기간 동안 올바르게 조정하지 않고 행별로 애니메이션을 적용합니다.
다음 스크립트는 데이터 테이블을 팽창 시켜서 각 행이 단지 1 분이되고 시간이 지남에 따라 더 정직한 공간 표현을 생성합니다.
나는이 문제에 대한 어떤 의견도 사과 할 것이다.
// 먼저 연결된 테이블 "Bubble Plot2"를 엽니 다.
// scrtipt를 실행합니다.
dt = 현재 데이터 표 () ;
// 원본 테이블은 일반적으로 등록 시간순으로 정렬됩니다.
// ID별로 정렬하여 각 ID에 대해 이벤트 당 지속 시간을 계산할 수 있도록합니다.
dt << 종류 ( 으로 ( 신분증 ) , 오름차순 , 테이블을 교체하다 ( 1 ) ) ;
// 각 이벤트의 기간을 계산하는 열을 추가합니다.
dt << 새 열 ( "이벤트 기간" ,
숫자 ,
마디 없는 ,
체재 ( "베스트" , 6 ) ,
공식 (
만약 (
신분증 == 지연 ( 신분증 , - 1 ) , 날짜 차이 ( : 시각 , 지연 ( : 시각 , - 1 ) , "분" , "실제" ) ,
// 이것은 데이터 세트의 마지막 이벤트까지 가설 기간을 계산하기로되어 있지만 작동하지 않습니다.
날짜 차이 ( : 시각 , 콜 맥스 ( 시각 ) ) , "분" ,
"실제"
)
) ,
) ;
dt << 수식을 달다 ;
기둥 ( dt , "이벤트 기간" ) << 수식 삭제 ;
// 행을 추가하기 전에 테이블의 원래 길이를 기록합니다.
// For 루프에서 Nrow ()를 직접 사용하면 무한 루프가 생성됩니다.
행 N = N 행 () ;
// 원래의 각 행에 대해 각 이벤트의 지속 기간만큼 새 행을 생성합니다.
에 대한 ( 나는 = 1 , 나는 <= 행 N , 나는 ++,
행렬 = dt << 행을 얻다 ( 나는 ) ;
에 대한 ( 지 = 1 , 지 <= ( : 이름 ( "이벤트 기간" ) [ 나는 ] - 1 ) , 지 ++,
지 ;
dt << 행 추가 ( 행렬 ) ;
dt << 수식을 달다 ;
) ;
) ;
// 다음 수식을 단순화하기 위해 데이터 테이블을 다시 한 번 정렬합니다.
dt << 종류 ( 으로 ( 신분증 , 시각 ) , 오름차순 , 테이블을 교체하다 ( 1 ) ) ;
// 각 행에 대해 실제 시간이 포함 된 새 열을 추가합니다.
새 열 ( "실시간" ,
숫자 ,
마디 없는 ,
체재 ( "yyyy-mm-ddThh : mm" , 16 ) ,
입력 형식 ( "yyyy-mm-ddThh : mm" ) ,
공식 (
만약 (
열 () == 1 , : 시각 ,
: 신분증 > 지연 ( : 신분증 , 1 ) , : 시각 ,
// 이것은 이전 시간 표시에 1 분을 추가합니다.
지연 ( : 실시간 , 1 ) + 60
)
) ,
) ;
// ID로 마커를 설정합니다.
현재 데이터 표 () << 열에 따른 색상 (
신분증 ,
색깔 ( 1 ) ,
색상 테마 ( "JMP 기본값" ) ,
채점자 ( 0 ) ,
마커 테마 ( "" ) ,
연속 눈금 ( 0 ) ,
역 스케일 ( 0 ) ,
제외 행 ( 0 )
) ;;
// 실제 시간 표시로 버블 플롯을 생성합니다.
버블 플롯 (
엑스 ( : 엑스 ) ,
와이 ( : 와이 ) ,
시각 ( : 실시간 ) ,
신분증 ( : 신분증 ) ,
직위 ( 1.61111111111111 , 2.7 ) ,
SendToReport (
급파 (
{} ,
"y의 버블 플롯 x 실시간 ID ID" ,
OutlineBox ,
{ 제목 설정 ( "y의 버블 플롯 x 실시간 ID ID - 정확한 시간 간격 !!! }}
) ,
급파 ( {} , "1" , ScaleBox , { 민 ( 0.5 ) , 맥스 ( 3.5 ) , Inc ( 0.5 ) , 마이너 틱스 ( 1 ) , 회전 라벨 ( "수평" }} ) ,
급파 ( {} , "2" , ScaleBox , { 민 ( 0.5 ) , 맥스 ( 3.5 ) , Inc ( 0.5 ) , 마이너 틱스 ( 1 ) , 회전 라벨 ( "수평" }} )
)
) ;
고마워요 댄,
문제는 정확합니다. 다른 플랫폼에 가중치 또는 빈도 옵션이있는 경우 플랫폼에 '기간'옵션을 추가 할 수 있는지 궁금합니다.
것은 데이터가 모든 종류의 구조를 가질 수 있다는 것입니다. 예를 들어 시작 시간을 나타내는 열과 각 이벤트의 종료 시간을 나타내는 열이 있습니다. 또는 대안으로, 시작 시간 및 지속 시간. 게다가 많은 경우에 마지막 사건의 지속 기간을 정의하는 문제가있다.
제 경우에는 이벤트 간의 애니메이션이 그렇게 중요하지 않습니다. 더 중요한 것은 체스 게임 에서처럼 각 시점에서 이벤트의 정확한 상대적인 위치입니다. 각 관측치에서 고정 간격으로 데이터를 수집하지 않고 변경 사항 만 기록 할 경우 (이벤트 로그) 문제가 발생합니다.
론
안녕하세요, 론,
예를 들어 주셔서 감사합니다. 버블 플롯에 대해 고려해야 할 몇 가지 다른 이벤트 모델이 있습니다. 여기에 두 가지 문제가있을 수 있다고 생각합니다.
1) Bubble Plot은 이벤트 기간의 개념을 가지고 있지 않습니다. 각 관측치는 순간적이며 ID 그룹은 관측치 사이에서 선형으로 움직이는 것으로 가정합니다. 테이블을 확장하면 위치가 일정하게 유지된다는 것을 알기 때문에 보간법이 필요하지 않은 것으로 가정합니다.
2) 더 큰 문제는 시간 자체가 각 관측치 사이에서 선형 적으로 움직이지만 전체적으로는 선형 적이 지 않다는 것입니다. 이렇게하면 사이에 큰 간격이있는 클러스터에 관측치가 나타날 수 있지만 애니메이션이 일정한 속도로 시간을 따라갈 것으로 예상 될 때 왜곡되어 나타날 수 있습니다.
이 문제가 올바르다면 앞으로 버블 플롯 작업을위한 제안으로 추가하겠습니다.
친애하는,
-단