공공데이터(주민등록인구, 시도별 1인당 지역내총생산, 지역총소득, 개인소득데이터)를 이용해서 2010년, 2020년 인구과 grdp를 추출하여 수업시간에 배운 함수들로 파이차트를 그려보았다.
area sido pop10 pop20 grdp10 grdp20
1 수도권 서울특별시 10312545 9668465 313281 440320
2 동남권 부산광역시 3567910 3391946 66831 91698
3 대경권 대구광역시 2511676 2418346 40617 57961
4 수도권 인천광역시 2758296 2942828 63266 90046
5 전라권 광주광역시 1454636 1450062 27882 41646
6 충청권 대전광역시 1503664 1463882 30225 44103
7 동남권 울산광역시 1126298 1136017 61090 68611
8 충청권 세종특별자치시 NA 355831 NA 12670
9 수도권 경기도 11786622 13427014 278532 486675
10 강원도 강원도 1529818 1542840 31729 48839
11 충청권 충청북도 1549528 1600837 40324 71299
12 충청권 충청남도 2075514 2121029 85105 114017
13 전라권 전라북도 1868963 1804104 37741 53178
14 전라권 전라남도 1918485 1851549 61793 78105
15 대경권 경상북도 2689920 2639422 87701 105250
16 동남권 경상남도 3290536 3340216 90168 112093
17 제주도 제주특별자치도 571255 674635 11159 19532
1. read.csv()와 choose.files()를 이용하여 데이터 불러오기
popData.temp <- read.csv(choose.files(), header = T) #파일을 선택해서 불러옴
- choose.files(): 대화창에서 파일을 직접 선택해서 불러옴. 복수 선택이 가능하다
choose.files()
- read.csv(): csv파일을 데이터 프레임으로 불러옴.
read.csv(file, header = TRUE, sep = ",", na.strings = "NA")
file: 데이터를 읽을 파일명(경로명)
header: 파일에 칼럼명이 첫 번째 행에 포함되어 있는지 여부 지정 (기본값: TRUE)
sep: 파일의 구분자 지정 (기본값: ",")
na.strings: 결측치가 포함되어 있을 경우 결측치를 표시할 값 지정 (기본값: NA)
2. plyr, dplyr 패키지를 이용하여 2010년, 2020년 인구와 grdp의 합을 구해 요약
library(plyr)
library(dplyr)
popData <- ddply(popData.temp, .(area), summarise, pop.a10 = sum(pop10, na.rm=T),
pop.a20 = sum(pop20, na.rm = T), grdp.a10 = sum(grdp10, na.rm = T),
grdp.a20 = sum(grdp20))
popData
> popData
area pop.a10 pop.a20 grdp.a10 grdp.a20
1 강원도 1529818 1542840 31729 48839
2 대경권 5201596 5057768 128318 163211
3 동남권 7984744 7868179 218089 272402
4 수도권 24857463 26038307 655079 1017041
5 전라권 5242084 5105715 127416 172929
6 제주도 571255 674635 11159 19532
7 충청권 5128706 5541579 155654 242089
권역별 2010년, 2020년 인구와 grdp합을 구했다. 수도권 인구가 2010년 2020년 모두 가장 많고 1인당 grdp도 가장 높다.
3. 권역별 인구와 grdp 비율을 구하고 라벨 만들기
#권역별 2010년, 2020년 인구 비율 추가
pop.pcnt10 <- round(popData$pop.a10 / sum(popData$pop.a10) * 100, 1)
pop.pcnt20 <- with(popData, round(pop.a20 / sum(pop.a20)*100,1))
label1 <- paste(popData$area, "(",pop.pcnt10, "%)") #라벨추가
label2 <- paste(popData$area, "(",pop.pcnt20, "%)")
#권역별 2010년, 2020년 grdp 비율 추가
pop.gpcnt10 <- round(popData$grdp.a10 / sum(popData$grdp.a10) * 100, 1)
pop.gpcnt20 <- with(popData, round(grdp.a20 / sum(grdp.a20)*100,1))
label3 <- paste(popData$area, "(", pop.gpcnt10, "%)") #라벨추가
label4 <- paste(popData$area, "(", pop.gpcnt20, "%)")
비율을 구해서 파이차트의 라벨로 이용하였다.
4. pie와 par을 이용해서 파이차트 그리기
dev.new() #그래프를 새 창에서 그림
par(mfrow = c(2,2)) #그래프를 2행 2열로 표시
library(RColorBrewer)
with(popData, pie(pop.a10, labels = label1, col = brewer.pal(length(area),"Set3"),
main = "2010년도 권역별 인구비율"))
with(popData, pie(pop.a20, labels = label2, col = brewer.pal(length(area),"Set3"),
main = "2020년도 권역별 인구비율"))
with(popData, pie(grdp.a10, labels = label3, col=brewer.pal(length(area),"Set3"),
main = "2010년도 권역별 GRDP 비율"))
with(popData, pie(grdp.a20, labels = label4, col = brewer.pal(length(area),"Set3"),
main = "2020년도 권역별 GRDP 비율"))
준비한 데이터와 라벨을 이용해서 pie차트를 그렸다. 차트의 색상은 RColorBrewer에서 가져왔다. 2010년과 2020년의 권역별 인구, GRDP 비율 그래프로 총 4개의 그래프를 한 화면에 표시하기 위해 par함수를 이용했다.
- par(): 그래프 표시를 설정함. 한 화면에 여러 개의 그래프를 그릴 수 있다.
par(mfrow=c(m,n))
mfrow: m개의 행과 n개의 열로 화면을 분할하여 행 우선으로 그래프를 그린다.
mfcol: 열을 우선으로 배치하고 싶다면 mfcol을 사용하면 된다.
5. 파이차트 보기
수도권과 충청권을 제외한 지역은 인구 비율이 줄어들었다. 수도권의 경우 2020년에 인구 비율이 50.2%로 절반 이상을차지하고 있다. 경제 규모 또한 그렇다. 인구 비율은 2010년에 비해서 약 1% 증가했는데 GRDP 비율은 약 3.2% 정도 증가했다. 수도권에 부가가치가 높은 산업이 많이 있을 거라고 생각이 든다.
수도권 외에도 GRDP가 상승한 지역은 충청권과 제주도가 있다. 수도권이나 충청권에 4차 산업혁명 관련 산업이 편중되어있다고 한다. 반면에 조선, 철강 석유화학 등 제조업이 주요 산업인 동남권은 GRDP 비율 감소가 다른 지역에 비해서 크다. 기존 제조업에서 지식 기반 제조업으로 전환이 지체되고, 전문직 종사자 수와 청년 인구 감소로 성장 잠재력이 크게 하락한 것이다. 지역 인프라 격차가 커지며 수도권과 다른 지역들의 지역총생산 격차가 커지고 있다.
지방 소멸 문제에 대해서 종종 생각해보게 되는데 지방인으로서 더 안타깝다. 지방과의 격차가 계속 커진다면 결국 공멸하게 되지 않을까. 하지만 산업 구조가 급격하게 바뀌었고 꽤나 오랜 시간동안 벌어져온 인프라 격차를 메우기란 참 어려운 것 같아 마음이 무거워진다.
참고 기사
https://www.joongang.co.kr/article/23915625#home
30년간 지역 불균형 심화됐다…GRDP 비중 수도권·충청권 상승, 경상권 등 하락
권역별 GRDP(지역내 총생산)의 전국비중을 보면 수도권·충청권은 증가한 반면 동남권·호남권·대경권 등 다른 지역은 감소한 것으로 나타났다. 반면 동남권(18.5%→14.4%), 대경권(11.9%→8.7%), 호남
www.joongang.co.kr
https://www.mk.co.kr/news/business/view/2022/03/205627/
新산업 유치못한 부울경…매출 1000대 기업 고작 8%
청년인구 감소까지 겹쳐 최근 10년 새 26곳 감소
www.mk.co.kr
https://www.shinailbo.co.kr/news/articleView.html?idxno=1301919
국내경제, 지역 쏠림 '심화'…수도권, 산업생산 '절반 담당' - 신아일보
서울을 비롯한 수도권이 우리나라 경제 규모 중 절반 가까이 차지하고 있는 것으로 조사됐다. 2015년 서울과 경기, 인천의 총산업산출액 비중이 5년 전보다 더 확대되는 등 지역 쏠림이 더 심화한
www.shinailbo.co.kr
전체코드
popData.temp <- read.csv(choose.files(), header = T) #파일을 선택해서 불러옴
popData <- ddply(popData.temp, .(area), summarise, pop.a10 = sum(pop10, na.rm=T),
pop.a20 = sum(pop20, na.rm = T), grdp.a10 = sum(grdp10, na.rm = T),
grdp.a20 = sum(grdp20))
popData
#권역별 2010년, 2020년 인구 비율 추가
pop.pcnt10 <- round(popData$pop.a10 / sum(popData$pop.a10) * 100, 1)
pop.pcnt20 <- with(popData, round(pop.a20 / sum(pop.a20)*100,1))
label1 <- paste(popData$area, "(",pop.pcnt10, "%)") #라벨추가
label2 <- paste(popData$area, "(",pop.pcnt20, "%)")
#권역별 2010년, 2020년 grdp 비율 추가
pop.gpcnt10 <- round(popData$grdp.a10 / sum(popData$grdp.a10) * 100, 1)
pop.gpcnt20 <- with(popData, round(grdp.a20 / sum(grdp.a20)*100,1))
label3 <- paste(popData$area, "(", pop.gpcnt10, "%)") #라벨추가
label4 <- paste(popData$area, "(", pop.gpcnt20, "%)")
popData
dev.new()
par(mfrow = c(2,2)) #그래프를 2행 2열로 표시
library(RColorBrewer)
with(popData, pie(pop.a10, labels = label1, col = brewer.pal(length(area),"Set3"),
main = "2010년도 권역별 인구비율"))
with(popData, pie(pop.a20, labels = label2, col = brewer.pal(length(area),"Set3"),
main = "2020년도 권역별 인구비율"))
with(popData, pie(grdp.a10, labels = label3, col=brewer.pal(length(area),"Set3"),
main = "2010년도 권역별 GRDP 비율"))
with(popData, pie(grdp.a20, labels = label4, col = brewer.pal(length(area),"Set3"),
main = "2020년도 권역별 GRDP 비율"))
더 알고 싶은 것
4개로 분할하여 차트를 그리고나서 4개 차트에 대한 범례(legend)를 아래에 추가하고 싶었는데 분할된 마지막 화면에만 추가가 되었다. 분할된 차트에서 전체 화면을 기준으로 옵션을 추가할 수 있는지 궁금하다.
권역별 산업 구조와 지역 격차 문제에 대해서 더 알아보고 싶다.