광주 지역정보 시각화

패키지

#install.packages("ggtext")
library(dplyr)
library(ggtext)
library(tmap)
library(rgdal)
library(sf)
library(plotly)
library(ggplot2)
library(viridis)
library(dplyr)

데이터 불러오기

gwang_ju <- readOGR("LSMD_ADM_SECT_UMD_29.shp",encoding = "euc-kr")
#> OGR data source with driver: ESRI Shapefile 
#> Source: "C:\Users\seong taek\Desktop\3-1 DataVisualize\data_visualize\LSMD_ADM_SECT_UMD_29.shp", layer: "LSMD_ADM_SECT_UMD_29"
#> with 203 features
#> It has 5 fields
gwang_ju %>% head()
#> class       : SpatialPolygonsDataFrame 
#> features    : 6 
#> extent      : 922908.9, 937583.2, 1685904, 1691397  (xmin, xmax, ymin, ymax)
#> crs         : +proj=tmerc +lat_0=38 +lon_0=127.5 +k=0.9996 +x_0=1000000 +y_0=2000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs 
#> variables   : 5
#> names       :   EMD_CD, EMD_NM, SGG_OID, COL_ADM_SE,  GID 
#> min values  : 29200174, 덕림동,    1604,      29200, 3247 
#> max values  : 29200202, 오선동,    3233,      29200, 3252

gwang_ju_data <- read.csv('소상공인시장진흥공단_상가(상권)정보_광주_202303.csv')
gwang_ju_data %>% head()
#>           상가업소번호                           상호명 지점명
#> 1 MA0101202210A0085370                           수헤어       
#> 2 MA0101202210A0040614                           몰카페       
#> 3 MA0101202210A0081304                   명품고로케NO.1       
#> 4 MA0101202210A0051646                       엄마손팥죽       
#> 5 MA010120220805431082 여유드림24시무인셀프빨래방소태점       
#> 6 MA010120220805431357                         위고키친       
#>   상권업종대분류코드 상권업종대분류명 상권업종중분류코드 상권업종중분류명
#> 1                 S2       수리·개인               S207       이용·미용
#> 2                 I2             음식               I212        비알코올 
#> 3                 I2             음식               I210        기타 간이
#> 4                 I2             음식               I201             한식
#> 5                 S2       수리·개인               S209             세탁
#> 6                 I2             음식               I201             한식
#>   상권업종소분류코드 상권업종소분류명 표준산업분류코드
#> 1             S20701           미용실           S96112
#> 2             I21201             카페           I56221
#> 3             I21001          빵/도넛           I56191
#> 4             I20101      백반/한정식           I56194
#> 5             S20902      셀프 빨래방           S96912
#> 6             I20101      백반/한정식           I56111
#>               표준산업분류명 시도코드     시도명 시군구코드 시군구명 행정동코드
#> 1                두발 미용업       29 광주광역시      29170     북구   29170590
#> 2                커피 전문점       29 광주광역시      29200   광산구   29200620
#> 3                   제과점업       29 광주광역시      29200   광산구   29200565
#> 4 김밥 및 기타 간이 음식점업       29 광주광역시      29155     남구   29155705
#> 5              가정용 세탁업       29 광주광역시      29110     동구   29110730
#> 6         한식 일반 음식점업       29 광주광역시      29170     북구   29170530
#>   행정동명 법정동코드 법정동명     지번코드 대지구분코드 대지구분명 지번본번지
#> 1   용봉동 2917010700   용봉동 2.917011e+18            1       대지        405
#> 2   비아동 2920011300   도천동 2.920011e+18            1       대지        380
#> 3   어룡동 2920010800   소촌동 2.920011e+18            1       대지        287
#> 4   진월동 2915510800   진월동 2.915511e+18            1       대지        369
#> 5  지원1동 2911011900   소태동 2.911012e+18            1       대지        617
#> 6  중흥3동 2917010100   중흥동 2.917010e+18            1       대지        271
#>   지번부번지                       지번주소   도로명코드
#> 1         NA     광주광역시 북구 용봉동 405 291703162020
#> 2          2 광주광역시 광산구 도천동 380-2 292003163014
#> 3          5 광주광역시 광산구 소촌동 287-5 292004289285
#> 4          2   광주광역시 남구 진월동 369-2 291553161002
#> 5          3   광주광역시 동구 소태동 617-3 291103159017
#> 6         22  광주광역시 북구 중흥동 271-22 291704286364
#>                           도로명 건물본번지 건물부번지 건물관리번호
#> 1         광주광역시 북구 반룡로         57         NA 2.917011e+24
#> 2       광주광역시 광산구 사암로        790         NA 2.920011e+24
#> 3 광주광역시 광산구 소촌로86번길         11         NA 2.920011e+24
#> 4         광주광역시 남구 금당로         47         NA 2.915511e+24
#> 5         광주광역시 동구 학소로         73         NA 2.911012e+24
#> 6   광주광역시 북구 서방로31번길          5         NA 2.917010e+24
#>                   건물명                        도로명주소 구우편번호
#> 1 용봉동유창하이리빙맨션         광주광역시 북구 반룡로 57     500843
#> 2                             광주광역시 광산구 사암로 790     506300
#> 3                        광주광역시 광산구 소촌로86번길 11     506802
#> 4               철물전기         광주광역시 남구 금당로 47     503842
#> 5                                광주광역시 동구 학소로 73     501828
#> 6                           광주광역시 북구 서방로31번길 5     500873
#>   신우편번호 동정보 층정보 호정보     경도     위도
#> 1      61182     NA      1     NA 126.9044 35.17869
#> 2      62244     NA            NA 126.8187 35.21305
#> 3      62385     NA      1     NA 126.7942 35.15232
#> 4      61735     NA      1     NA 126.8957 35.12114
#> 5      61500     NA      1     NA 126.9341 35.12629
#> 6      61190     NA      1     NA 126.9165 35.17342

