시계열 데이터 가시화 (2) 보고서용 파이썬 그래프 만들기
시계열 데이터 분석의 단계로 가기 위해서는 그래프에서부터 충분한 정보를 얻는 것이 중요합니다. 이번 포스팅에서는 시계열 데이터 그래프를 보고서에 사용할 수 있을 정도로 더 보기 좋게 다듬는 방법을 정리해보겠습니다. 그래프 크기, 그래프 이름, 축의 이름, 눈금과 마커까지 그래프에 더 많은 정보를 담는 방법을 익혀보시기 바랍니다.
글의 순서
matplotlib를 이용한 시계열 데이터 가시화 : 그래프 그리기 3단계
파이썬 시계열 데이터 그래프에 정보 추가하기
파이썬 시계열 데이터 그래프를 보고서용으로 만들기
matplotlib를 이용한 시계열 데이터 가시화 : 그래프 그리기 3단계
파이썬 실행 환경이 구축되어 있지 않더라도 이 과정을 repl.it의 코딩환경에서 따라해 보실 수 있습니다.‘파이썬 프로그래밍 시작하기 (1) 온라인 프로그래밍 환경 repl.it’라는 포스팅을 참고해 주시기 바랍니다.
지난 포스팅에서 시계열 데이터를 그래프로 나타내는 법을 알아보았습니다. 파이썬 패키지 중 matplotlib를 이용하면 아래와 같이 단 3줄의 코드로 데이터를 확인할 수 있었습니다. 참고로 파이썬에서 사용하는 패키지라는 용어는 다른 프로그래밍 언어에서 라이브러리라고 표현하기도 합니다. pyplot이라는 모듈 안에는 그래프를 그리는데 필요한 많은 함수가 들어 있습니다. plot() 함수는 x, y 좌표를 찍어주며, show() 함수는 그래프를 화면에 보여줍니다.
import matplotlib.pyplot as plt
plt.plot(x인자, y인자)
plt.show()
1 2 3 |
import matplotlib.pyplot as plt plt.plot(['06.01', '06.02', '06.03', '06.04', '06.05'], [37880, 38392, 37851, 37916, 38053]) plt.show() |
여기서 두 번째 줄의 plot 함수를 쓸 때, plt.plot(x,y) 형태로 리스트를 직접 넣는 것은 리스트의 크기가 커질수록 코드를 읽고 이해하기가 힘들어집니다. 이럴 경우 x, y라는 변수를 별도로 만들어서 ‘시계열 데이터 가시화02’ 코드처럼 나타내는 것이 좋은 방법입니다. 이렇게 x, y를 리스트 형태로 나타내보면 x-y 평면에 찍힐 점의 좌표가 보입니다. 예를 들어 (x, y) = (06.01, 37880)처럼 말입니다.
1 2 3 4 5 |
import matplotlib.pyplot as plt x = ['06.01', '06.02', '06.03', '06.04', '06.05'] y = [37880, 38392, 37851, 37916, 38053] plt.plot(x,y) plt.show() |
파이썬 그래프에 정보 추가하기
지금까지 실제 데이터인 비트코인 가격을 ‘시계열 데이터 가시화01, 그리고 02’ 코드로 확인해보았습니다. 그런데, 이들 그래프는 기본 형태만 파악할 수 있는 정도 수준입니다. 이 포스팅에서는 이 그래프에 좀 더 많은 정보를 담기 위한 방법을 간단하게 정리해보겠습니다.
– 그래프 크기 조절
– 그래프를 그림 파일로 저장
– 그래프 이름, 가로축/세로축 데이터 이름 설정
– 그래프 눈금
– 그래프 마커(marker)
(1) 그래프 크기 조절
matplotlib 라이브러리의 pyplot 모듈 안에 있는 figure 함수를 사용해서 그래프의 가로, 세로 길이를 조절할 수 있습니다. figure라는 함수의 인자로는 figsize=(가로길이, 세로길이)가 들어갑니다. 여기서 길이의 단위는 인치입니다. 아래 예제는 가로 8인치, 세로 6인치의 그래프를 그립니다.
plt.figure(figsize=(8,6))
figure라는 함수 외에도 rcParams라는 함수를 사용할 수도 있습니다. 이는 위에서 썼던 figure함수와 똑같은 결과를 만듭니다.
plt.rcParams[“figure.figsize”] = (8,6)
(2) 그래프를 그림 파일로 저장
그래프를 저장해두고 보거나, 보고서 등에 이용하려면 그림 파일로 저장해두어야 합니다. plt.savefig(‘파일명.png’)와 같이 savefig라는 함수를 이용합니다.
plt.savefig(‘8_6.png’)
(3) 그래프 제목과 레이블(가로축, 세로축 데이터 이름) 설정
title, xlabel, ylabel이라는 함수를 사용해서 그래프 제목과 축 이름을 추가할 수 있습니다.
plt.title(“Bitcoin Price”)
plt.xlabel(“Date”)
plt.ylabel(“Price (KRW)”)
(4) 축의 범위 설정
xlim, ylim이라는 함수를 사용하면 범위를 각 축의 범위를 정할 수 있습니다. 아래는 y 축의 범위를 37000부터 39000까지로 설정하라는 것입니다.
plt.ylim(37000, 39000)
(5) 그래프에 격자 넣기 : 주 격자
시계열 데이터의 변화를 그래프에서 좀 더 명확하게 보는데는 그래프의 격자가 도움이 됩니다. grid 함수를 이용하면 격자가 추가됩니다.
plt.grid()
만약 y 축에만 격자를 넣고 싶다면 plt.grid(axis = ‘y’) 와 같이 축을 지정해주면 됩니다.
plt.grid(axis = ‘y’)
격자의 색깔과 선의 형태, 선의 굵기도 정할 수 있습니다. 아래는 초록색, 점선이면서 0.5의 굵기를 지정한 것입니다. 참고로 선의 굵기의 기본값은 1.5입니다.
plt.grid(axis = ‘y’, color = ‘green’, linestyle = ‘-‘, linewidth = 1)
(6) 그래프 축에 눈금 넣기
시계열 데이터 중 그래프로부터 자세한 값까지 확인해야 할 경우도 있습니다. 주로 과학실험이나 계산 결과, 가격 데이터 등을 자세히 비교할 때 사용되는데, 보고서나 논문을 쓸 때 그래프 축에 아래와 같이 눈금을 표시하는 것입니다.
plt.minorticks_on()
이 눈금은 그래프 안쪽으로 표시할 수도 있고 바깥쪽으로 표시할 수도 있습니다. 물론 눈금의 개수도 설정할 수 있습니다. 다양한 형태의 눈금을 표시하기 위해 tick_params() 함수를 사용합니다.
(7) 그래프에 격자 넣기 : 부 격자
시계열 데이터 중 그래프로부터 자세한 값까지 확인해야 할 경우도 있습니다. 주로 과학실험이나 계산 결과, 가격 데이터 등을 자세히 비교할 때는 모눈종이처럼 촘촘한 격자가 필요합니다. 이를 위해서는 부격자를 그릴 위치인 minorticks를 활성화시켜줘야 합니다.
grid에 들어가는 옵션 중 minor를 활성화 시켜주는 것입니다. 주 격자 옵션은 major이며 기본값으로 설정되어 있습니다. 이 옵션을 활성화 시켜주기 위해 which를 사용합니다.
주격자와 부격자를 함께 나타내야 할 때는 아래와 같이 코딩해줍니다. x, y축에 모두 격자를 넣을 예정이므로 axis = ‘y’ 옵션을 뺐습니다.
plt.grid(which=’minor’, color =’cyan‘, linestyle = ‘-‘, linewidth = 0.5)
파이썬 시계열 데이터 그래프를 보고서용으로 만들기
시계열 데이터 가시화01 코드에서 단 3줄의 코드로 데이터가 어떤 모양인지를 확인하였습니다. 가장 기본적인 형태만 파악할 수 있는 정도 수준이었습니다. 그래프만으로 필요한 정보를 얻기 위하여, 또는 그래프를 남들과 공유하기 위하여 꼭 갖춰야 할 정보를 그래프에 추가하는 방법까지 알아봤습니다.
여기서는 그래프의 크기 조절부터, 그림파일로 저장하는 법, 그래프 제목과 가로, 세로축의 이름, 그리고 그래프에 눈금과 격자까지 넣어주었습니다. 이를 ‘시계열 데이터 가시화03’ 코드에 나타내었습니다. 코드에 설명문을 붙일 때는 ‘#’을 사용합니다. 이를 주석처리라고도 합니다. 코드가 복잡해질수록 코드를 이해하고, 개선시키기 위한 주석처리의 필요성은 점점 더 커집니다.
‘시계열 데이터 가시화03’ 코드를 복사, 붙여넣기 하고, 실행하시면 썸네일의 그래프가 나옵니다. 시계열 데이터를 그래프로 그릴 때 이 기본 코드를 활용하시면 그럴듯한 그래프를 그릴 수 있을 것입니다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
import matplotlib.pyplot as plt x = ['06.01', '06.02', '06.03', '06.04', '06.05'] y = [37880, 38392, 37851, 37916, 38053] # figure size plt.rcParams["figure.figsize"] = (8,6) # title, label plt.title("Bitcoin Price") plt.xlabel("Date") plt.ylabel("Price (KRW)") # limit plt.ylim(37000, 39000) # grid plt.minorticks_on() plt.grid(which = 'major', color = 'skyblue', linestyle = '-', linewidth = 1.0) plt.grid(which='minor', color ='lightskyblue', linestyle = '--', linewidth = 0.5) # output plt.plot(x,y) plt.savefig('8_6_size.png') plt.show() |
마치며 …
시계열 데이터를 분석하는 단계로 가기 위해서는 그래프에서부터 충분한 정보를 얻는 것이 중요합니다. 이번 포스팅에서는 시계열 데이터 그래프를 더 보기 좋게 다듬는 방법을 알아보았습니다.
그래프의 크기 조절부터, 그림파일로 저장하는 법, 그래프 제목과 가로, 세로축의 이름, 그리고 그래프에 눈금과 격자까지 넣어보았습니다. 시계열 데이터를 그래프로 그릴 때 이 포스팅의 기본 코드를 활용하시면 그럴듯한 그래프를 그릴 수 있을 것입니다.
함께 참고하면 더 좋은 글 :
1. 시계열 데이터 가시화 (1) 파이썬 그래프 그리기 3단계
2. 시계열 데이터 가시화 (3) 파이썬 날짜변환, pandas를 이용한 그래프 그리기
3. 시계열 데이터 가시화 (4) 2개 y축 그래프로 코인 가격 비교
4. 파이썬 프로그래밍 시작하기 (1) 온라인 프로그래밍 환경 replit
5. 파이썬 IDE 설정. 비주얼 스튜디오 코드(Visual Studio Code, VS code)
6. 파이썬 프로그래밍 시작 (3) 파이썬 함수 실습
7. 파이썬 프로그래밍 시작 (14) 패키지
8. 파이썬 데이터 분석! 데이터 분석을 위한 코딩언어 파이썬
참고자료
[1] [위키백과] 시계열
[2] Matplotlib: Visualization with Python