2015-01-16 4 views
1

일정 기간 (5 년) 동안 모니터 된 개체 수가 (수천 개, 고유 ID 포함) 있습니다. 각 객체는 각 요일마다 몇 가지 상태 중 하나를 취할 수 있습니다. 이벤트를 가질 수 없으며, 10 가지 다른 이벤트 상태 중 하나를 취하거나 폐기 될 수 있습니다 (즉 상태 변경이 더 이상 없음). 이 데이터를 시각화하는 데 어려움을 겪고 있습니다. 나는 각각의 개별 물체에 해당하는 수평선 세트와 같은 것을 상상한다. 이벤트가없는 날에는 작은 회색 (또는 흰색) 점으로 표시되며, 이벤트는 색칠 된 점, 이벤트 유형과 일치하는 색상 및 마커로 표시된 해제 이벤트와 매일 사이의 검은 색 점으로 표시됩니다. 해체 날짜와 기간의 끝. 시계열을 R으로 표시

.....xxxx....xx.......DDDDDDD 
.oo.x.qqqq.......xx....qqqqq. 
......pppp.pp..######........ 

는 등, 어디 기호 색 점 (선)으로 대체 될 예정

어떻게 R에 같은 그래프를 만들 것인가? 나는 또한 2014

ObjID|EventStartDate|EventEndDate|EventType|  
00001|2010-01-10 |2010-01-13 | 01  | - event type 1, last for 4 days  
00001|2010-03-30 |2010-04-05 | 03  | - event type 3, last for 6 days  
00001|2012-06-30 |2012-06-30 | 0D  | - decommission  
00011|2009-07-15 |2009-08-10 | 08  |  
00011|2010-11-15 |2010-11-16 | 01  |  
00011|2012-06-30 |2012-07-11 | 05  |  
00011|2013-02-07 |2013-02-09 | 05  |  
01023|2011-11-11 |2011-11-21 | 07  | 

그래서, 데이터 12 월 31 2009년 1월 1일에서 기간 동안 다음과 같을 것보다 이러한 데이터를 시각화하는 방법을 어떤 다른 아이디어에 개방입니다 .. .

답변

2

하루에 이벤트 당 하나의 포인트를 플롯 할 수 있지만, 많은 시간을 커버한다면 꽤 큰 차트를 볼 수 있습니다. 당신이 그런 식으로 가고 싶다면 여기에 한 가지 방법이 있습니다. 샘플 데이터를 dat이라는 data.frame에 넣고 날짜는 POSIXct 형식으로 둡니다.

# calculate how many days each event lasts 
dat$n_days <- with(dat, 
       difftime(EventEndDate, EventStartDate, units='days'))+1 

# new data frame with 1 row per event day 
row_rep <- unlist(mapply(rep, 1:nrow(dat), dat$n_days)) 
dat2 <- dat[row_rep,] 

# add column for discrete event day 
dat2$t_plus <- unlist(mapply(seq, 1, dat$n_days)) - 1 
dat2$EventDay <- with(dat2, as.Date(EventStartDate) + t_plus) 

# plot 
library(ggplot2) 

ggplot(dat2, aes(y=factor(ObjID), x=EventDay, color=EventType)) + 
    geom_point(shape=21) + 
    labs(title='Events by Date', y='Object ID') + 
    theme_bw() + theme(legend.position='bottom') 

이 차트를 생성

enter image description here

dat2은 다음과 같습니다 (어떻게 다양한 관련 ggplot 매개 변수로 그려진 모양과 색상의 측면에서 이벤트를 표현하기 위해 미세 조정 가능) :

> dat2 
    ObjID EventStartDate EventEndDate EventType n_days t_plus EventDay 
