그래프 그리기 04:= 특정 시기에 음영 넣기:= OECD 국가들의 총조세와 사회지출이 GDP에서 차지하는 비중(1980~2012)
// 간혹, 아니 어찌보면 자주 그래프에 특정 시기를 음영으로 넣고 싶을 때가 있죠!!
// 예를 들어, 각 정권 기간 동안 거시변수가 어떤 추이를 비교하거나, 특정 사건 전후로 달라지는 추이를 비교하는 경우...
// 오늘의 사례는 "2007년 금융위기 이후 OECD 국가들의 총조세와 사회지출이 GDP에서 차지하는 비중(1980~2012)"으로서, 2007년 금융위기 이후 기간을 음영으로 표시하는 것입니다.
// 먼저, 자료에 대한 간단한 설명을 하자면,
// 기간은 1980~2012년
// 변수: 1) ser (복지지출 비중), 2) tax (총조세 비중) , 3) yr (연도) , 4) country (국가명 및 OECD 평균)
// 보통 두 시계열 변수에 대한 선그래프는 다음과 같이 하면 되죠...
twoway ///
(line ser yr if country == "OECD - Total",lpattern(solid)) ///
(line tax yr if country == "OECD - Total",lpattern(dash))
// 자 이제 여기에 음영을 넣어볼까요....
twoway ///
(function y=26.9, range(2007 2013) recast(area) color(gs13) base(15.5) )
// 이게 무슨 말인가 하면, y=26.9 라는 직선을 그려라... 이때, x축의 범위는 2007~2013이고, 그래프는 영역형태이며 recast(area) , 색깔은 회색이고, 최소값은 15.5이다.
// 당연히 그리려는 그래프마다 바꿔줘야 하는 것은 26.9와 15.5라는 숫자이고, 기간 연도 역시 바꾸면 되겠죠...
// 그런데 문제는 이렇게 음영을 그리면 회색영역이 생뚱맞게 있다는 점...그래서 회색영역에 눈금을 알 수 있는 선(grid)을 그어줘야 품질좋은 그래프를 만들 수가 있음.
// 그래서 다음과 같이 음영부분에 들어가는 선들을 그어줌...
// 당연히 y값과 기간은 그래프마다 다르겠죠...
(function y=16, range(2007 2013) lstyle(grid))
(function y=18, range(2007 2013) lstyle(grid))
(function y=20, range(2007 2013) lstyle(grid))
(function y=22, range(2007 2013) lstyle(grid))
(function y=24, range(2007 2013) lstyle(grid))
(function y=26, range(2007 2013) lstyle(grid))
// 한편, 음영부분에 들어가는 가로선은 그래도 쉬운데 세로선은 약간...ㅋ
// 다음과 같이 좌표를 변환하기 위한 옵션을 넣어야 합니다.
// 직관적으로 이해가 안되시면 곰곰히 생각해 보시면 아실 겁니다...
(function y=2010, range(15.5 26.7) horizontal lstyle(grid) )
// 자! 이제 완성된 형태의 코드문을 다 볼까요....
#delimit ;
twoway
(function y=26.9, range(2007 2013) recast(area) color(gs13) base(15.5) )
(function y=16, range(2007 2013) lstyle(grid))
(function y=18, range(2007 2013) lstyle(grid))
(function y=20, range(2007 2013) lstyle(grid))
(function y=22, range(2007 2013) lstyle(grid))
(function y=24, range(2007 2013) lstyle(grid))
(function y=26, range(2007 2013) lstyle(grid))
(function y=2010, range(15.5 26.7) horizontal lstyle(grid) )
(line ser yr if country == "OECD - Total",lpattern(solid))
(line tax yr if country == "OECD - Total",lpattern(dash))
,ytitle("GDP 대비 비중(%)") ylabel(,grid angle(horizontal)) xtitle("") xlabel(1980(5)2012 2013, grid ) scheme(sj)
legend(order(9 "사회지출 비중" 10 "총조세" 1 "금융위기" ) rows(1) bexpand)
;
// 마지막으로 범례(legend)를 넣을 때, 9번째와 10번째의 그래프 범례를 넣는 이유는 아시겠죠!! ^.^
댓글
댓글 쓰기