- R을 이용한 대한민국 동물 병원 지도 시각화2023년 06월 24일 19시 05분 31초에 업로드 된 글입니다.작성자: r-code-for-data-analysis
데이터는 공공데이터포털에서 얻었다.
https://www.localdata.go.kr/devcenter/dataDown.do?menuNo=20001
LOCALDATA - 지방행정인허가데이터개방:데이터다운로드
전체 데이터다운로드 전체 인허가 데이터에 대한 전체분,월 변동분, 일 변동분에 대한 자료를 제공받을 수 있습니다. 전체 다운로드 선택 업종다운로드 36개 그룹, 196개 업종에 대한 데이터를 업
www.localdata.go.kr
동물병원 분포도를 그려봄
단순 위도/경도 데이터로만 산점도로 그려봄
googleVis 패키지를 이용하여 쉽게 지도로 표시함
그럼 어떻게 했는지 살펴보자.
패키지 설치 및 데이터 불러오기
library(tidyverse) library(googleVis) library(readxl) library(stringr) df6 <- read.csv("D:/R/data/fulldata_02_03_01_P_동물병원.csv",header = T, fileEncoding = "euc-kr") head(df6)
fulldata_02_03_01_P_동물병원.csv3.31MB동물병원 주소는 나와 있는데, 위도/ 경도 데이터가 없음
그래서 우편번호에 따른 위도/경도 데이터 파일을 불러와서 위 동물 병원 데이터 주소와 matching 해서 그려보려고 함
20221006_latlng_by_zip.txt4.74MBjson 파일로 되어 있어서 불러오고 이걸 풀어서 파일로 만듦
library(jsonlite) library(httr) library(tidyverse) library(stringr) library("ggsci") df_repos <- fromJSON("D:/R/data/address/20221006_latlng_by_zip.txt") json_repos <- toJSON(df_repos) nested_json <-prettify(json_repos, indent = 4) nested_df <- fromJSON(json_repos, simplifyDataFrame = TRUE) df2 <- as.data.frame(unlist(nested_df)) class(df2) head(df2) df3 <- df2 %>% mutate(id = rownames(df2)) colnames(df3) <- c("value", "name") head(df3) df4 <- df3 %>% separate(name, into=c("code", "names")) head(df4) df5 <- df4 %>% pivot_wider(names_from=names, values_from =value) code <- df5 %>% separate(addr, into = c("a", "b", "c", "d", "e"), sep = " ") write.csv(df5, "code_to_address.csv", row.names = F, fileEncoding = 'euc-kr')
이렇게 하면 우편번호가 나와있는 위도/경도 데이터 파일을 얻을 수 있다.
그럼 여기 나와있는 주소와 위 동물병원 주소를 left_join을 써서 하나의 데이터프레임으로 만들어보자
df8 <- left_join(df7, code, by="d") %>% select(a.x, b.x, c.x, d, 사업장명, lat, lng) %>% mutate(lat = round(as.numeric(lat), 4), lng = round(as.numeric(lng), 4)) %>% distinct(사업장명, .keep_all = T) %>% na.omit() df9<- df8 %>% #filter(b.x == "용인시") %>% mutate(latlon=paste(lat,":",lng,sep='')) %>% mutate(description=paste(사업장명,":",c.x, sep='')) %>% distinct(사업장명, .keep_all = T) %>% select(latlon, description) %>% na.omit()
대한민국 전체 데이터로 ggplot 그래프를 그리면 아래와 같다
df8 %>% ggplot(aes(x=lng, y=lat, col=a.x ))+geom_point()+ scale_color_ucscgb()+ theme_bw()+ labs(x = "경도", y = "위도", title = "대한민국 동물병원 분포도", subtitle = "공공데이터포털 : https://www.localdata.go.kr/devcenter/dataDown.do?menuNo=20001")
googleVis 패키지로 그래프를 그리는 코드는 아래와 같다.
df10 <- gvisMap(df9, "latlon","description", options=list(showTip=T,showLine=T,enableScrollWheel=T, mapType='hybrid',useMapTypeControl=T, width=800, height=600)) plot(df10)
특별히 용인시에 있는 동물병원 지도를 그려보자
728x90반응형'데이터 시각화' 카테고리의 다른 글
[R을 이용한 gradient 막대그래프] (0) 2023.07.09 R을 이용한 서울시 도서관 위치 시각화 (0) 2023.06.25 여러 그래프에 라벨 달기 (egg) (0) 2023.05.30 한정된 데이터로 추정해서 그리는 방법 (ggdensity) (0) 2023.05.29 움직이는 그래프를 만들어보자(gganimation) (0) 2023.05.29 댓글