전 세계 나라의 경계선이 입력된 지도 자료이다.
나라의 주별 경계선까지 입력되어 있으나 지도가 1990년 자료를 기준으로 개발되어 업데이트 된 나라와 업데이트 안된 나라가 섞여있다.
col과 fill을 통해 나라별 특징을 시각화 하기 좋다.
미국의 경우 state 까지 세분화 하여 시각화가 가능하다.
if (!require(maps)) {
install.packages("maps",repos = "http://cran.us.r-project.org")
}
## Loading required package: maps
if(!require(ggplot2)) install.packages("ggplot2",repos = "http://cran.us.r-project.org")
## Loading required package: ggplot2
library(ggplot2)
library(maps)
map("italy")
title("databse=\"italy\"")
map("italy", fill=TRUE, col=2:4)
title("fill=T, col=2:4")
# 지역별로 색상을 입력할 경우 지역별 통계를 시각화 할 수 있다.
# 이경우 cut 함수를 사용하면 좋다.
map("italy", resolution=5)
title("resolution=5")
world <- map_data("world")
italy <- world[grep("Italy$", world$region),]
head(italy, 20)
## long lat group order region subregion
## 53917 12.05127 36.75703 851 53917 Italy Isola di Pantelleria
## 53918 12.00332 36.74600 851 53918 Italy Isola di Pantelleria
## 53919 11.94062 36.78037 851 53919 Italy Isola di Pantelleria
## 53920 11.93643 36.82861 851 53920 Italy Isola di Pantelleria
## 53921 11.94805 36.84307 851 53921 Italy Isola di Pantelleria
## 53922 12.02422 36.82095 851 53922 Italy Isola di Pantelleria
## 53923 12.04805 36.77637 851 53923 Italy Isola di Pantelleria
## 53924 12.05127 36.75703 851 53924 Italy Isola di Pantelleria
## 53926 15.57656 38.22031 852 53926 Italy Sicily
## 53927 15.50889 38.10664 852 53927 Italy Sicily
## 53928 15.47568 38.06294 852 53928 Italy Sicily
## 53929 15.23447 37.78481 852 53929 Italy Sicily
## 53930 15.20684 37.72056 852 53930 Italy Sicily
## 53931 15.18984 37.65073 852 53931 Italy Sicily
## 53932 15.16484 37.58955 852 53932 Italy Sicily
## 53933 15.13105 37.53189 852 53933 Italy Sicily
## 53934 15.09951 37.45860 852 53934 Italy Sicily
## 53935 15.10566 37.37549 852 53935 Italy Sicily
## 53936 15.11699 37.33472 852 53936 Italy Sicily
## 53937 15.14600 37.30801 852 53937 Italy Sicily
unique(italy$subregion)
## [1] "Isola di Pantelleria" "Sicily" "Sant'Antonio"
## [4] "Forio" "Asinara" "Sardinia"
## [7] "Isola d'Elba" NA
map("italy")
polygon(italy$long[italy$subregion=="Sicily"],italy$lat[italy$subregion=="Sicily"], col="red")
map("italy", add=T)
#한국지도 데이터 정보
world <- map_data("world")
korea <- world[grep("Korea$", world$region),]
unique(korea$subregion)
## [1] "Cheju Do" "11" "3" "21" "5"
## [6] "Namhae Do" "Koje Do" "8" "Ullung Do" "10"
## [11] NA
#한국지도를 그리고 제주도만 회색으로 그려보자.
map('world','South Korea')
polygon(korea$long[korea$subregion=="Cheju Do"],korea$lat[korea$subregion=="Cheju Do"], col="grey")
country <- map_data("state")
head(country)
## long lat group order region subregion
## 1 -87.46201 30.38968 1 1 alabama <NA>
## 2 -87.48493 30.37249 1 2 alabama <NA>
## 3 -87.52503 30.37249 1 3 alabama <NA>
## 4 -87.53076 30.33239 1 4 alabama <NA>
## 5 -87.57087 30.32665 1 5 alabama <NA>
## 6 -87.58806 30.32665 1 6 alabama <NA>
unique(country$region)
## [1] "alabama" "arizona" "arkansas"
## [4] "california" "colorado" "connecticut"
## [7] "delaware" "district of columbia" "florida"
## [10] "georgia" "idaho" "illinois"
## [13] "indiana" "iowa" "kansas"
## [16] "kentucky" "louisiana" "maine"
## [19] "maryland" "massachusetts" "michigan"
## [22] "minnesota" "mississippi" "missouri"
## [25] "montana" "nebraska" "nevada"
## [28] "new hampshire" "new jersey" "new mexico"
## [31] "new york" "north carolina" "north dakota"
## [34] "ohio" "oklahoma" "oregon"
## [37] "pennsylvania" "rhode island" "south carolina"
## [40] "south dakota" "tennessee" "texas"
## [43] "utah" "vermont" "virginia"
## [46] "washington" "west virginia" "wisconsin"
## [49] "wyoming"
NJ <- country[grep("new jersey$", country$region),]
map("state")
polygon(NJ$long, NJ$lat, col="gold")
map.text("state", add=T)
map('county', 'texas')
map.text('county', 'texas',add=T, cex=0.6)
map에 있는 자료만 가지고는 경상북도, 대구광역시에 해당하는 통계를 시각화 하는데 어려움이 있다.
이유 : 지도정보가 제대로 구축되지 있지 않음.
raster 패키지의 getData를 통해 최근자료를 다운 받아서 활용하자.
if (!require(raster)) {
install.packages("raster",repos = "http://cran.us.r-project.org")
}
## Loading required package: raster
## Loading required package: sp
library(raster)
korea1 <- getData('GADM', country='KOR', level=1)
korea2 <- getData('GADM', country='KOR', level=2)
plot(korea1)
plot(korea2)
korea1@data
## GID_0 NAME_0 GID_1 NAME_1
## 1 KOR South Korea KOR.1_1 Busan
## 10 KOR South Korea KOR.2_1 Chungcheongbuk-do
## 11 KOR South Korea KOR.3_1 Chungcheongnam-do
## 12 KOR South Korea KOR.4_1 Daegu
## 13 KOR South Korea KOR.5_1 Daejeon
## 14 KOR South Korea KOR.6_1 Gangwon-do
## 15 KOR South Korea KOR.7_1 Gwangju
## 16 KOR South Korea KOR.8_1 Gyeonggi-do
## 17 KOR South Korea KOR.9_1 Gyeongsangbuk-do
## 2 KOR South Korea KOR.10_1 Gyeongsangnam-do
## 3 KOR South Korea KOR.11_1 Incheon
## 4 KOR South Korea KOR.12_1 Jeju
## 5 KOR South Korea KOR.13_1 Jeollabuk-do
## 6 KOR South Korea KOR.14_1 Jeollanam-do
## 7 KOR South Korea KOR.15_1 Sejong
## 8 KOR South Korea KOR.16_1 Seoul
## 9 KOR South Korea KOR.17_1 Ulsan
## VARNAME_1
## 1 Pusan|Busan Gwang'yeogsi|Pusan-gwangyoksi|Fusan
## 10 Chungchongbuk-Do|Chungcheongbugdo|Ch'ungch'ong-bukto|Chusei Hoku-do|North Chungchong|Ch'ungch'ong-bukto
## 11 Chungchongnam-Do|Ch'ungch'ong-namdo|Chusei Nan-do|South Chungchong|Ch'ungch'ong-namdo
## 12 Taegu|Daegu Gwang'yeogsi|Taegu-gwangyoksi|Taikyu
## 13 Daejeon Gwang'yeogsi|Taej<U+014F>n-gwangy<U+014F>ksi|Taiden
## 14 Kang-Won-Do|Gang'weondo|Kangwon-do|Kogen-do|South Kangwon
## 15 Kwangju|Kwangju-gwangyoksi
## 16 Kyonggi-do|Keiki-do|Kyunggi
## 17 Kyongsangbuk-Do|Gyeongsangbugdo|Kyongsang-bukto|Keisho Hoku-do|North Kyongsang
## 2 Kyongsangnam-Do|Kyongsang-namdo|Keisho Nan-do|South Kyongsang
## 3 Inchon|IInch'on-gwangyoksi|Jinsen
## 4 Jeju-doQuelpart|Saishu-to|Cheju-do
## 5 Chollabuk-Do|Cholla-bukto|Jeonrabugdo|North Cholla|Zenra Hoku-do
## 6 Chollanam-Do|Cholla-namdo|Jeonranamdo|South Cholla|Zenra Nan-do
## 7 Sejong Metropolitan Autonomous City
## 8 Keijo|Seoul|Seul|Seul|Soul|Soul-t'ukpyolsi
## 9 Ulsan-gwangyoksi
## NL_NAME_1 TYPE_1
## 1 부산광역시 | 釜山廣域市 Gwangyeoksi
## 10 충청북도 | 忠淸北道 Do
## 11 충청남도 | 忠淸南道 Do
## 12 대구광역시 | 大邱廣域市 Gwangyeoksi
## 13 대구광역시 | 大邱廣域市 Gwangyeoksi
## 14 강원도 | 江原道 Do
## 15 광주광역시 | 光州廣域市 Gwangyeoksi
## 16 경기도 | 京畿道 Do
## 17 경상북도 | 慶尙北道 Do
## 2 경상남도 | 慶尙南道 Do
## 3 인천광역시 | 仁川廣域市 Gwangyeoksi
## 4 제주특별자치도 | 濟州特別自治道 Do
## 5 전라북도 | 全羅北道 Do
## 6 전라남도 | 全羅南道 Do
## 7 세종특별자치시 Do
## 8 서울특별시 Teukbyeolsi
## 9 울산광역시 | 蔚山廣域市 Metropolitan City
## ENGTYPE_1 CC_1 HASC_1
## 1 Metropolitan City <NA> KR.PU
## 10 Province <NA> KR.GB
## 11 Province <NA> KR.GN
## 12 Metropolitan City <NA> KR.TG
## 13 Metropolitan City <NA> KR.TJ
## 14 Province <NA> KR.KW
## 15 Metropolitan City <NA> KR.KJ
## 16 Province <NA> KR.KG
## 17 Province <NA> KR.KB
## 2 Province <NA> KR.KN
## 3 Metropolitan City <NA> KR.IN
## 4 Province <NA> KR.CJ
## 5 Province <NA> KR.CB
## 6 Province <NA> KR.CN
## 7 Metropolitan Autonomous City <NA> KR.SJ
## 8 Capital Metropolitan City <NA> KR.SO
## 9 Metropolitan City <NA> KR.UL
map함수에서 c()함수를 활용하여 여러나라를 선택 후 col을 통해 표현할 있다.
maps 패키지에는 map.cities함수가 있어 나라별 수도와 인구수를 시각화 할 수 있으나
작성된 연도가 현재와 차이가 있으므로 사용을 지양하자.
추가로 map.scale, map.axes 함수가 있다.
map("world", "China")
map.cities(country = "China", capitals = 1)
title("capitals = 1")
map("world", "China")
map.cities(country = "China", capitals = 2)
title("capitals = 2")
map("world", "China")
map.cities(country = "China", capitals = 3, pch=16, col="red", cex=2)
title("capitals = 3")
map("world", "China")
map.cities(country = "China", capitals = 3, minpop = 3500000, maxpop = 5000000)
title("capitals=3, minpop=3500000, maxpop=5000000")
map('world',c('South Korea','North Korea','Japan'))
map.cities(capitals=1)
map("world", "China")
map.scale()
map.axes()
USArrests : 미국 범죄데이터
위의 데이터를 지도로 시각화하여 위험한 지역을 지도로 나타내보자.
본토와 떨어진 하와이와 알라스카는 제외하여 시각화해보자.
# 본토에서 떨어진 Alaska, Hawaii 데이터 제외
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 데이터 시각화
map('state', region = usa.data$states, fill = TRUE, col = as.character(usa.data$col.level))
title("USA Assault map")
legend(-76, 35, legends, fill = sort(heat.colors(6), decreasing = TRUE), cex = 0.7)
고용율 지도
if (!require(mapproj)) install.packages('mapproj',repos = "http://cran.us.r-project.org")
## Loading required package: mapproj
library(mapproj)
data(unemp)
data(county.fips)
head(unemp)
## fips pop unemp
## 1 1001 23288 9.7
## 2 1003 81706 9.1
## 3 1005 9703 13.4
## 4 1007 8475 12.1
## 5 1009 25306 9.9
## 6 1011 3527 16.4
head(county.fips)
## fips polyname
## 1 1001 alabama,autauga
## 2 1003 alabama,baldwin
## 3 1005 alabama,barbour
## 4 1007 alabama,bibb
## 5 1009 alabama,blount
## 6 1011 alabama,bullock
# define color buckets
colors = c("#F1EEF6", "#D4B9DA", "#C994C7", "#DF65B0", "#DD1C77", "#980043")
unemp$colorBuckets <- as.numeric(cut(unemp$unemp, c(0, 2, 4, 6, 8, 10, 100)))
leg.txt <- c("<2%", "2-4%", "4-6%", "6-8%", "8-10%", ">10%")
newdata <- merge(county.fips, unemp, by="fips")
head(newdata)
## fips polyname pop unemp colorBuckets
## 1 1001 alabama,autauga 23288 9.7 5
## 2 1003 alabama,baldwin 81706 9.1 5
## 3 1005 alabama,barbour 9703 13.4 6
## 4 1007 alabama,bibb 8475 12.1 6
## 5 1009 alabama,blount 25306 9.9 5
## 6 1011 alabama,bullock 3527 16.4 6
# draw map
map("county", col = colors[newdata$colorBuckets], fill = TRUE, resolution = 0, lty = 0, projection = "polyconic")
map("state", col = "white", fill = FALSE, add = TRUE, lty = 1, lwd = 0.7, projection="polyconic")
title("unemployment by county, 2009")
legend("bottomright", leg.txt, fill = colors, bty = 'n')
2017년 행정구역별 1인당 지역 내 총생산은 아래 사이트와 같다.
raster에서 시도별 지도다 ㄷ받 ㅂ아 지1인당 지역 총소득을 시각하세요.
단, 세종시는 대전광역시와 지역총소득이 같다고 가정하자.
색 : heat.color를 이용
구분 : 1인당 지역총소득
http://kosis.kr/statHtml/statHtml.do?orgId=101&tblId=DT_1C65
아래 사이트는 2018년 한국의 수출입 현황의 통계 자료이다.
수출액에 따른 Top20개 국을 map함수를 이용하여 시각화 하여라.
색 : heat.color를 이용
구분 : 수출액