gwang_ju <- gwang_ju %>% st_as_sf()
gwang_ju %>% head()
#> Simple feature collection with 6 features and 5 fields
#> Geometry type: MULTIPOLYGON
#> Dimension:     XY
#> Bounding box:  xmin: 922908.9 ymin: 1685904 xmax: 937583.2 ymax: 1691397
#> Projected CRS: Korea 2000 / Unified CS
#>     EMD_CD EMD_NM SGG_OID COL_ADM_SE  GID                       geometry
#> 0 29200202 오선동    3233      29200 3247 MULTIPOLYGON (((934856 1689...
#> 1 29200178 동림동    3232      29200 3248 MULTIPOLYGON (((925403.5 16...
#> 2 29200177 양산동    3231      29200 3249 MULTIPOLYGON (((925032.9 16...
#> 3 29200176 덕림동    1605      29200 3250 MULTIPOLYGON (((925606 1686...
#> 4 29200175 동호동    1604      29200 3251 MULTIPOLYGON (((925167 1688...
#> 5 29200174 명도동    3228      29200 3252 MULTIPOLYGON (((925936.6 16...

광주지역 ‘구’ 분류

gwang_ju %>% ggplot(aes(fill = COL_ADM_SE)) +
  geom_sf() +
  theme_minimal() +
  labs(title = "광주") +
  scale_fill_discrete(name = "구",
                      labels = c("동구","서구","남구","북구","광산구"))

광주지역 ‘동’ 분류

gwang_ju_dong <- gwang_ju %>% 
  ggplot(aes(fill=EMD_NM))+
  geom_sf()+
  geom_sf_text(mapping = aes(label = EMD_NM))+
  labs(title = "광주")+
  theme_minimal()+
  scale_fill_discrete(name = "동") 
  
gwang_ju_dong %>% ggplotly()

광주광역시 북구 문흥동

my_dong <- gwang_ju %>%
  filter(EMD_NM == "문흥동") %>%
  ggplot(aes(fill=EMD_NM)) +
  geom_sf() +
  geom_sf_text(mapping = aes(label = EMD_NM)) +
  labs(title = "광주광역시 북구 문흥동") +
  theme_minimal() +
  scale_fill_discrete(name = "동")

my_dong %>% ggplotly()

전처리

  • 각종 편의시설
library(RColorBrewer)
# 문흥동 데이터만 추출
gwang_ju_data_mydong <- gwang_ju_data %>% 
  filter(gwang_ju_data$법정동명 == "문흥동") %>% 
   st_as_sf(coords = c("경도", "위도"))

st_crs(gwang_ju_data_mydong) <- 4737

# 문흥동 지도
gwang_ju_mydong <- gwang_ju %>% 
  filter(gwang_ju$EMD_NM == "문흥동")

# 문흥동에 있는 상권업종소분류명 추출
existing_categories <- unique(gwang_ju_data_mydong$상권업종소분류명)
existing_categories %>% head()
#> [1] "편의점"             "미용실"             "독서실/스터디 카페"
#> [4] "부동산 중개/대리업" "곱창 전골/구이"     "백반/한정식"

# viridis 색상 팔레트 사용 (146개의 색상)
colors <- magma(length(existing_categories))

# 상권업종소분류명과 색상을 매칭하는 데이터프레임 생성
color_mapping <- data.frame(상권업종소분류명 = existing_categories,
                            색상 = colors)

color_mapping %>% head()
#>     상권업종소분류명      색상
#> 1             편의점 #000004FF
#> 2             미용실 #010106FF
#> 3 독서실/스터디 카페 #020109FF
#> 4 부동산 중개/대리업 #02020CFF
#> 5     곱창 전골/구이 #03030FFF
#> 6        백반/한정식 #040414FF

동네 편의시설 시각화

my_dong2 <- ggplot() +
  geom_sf(data = gwang_ju_mydong, fill = 'grey90') +
  geom_sf(data = gwang_ju_data_mydong, aes(color = 상권업종소분류명), size = 1.5) +
  scale_color_manual(values = color_mapping$색상,
                     breaks = color_mapping$상권업종소분류명,
                     labels = color_mapping$상권업종소분류명,
                     drop = TRUE) +
  theme_minimal() +
  labs(title = "문흥동 내 편의시설")

my_dong2 %>% ggplotly()

tmap 시각화

tmap_mode("view")
#> tmap mode set to interactive viewing

tmap_options(check.and.fix = TRUE)

tm_shape(gwang_ju_mydong["EMD_NM"])+
  tm_polygons(col="white",alpha = 0.3)+
  tm_shape(gwang_ju_data_mydong["상권업종소분류명"])+
  tm_symbols(shape = 2, col = "royalblue", size = 0.8, alpha = 0.5)
#> Symbol shapes other than circles or icons are not supported in view mode.