댓글 쓰기 권한이 없습니다. 로그인 하시겠습니까?
사이트 로그인
오늘은 로그 데이터를 시간별로 지도에 시각화 함으로써
이동경로(Path)를 그려보도록 하겠습니다.
이전에 사용했던 데이터를 그대록 사용 하도록 하죠 : )
데이터를 다시 봐보면
현재 df3에는 아래와 같은 데이터가 들어가 있습니다.
> head(df3)
latitude longitude date id time country_code address
1 35.10196 129.0353 20131210 a 1540 중국 대한민국 부산광역시 중구 중앙동2가 49-35
2 37.44705 126.4477 20131205 a 1530 중국 대한민국 인천광역시 중구 영종해안남로321번길 131
3 37.57003 126.9813 20131204 a 1122 중국 대한민국 서울특별시 종로구 지봉로8길 54
4 37.57004 126.9813 20131205 a 825 중국 대한민국 서울특별시 종로구 종로1가 63-1
5 37.44705 126.4477 20140224 b 1551 미국 대한민국 인천광역시 중구 영종해안남로321번길 131
6 37.44706 126.4480 20140225 b 1319 미국 대한민국 인천광역시 중구 영종해안남로321번길 131
ggmap에서 path를 그리게 되면 무조건 로그의 위 부터 아래로 path가 그려집니다.
다시말해, path를 그리기 위해서는 데이터프레임을 시간순(오름차순)으로 정렬을 해야 합니다.
시간을 오름차순으로 정렬해주기 위해 order함수를 사용하도록 하겠습니다.
df3<-df3[order(df3$date,df3$time),] |
order(df3$date,df3$time) 에는
[1] 3 4 2 1 22 29 30 33 32 31 27 26 28 24 25 23 17 18 19 21 20 16 8 13 10 9 7 15 14 11 12 5 6
가 들어가 있는데 데이터프레임의 각행의 날짜, 시간순위가 들어가 있습니다.
다시말해, df3의 첫번째 행은 전체 3번째시간이고, 두번째행은 4번째, 세번째행은 2번째 시간을 의미합니다.
이 번호들을 df3[여기,] 에 넣어 줌으로써, 각 행의 위치를 시간순으로 조절하게 됩니다.
자세한 내용은 R강의 기초를 참고 해주세요 : )
df3를 다시 확인해보면 시간순으로 정렬된 것을 확인 하실 수 있습니다.
혹시 id가 뒤죽 박죽 섞인다면, df3[order(df3$id,df3$date,df3$time),] id 정렬기준을 추가 해주세요!
> df3[order(df3$date,df3$time),]
latitude longitude date id time country_code address
3 37.57003 126.9813 20131204 a 1122 중국 대한민국 서울특별시 종로구 지봉로8길 54
4 37.57004 126.9813 20131205 a 825 중국 대한민국 서울특별시 종로구 종로1가 63-1
2 37.44705 126.4477 20131205 a 1530 중국 대한민국 인천광역시 중구 영종해안남로321번길 131
1 35.10196 129.0353 20131210 a 1540 중국 대한민국 부산광역시 중구 중앙동2가 49-35
22 37.43881 126.4619 20140203 d 2125 일본 대한민국 인천광역시 중구 운서동 2850-6
29 37.88095 127.7274 20140204 d 1416 일본 대한민국 강원도 춘천시 소양동 18-8
30 38.13806 128.2497 20140204 d 1757 일본 대한민국 강원도 인제군 북면 한계리 1270
33 38.19835 128.5302 20140204 d 1833 일본 대한민국 강원도 속초시 바람꽃마을길 51-8
32 38.18799 128.6002 20140204 d 2129 일본 대한민국 서울특별시 종로구 지봉로8길 54
31 38.16605 128.5312 20140205 d 813 일본 대한민국 강원도 속초시 설악동 304
27 37.69227 127.8962 20140205 d 1209 일본 대한민국 서울특별시 종로구 지봉로8길 54
26 37.61578 127.6727 20140205 d 1244 일본 대한민국 강원도 홍천군 서면 굴업리 383-13
28 37.72819 127.6991 20140206 d 820 일본 대한민국 서울특별시 종로구 지봉로8길 54
24 37.52529 127.0272 20140206 d 918 일본 대한민국 서울특별시 강남구 압구정로28길 22
25 37.56477 127.0068 20140206 d 2116 일본 대한민국 서울특별시 중구 광희동1가 193-8
23 37.44705 126.4477 20140207 d 1847 일본 대한민국 인천광역시 중구 영종해안남로321번길 131
17 37.25086 126.9828 20140212 c 1626 중국 대한민국 경기도 수원시 권선구 고색동 48-1
18 37.25086 126.9828 20140214 c 1108 중국 대한민국 경기도 수원시 권선구 고색동 48-1
19 37.25086 126.9828 20140217 c 1125 중국 대한민국 경기도 수원시 권선구 고색동 48-1
21 37.28556 126.9686 20140217 c 2130 중국 대한민국 서울특별시 종로구 지봉로8길 54
20 37.25086 126.9828 20140218 c 959 중국 대한민국 경기도 수원시 권선구 고색동 48-1
16 37.25086 126.9828 20140219 c 1343 중국 대한민국 경기도 수원시 권선구 고색동 48-1
8 37.55672 127.0486 20140220 b 1246 미국 대한민국 서울특별시 성동구 사근동 115-8
13 37.56336 126.9845 20140220 b 1718 미국 대한민국 서울특별시 중구 명동2가 50-17
10 37.56104 126.9944 20140220 b 1938 미국 대한민국 서울특별시 종로구 지봉로8길 54
9 37.56104 126.9944 20140221 b 908 미국 대한민국 서울특별시 종로구 지봉로8길 54
7 37.52364 127.0470 20140221 b 1443 미국 대한민국 서울특별시 강남구 청담동 6-4
15 37.56506 126.9828 20140221 b 2016 미국 대한민국 서울특별시 중구 남대문로2가 5-3
14 37.56359 126.9846 20140222 b 1204 미국 대한민국 서울특별시 중구 명동길 42
11 37.56104 126.9944 20140223 b 20 미국 대한민국 서울특별시 종로구 지봉로8길 54
12 37.56336 126.9845 20140223 b 1631 미국 대한민국 서울특별시 중구 명동2가 50-17
5 37.44705 126.4477 20140224 b 1551 미국 대한민국 인천광역시 중구 영종해안남로321번길 131
6 37.44706 126.4480 20140225 b 1319 미국 대한민국 인천광역시 중구 영종해안남로321번길 131
이제 path를 그려보도록 합시다 !!
gc <- geocode('Seoul') center <- as.numeric(gc) ggmap(get_googlemap(center=center, scale = 1,maptype = "roadmap",zoom=8), fullpage = TRUE)+ geom_path(aes(x = longitude, y = latitude), data = df3, colour = as.factor(df3$id), alpha = .9, size = .9)+ geom_text(hjust=3,aes(x = longitude, y = latitude, label = df3$id, colour = "black"), size = 6, data =df3)+ geom_point(aes(x = longitude, y = latitude, size = df3$id, colour = as.factor(df3$id)), data = df3) |
기존에 사용했던 함수에
geom_path(aes(x = longitude, y = latitude), data = df3, colour = as.factor(df3$id), alpha = .9, size = .9) 와
geom_text(hjust=3,aes(x = longitude, y = latitude, label = df3$id, colour = "black"), size = 6, data =df3) 만
추가 하였습니다.
color는 as.factor(df3$id) 를 통해 색상별로 다른 선과 점이 찍히 도록 하였습니다.
결과는 아래와 같습니다.
사실 이 로그 데이터의 경우에는 모든 ID가 다 들어가 있기 때문에, 큰 의미는 없습니다.
path를 그릴 때에는 각 ID별로 데이터프레임을 추출해서 시각화 시켜야하는 단점 이 있습니다.
(혹시 id별로 짤라서 한번에 모든 id의 경로를 ggmap에 그릴 수 있는 법 아시는 분 댓글 달아주세요 ~)
df3 <- df3[df3$id == unique(df3$id)[1], ]
으로 할경우, 유니크한 아이디 벡터의 첫번째 아이디에 해당하는 로그데이터를 df3에 넣을 수 있습니다.
Designed by sketchbooks.co.kr / sketchbook5 board skin
Sketchbook5, 스케치북5
Sketchbook5, 스케치북5
Sketchbook5, 스케치북5
Sketchbook5, 스케치북5