본문 바로가기
공부/R & Python

5-4. R그래픽-공간지도분석

by 드인 2020. 2. 15.

5-4. R그래픽-공간지도분석


1) R 추가패키지 설치

- 추가패키지 설치(install.packages)

install.packages("maps")
library(maps)

maps - 세계의 지도 데이터베이스


install.packages("mapdata")
library(mapdata)

mapdata - maps보다 정교한 지도

install.packages("mapproj")
library(mapproj)

mapproj - 위도와 경도

 

2) maps 패키지

- map 함수군

(1) map() : 지도를 시각화

(2) map.text

(3) map.cities() : 시각화된 지도위에 도시이름 출력

(4) map.axes() : 위도, 경도 축을 그려줌

 

3) R그래픽 : 공간지도

- 한국지도 : maps와 mapdata를 이용한 지도

par(mfrow = c(1, 2), mar=c(2,2,2,2))


map(database = 'world', region = c('South Korea', 'North Korea'))
title("Korea : maps packages")

map(database = 'worldHires', region = c('South Korea', 'North Korea'))
title("Korea : mapdata packages")

 

- 중국의 3대 대도시 (인구가 3백5십만-5십만) : maps 패키지

par(mfrow = c(1, 1), mar=c(2,2,2,2))
map("worldHires", "China")
map.cities(country = "China", capitals = 3, minpop = 3500000, maxpop = 5000000)
title("capitals=3, minpop=3500000, maxpop=5000000")

 

3) mapdata 패키지

- mapdata패키지 : maps패키지가 갖고 있는 지도보다 해상도가 좋음,

                         'worldHires' 지도 데이터베이스가 포함됨

- word database : a cleaned-up version of the CIA World Data Bank 2 data

 

- 주변 아시아 국가지도 : mapdata 패키지를 이용한 지도

par(mfrow = c(1, 1), mar=c(2,2,2,2))


map('worldHires', region=c('South Korea', 'North Korea', 'Japan', 'China'))
map('worldHires', region=c('South Korea'), col = 'blue', add = TRUE, fill = TRUE)
map('worldHires', region=c('North Korea'), col = 'coral', add = TRUE, fill = TRUE)
map('worldHires', region=c('Japan'), col = 'grey',add = TRUE, fill = TRUE)
map('worldHires', region=c('China'), col = 'yellow',add = TRUE, fill = TRUE)

 

4) mapproj 패키지

- 독도 표시 (mapproj 패키지 활용- 위도 경도 표시)

library(mapproj)

map('worldHires', proj = 'azequalarea', orient = c(37.24223, 131.8643, 0))
map.grid(col = 2)
points(mapproject(list(y = 37.24223, x = 131.8643)), col = "blue", pch = "x", cex = 2)
title("독도")

 

 

5) 추가

- 인코딩(UTF-8)방식 변경 (한글 인코딩)

Tools_Grobal options 메뉴에서 Code_Saving으로 가서 UTF-8로 변경

 

- 지도 데이터베이스와 행정자료 결합 : 미국 (1973) 범죄수 지도

par(mfrow = c(1, 1), mar=c(1,1,1,1))
library(maps)

sub.usa <- subset(USArrests,!rownames(USArrests) %in% c("Alaska", "Hawaii"))

usa.data <- data.frame(states = rownames(sub.usa), Assault = sub.usa$Assault)

col.level <- cut(sub.usa[, 2], c(0, 100, 150, 200, 250, 300, 350))
legends <- levels(col.level)
  
levels(col.level) <- sort(heat.colors(6), decreasing = TRUE)
usa.data <- data.frame(usa.data, col.level = col.level)
  
map('state', region = usa.data$states, fill = TRUE, col = as.character(usa.data$col.level))
title("USA Assault map")
legend(-77, 34, legends, fill = sort(heat.colors(6), decreasing = TRUE), cex = 0.7)

 

- 행정자료 (USArrests는 기본프로그램에 포함된 데이터)

help(USArrests)
head(USArrests)