1  1  2010-01-10 2010-01-13  01 4 days  0 2010-01-10 
1.1  1  2010-01-10 2010-01-13  01 4 days  1 2010-01-11 
1.2  1  2010-01-10 2010-01-13  01 4 days  2 2010-01-12 
1.3  1  2010-01-10 2010-01-13  01 4 days  3 2010-01-13 
2  1  2010-03-30 2010-04-05  03 7 days  0 2010-03-30 
2.1  1  2010-03-30 2010-04-05  03 7 days  1 2010-03-31 
2.2  1  2010-03-30 2010-04-05  03 7 days  2 2010-04-01 
2.3  1  2010-03-30 2010-04-05  03 7 days  3 2010-04-02 
2.4  1  2010-03-30 2010-04-05  03 7 days  4 2010-04-03 
2.5  1  2010-03-30 2010-04-05  03 7 days  5 2010-04-04 
2.6  1  2010-03-30 2010-04-05  03 7 days  6 2010-04-05 
3  1  2012-06-30 2012-06-30  0D 1 days  0 2012-06-30 
4  11  2009-07-15 2009-08-10  08 27 days  0 2009-07-15 
4.1  11  2009-07-15 2009-08-10  08 27 days  1 2009-07-16 
4.2  11  2009-07-15 2009-08-10  08 27 days  2 2009-07-17 
4.3  11  2009-07-15 2009-08-10  08 27 days  3 2009-07-18 
4.4  11  2009-07-15 2009-08-10  08 27 days  4 2009-07-19 
4.5  11  2009-07-15 2009-08-10  08 27 days  5 2009-07-20 
4.6  11  2009-07-15 2009-08-10  08 27 days  6 2009-07-21 
4.7  11  2009-07-15 2009-08-10  08 27 days  7 2009-07-22 
4.8  11  2009-07-15 2009-08-10  08 27 days  8 2009-07-23 
4.9  11  2009-07-15 2009-08-10  08 27 days  9 2009-07-24 
4.10 11  2009-07-15 2009-08-10  08 27 days  10 2009-07-25 
4.11 11  2009-07-15 2009-08-10  08 27 days  11 2009-07-26 
4.12 11  2009-07-15 2009-08-10  08 27 days  12 2009-07-27 
4.13 11  2009-07-15 2009-08-10  08 27 days  13 2009-07-28 
4.14 11  2009-07-15 2009-08-10  08 27 days  14 2009-07-29 
4.15 11  2009-07-15 2009-08-10  08 27 days  15 2009-07-30 
4.16 11  2009-07-15 2009-08-10  08 27 days  16 2009-07-31 
4.17 11  2009-07-15 2009-08-10  08 27 days  17 2009-08-01 
4.18 11  2009-07-15 2009-08-10  08 27 days  18 2009-08-02 
4.19 11  2009-07-15 2009-08-10  08 27 days  19 2009-08-03 
4.20 11  2009-07-15 2009-08-10  08 27 days  20 2009-08-04 
4.21 11  2009-07-15 2009-08-10  08 27 days  21 2009-08-05 
4.22 11  2009-07-15 2009-08-10  08 27 days  22 2009-08-06 
4.23 11  2009-07-15 2009-08-10  08 27 days  23 2009-08-07 
4.24 11  2009-07-15 2009-08-10  08 27 days  24 2009-08-08 
4.25 11  2009-07-15 2009-08-10  08 27 days  25 2009-08-09 
4.26 11  2009-07-15 2009-08-10  08 27 days  26 2009-08-10 
5  11  2010-11-15 2010-11-16  01 2 days  0 2010-11-15 
5.1  11  2010-11-15 2010-11-16  01 2 days  1 2010-11-16 
6  11  2012-06-30 2012-07-11  05 12 days  0 2012-06-30 
6.1  11  2012-06-30 2012-07-11  05 12 days  1 2012-07-01 
6.2  11  2012-06-30 2012-07-11  05 12 days  2 2012-07-02 
6.3  11  2012-06-30 2012-07-11  05 12 days  3 2012-07-03 
6.4  11  2012-06-30 2012-07-11  05 12 days  4 2012-07-04 
6.5  11  2012-06-30 2012-07-11  05 12 days  5 2012-07-05 
6.6  11  2012-06-30 2012-07-11  05 12 days  6 2012-07-06 
6.7  11  2012-06-30 2012-07-11  05 12 days  7 2012-07-07 
6.8  11  2012-06-30 2012-07-11  05 12 days  8 2012-07-08 
6.9  11  2012-06-30 2012-07-11  05 12 days  9 2012-07-09 
6.10 11  2012-06-30 2012-07-11  05 12 days  10 2012-07-10 
6.11 11  2012-06-30 2012-07-11  05 12 days  11 2012-07-11 
7  11  2013-02-07 2013-02-09  05 3 days  0 2013-02-07 
7.1  11  2013-02-07 2013-02-09  05 3 days  1 2013-02-08 
7.2  11  2013-02-07 2013-02-09  05 3 days  2 2013-02-09 
8  1023  2011-11-11 2011-11-21  07 11 days  0 2011-11-11 
8.1 1023  2011-11-11 2011-11-21  07 11 days  1 2011-11-12 
8.2 1023  2011-11-11 2011-11-21  07 11 days  2 2011-11-13 
8.3 1023  2011-11-11 2011-11-21  07 11 days  3 2011-11-14 
8.4 1023  2011-11-11 2011-11-21  07 11 days  4 2011-11-15 
8.5 1023  2011-11-11 2011-11-21  07 11 days  5 2011-11-16 
8.6 1023  2011-11-11 2011-11-21  07 11 days  6 2011-11-17 
8.7 1023  2011-11-11 2011-11-21  07 11 days  7 2011-11-18 
8.8 1023  2011-11-11 2011-11-21  07 11 days  8 2011-11-19 
8.9 1023  2011-11-11 2011-11-21  07 11 days  9 2011-11-20 
8.10 1023  2011-11-11 2011-11-21  07 11 days  10 2011-11-21 
+0

Arvi, 감사합니다. 당신이 도울 수 있다면 몇 가지 질문이 있습니다. 특정 이벤트 유형을 표시하려면 어떻게해야합니까? 3을 특별한 기호 또는 색상으로 표시 하시겠습니까? 퇴역 이벤트를 표시하고 끝내려면 어떻게해야할까요? 마지막으로 ObjID가 아닌 원본 테이블의 일부 필드를 기반으로이 차트를 정렬하는 방법이 있습니까? 감사합니다 –

+0

'scale_shape_manual'과'scale_color_manual'을 사용하면 모양과 색상을 이벤트에 매핑 할 수 있습니다. 시작 날짜 = x 및 종료 날짜 = (마지막 날짜가 연속 된)로 분리 된 이벤트를 원래 데이터 세트에 추가하면 표시됩니다. – arvi1000