그래프 그리기 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번째의 그래프 범례를 넣는 이유는 아시겠죠!! ^.^

댓글

이 블로그의 인기 게시물

pdf 문자 인식(OCR)

그래프 그리기 05:= EU-15 국가들의 GDP 대비 사회지출 비중과 사회지출 대비 사회보장기여금의 비중:= 4사분면 만들기

그래프 그리기 06:= 등탄력적 효용함수 그래프 그리기