상세 컨텐츠

본문 제목

[R / Rstudio] R을 이용한 서울시 지도 시각화 및 서울시 커피전문점 분포도 그리기

프로그래밍/R , Rstudio

by j_silver0416 2020. 12. 7. 11:40

본문

1. 데이터 셋 찾기

data.seoul.go.kr/dataList/OA-16095/S/1/datasetView.do

서울특별시 휴게음식점 인허가 정보

 

2. R 스튜디오를 사용해 서울시 지도 불러오기

  1) 필요한 라이브러리 불러오기

      library(ggmap)

      library(ggplot2)

      library(raster)

      library(rgeos)

      library(maptools)

      library(rgdal)

 

  2) 지리정보 데이터 셋 불러오기

    www.gisdeveloper.co.kr/?p=2332 여기서  시군구 2017년 3월 업데이트 파일을 다운로드한다.

 

     (1) 시각화하고 싶은 데이터와 지리정보 데이터를 R스튜디오로 불러오기

P <- read.csv("C:/sample.csv", header = TRUE) #시각화할 데이터셋
map <- shapefile("C:/SIG_201703/TL_SCCO_SIG.shp") #지리 정보 데이터셋

 

     (2) 지리정보 데이터를 몇가지 단계를 거쳐 변환시키기

map <- spTransform(map, CRSobj = CRS('+proj=longlat +ellps=WGS84 +datum=WGS84 +no_defs'))
new_map <- fortify(map, region = 'SIG_CD')
new_map$id <- as.numeric(new_map$id)
seoul_map <- new_map[new_map$id <= 11740,]

     (3) 시각화하고 싶은 데이터와 지리정보 데이터를 합치기

P_merge <- merge(seoul_map, P, by='id')

     (4) 구별 경계 그리기

 

ggplot() + geom_polygon(data = P_merge, aes(x=long, y=lat, group=group), fill = 'white', color='black')

     (5) 자신이 시각화하고 싶은 컬럼명을 fill 속성에 넣어주어서 구별로 값에 따라 진하기가 달라지는 지도 그리기

ggplot() + geom_polygon(data = P_merge, aes(x=long, y=lat, group=group, fill = 자신이 시각화하고 싶은 컬럼명))

     (6) 타이틀 넣기

plot <- ggplot() + geom_polygon(data = P_merge, aes(x=long, y=lat, group=group, fill = A))
plot + scale_fill_gradient(low = "#ffe5e5", high = "#ff3232", space = "Lab", guide = "colourbar") 
     + theme_bw() + labs(title = "서울시 A 분포") 
     + theme(panel.grid.major.x = element_blank(), panel.grid.minor.x = element_blank(), panel.grid.major.y = element_blank(), panel.grid.minor.y = element_blank(), plot.title = element_text(face = "bold", size = 18, hjust = 0.5))

     

 

[해당 내용을 토대로 실습한 결과]

++ 지도 안에 자치구 별 이름과 수치 넣기

plot + scale_fill_gradient(low = "#E5FFEB", high = "#138535", space = "Lab", guide = "colourbar") 
+ theme_bw() + labs(title = "서울시 카페 분포") 
+ theme(panel.grid.major.x = element_blank(), panel.grid.minor.x = element_blank(), panel.grid.major.y = element_blank(), panel.grid.minor.y = element_blank(), plot.title = element_text(face = "bold", size = 18, hjust = 0.5)) 
+geom_text(data = gu_name, aes(x=long, y=lat, label=paste(gu_name,coffee, sep = "\n")))

 

[자치구별 이름과 수치 텍스트를 넣고, 지도의 색을 변경한 결과]

 

++ 수치에 따라 원의 크기를 다르게 해서 지도 위에 표시 (geom.point 사용)

 1) 원의 색깔이 너무 알록달록해짐

   추가한 코드+ geom_point(data=gu_name, aes(x=long, y=lat, size=coffee, color=as.character(coffee))) + scale_size_continuous(name="coffee" , range = c(1,20))

plot + scale_fill_gradient(low = "#E5FFEB", high = "#138535", space = "Lab", guide = "colourbar") 
+ theme_bw() + labs(title = "서울시 카페 분포") 
+ theme(panel.grid.major.x = element_blank(), panel.grid.minor.x = element_blank(), panel.grid.major.y = element_blank(), panel.grid.minor.y = element_blank(), plot.title = element_text(face = "bold", size = 18, hjust = 0.5))  
+ geom_point(data=gu_name, aes(x=long, y=lat, size=coffee, color=as.character(coffee))) + scale_size_continuous(name="coffee" , range = c(1,20)) 
+geom_text(data = gu_name, aes(x=long, y=lat, label=paste(gu_name,coffee, sep = "\n")))

[수치에 따라 원의 크기를 변경한 결과]

 2) 원의 색을 통일

  변경한 코드

+ geom_point(data=gu_name, aes(x=long, y=lat, size=coffee), color='yellow') + scale_size_continuous(name="coffee" , range = c(1,20)) 

plot + scale_fill_gradient(low = "#E5FFEB", high = "#138535", space = "Lab", guide = "colourbar") 
+ theme_bw() + labs(title = "서울시 카페 분포") 
+ theme(panel.grid.major.x = element_blank(), panel.grid.minor.x = element_blank(), panel.grid.major.y = element_blank(), panel.grid.minor.y = element_blank(), plot.title = element_text(face = "bold", size = 18, hjust = 0.5))  
+ geom_point(data=gu_name, aes(x=long, y=lat, size=coffee), color='yellow') + scale_size_continuous(name="coffee" , range = c(1,20)) 
+geom_text(data = gu_name, aes(x=long, y=lat, label=paste(gu_name,coffee, sep = "\n")))

[원의 색을 통일시켜 변경한 결과]

 

출처

givitallugot.github.io/articles/2020-03/R-visualization-1-seoulmap

 

 

[R/RStudio] R을 이용한 서울시 지도 시각화 with ggplot2 ggmap raster rgeos maptools rgdal packages | Clue's Blog

지리 정보를 시각화할 때 QGIS 등의 툴을 사용할 수도 있으나 rough한 시도별 또는 구별 수치 시각화는 R과 R Studio를 이용해서 어렵지 않게 그려볼 수 있습니다. 이러한 그래프는 시도별 또는 구별

givitallugot.github.io

 

댓글 영역