[KT] AIVLE SCHOOL 4일차
Matplotlib
- 파이썬에서 가장 널리 사용되는 시각화 라이브러리
- 데이터를 시각화하기 위한 다양한 종류의 그래프를 생성할 수 있음
- 데이터 시각화에 필요한 모든 기능을 갖춘 강력한 도구
- 다양한 스타일과 색상 팔레트, 그리드 라인, 축 레이블, 범례 등을 지원
- 다른 라이브러리와 함께 사용될 때도 많이 있음
# 한글 표시를 위해 설치, 불러오기 !pip install koreanize_matplotlib -q import koreanize_matplotlib # matplotlib 라이브러리 불러오기 import matplotlib.pyplot as plt # 폰트 주변이 흐릿하게 보이는 것을 방지해 글씨가 좀 더 선명하게 보임 %config InlineBackend.figure_format='retina'
그래프 그리기
- plt.show() : 그래프를 화면에 출력
- plt.savefig('a') : 그래프 이미지를 파일로 저장
- plt.plot()
- 기본적인 선 그래프를 그림
- 값을 하나만 전달하면 이 값이 y축 값이 됨
- 값의 위치를 나타내는 인덱스가 x축이 됨
- 예시
# plot() 함수로 선 그래프 그리기
# plt.plot(df[열이름])
plt.plot(stock['Close'])
# x축 값, y축 값 순서로 지정
# plt.plot(x, y)
plt.plot(stock['Day'], stock['Open'])
# x축과 y축에 레이블 추가
# plt.xlabel(x축 이름)
# plt.ylabel(y축 이름)
plt.xlabel('Day')
plt.ylabel('Price')
# 그래프 제목 지정
# plt.title(제목)
# size : 글자 크기 , pad : 그래프와의 간격
plt.title('Stock Closing Price', size=15, pad=10)
# 선 스타일 설정
# plt.plot(x축, y축, '[color][marker][linestyle]') color, marker, linestyle 순서 상관 없음
# g: 초록색, o: circle marker, --: dashed line style
plt.plot(stock['Day'], stock['Close'], 'go--')
# r: 빨간색, .: point marker, ':': dotted line style
plt.plot(stock['Day'], stock['Close'], 'r.:')
# 매개변수를 이용하여 설정 가능
plt.plot(stock['Day'], stock['Close'], color='r', marker='s', linestyle'--')
# 마커 사이즈 변경
plt.plot(stock['Day'], stock['Close'], 'r.:', markersize=4)
# line 사이즈 편경
plt.plot(stock['Day'], stock['Close'], 'r.:', linewidth=0.5)
# x, y축 눈금 설정
plt.xticks(range(0,21,5))
plt.yticks(range(125,146,2))
# x, y축 폰트 사이즈 설정, 기울기 설정
plt.xticks(fontsize=7, rotation=45) # 폰트 사이즈 7, 기울기 45
plt.yticks(fontsize=7)
여러 그래프 겹쳐서 그리기
- show() 함수로 마무리 하기 전에 plot() 함수를 반복해 사용
- 그래프 두 개 그리고 한꺼번에 출력
- 서로 다른 색상, 선 스타일과 마커 지정 가능
- legend() 함수를 사용해 범례를 표시 가능
- label 속성을 사용해 각 그래프의 이름을 지정한 후 legend() 함수를 사용
- 표시할 범례 정보를 legend() 함수 안에 리스트 형태로 지정할 수도 있음
- grid() 함수를 사용해 괘선 표시 가능
# 그래프 두 개 그리기, 서로 다른 색상과 선 스타일, 마커 지정
plt.plot(stock['Day'], stock['Open'], 'go--')
plt.plot(stock['Day'], stock['Close'], 'rs--')
# 제목 설정, x, y축 레이블 지정
plt.title('Stock Price', size=15, pad=10)
plt.xlabel('Day')
plt.ylabel('Price')
plt.show()
# 범례 표시
# 방법 1
plt.plot(stock['Day'], stock['Open'], 'o--', label='시가')
plt.plot(stock['Day'], stock['Close'], 's--', label='종가')
plt.legend()
# 방법 2
plt.legend(['시가', '종가'])
# loc='upper left' 등으로 위치 변경 가능, default='best'
# 괘선 표시
plt.grid()
# axis 지정 가능 ('both, 'x', 'y')
plt.grid(axis='y')
축 범위 조정
- 범위의 시작 값과 끝 값을 지정하면 그래프가 지정된 범위로 그려짐
# plt.xlim(시작 값, 끝 값), plt.ylim(시작 값, 끝 값)
# x축의 범위를 1부터 30까지
plt.xlim(1, 30)
# y축의 범위를 100부터 160까지
plt.ylim(100, 600)
그래프 크기 조정
# figure() 함수를 사용하여 그래프 크기 조절
# plt.figure(figsize=(가로, 세로))
# 기본 크기는 (6.4, 4.4)
plt.figure(figsize=(5, 3))
수평선, 수직선 추가
# 수평선(가로): plt.axhline(y값, color, linestyle)
# 수직선(세로): plt.axvline(x값, color, linestyle)
plt.axhline(135, color='grey', linestyle='--', linewidth=0.5)
plt.axvline(10, color='grey', linestyle='--', linewidth=0.5)
그래프에 텍스트 추가
# 그래프에 텍스트 추가
# 좌표로 위치를 조정해야 하는 수작업 필요
# plt.text(x좌표, y좌표, '추가할 텍스트')
plt.text(-0.5, 135.2, '135', color='r', size=7, weight='bold')
plt.text(10.2, 125.5, '10', color='r')
여러 그래프 나눠서 그리기
- subplot() 함수를 사용하여 여러 행, 여러 열로 그래프를 한 번에 표시 가능
- 전체 그래프의 행(rows)과 열(cols) 수를 지정하고 인덱스(index)에 따라서 해당 위치에 그래프가 그려짐
# subplot(행 수, 열 수, 위치)
# plt.subplot(rows, cols, index)
# 만약 2행 1열로 표시할 것이면 subplot(2, 1, 1), subplot(2, 1, 2)를 사용
plt.subplot(2, 1, 1)
plt.plot(stock['Day'], stock['Open'], color='tab:blue', marker='o')
plt.title('Opening Price', size=10, x=0.2) # x값을 주어 제목 위치 이동
plt.subplot(2, 1, 2)
plt.plot(stock['Day'], stock['Close'], color='tab:orange', marker='s')
plt.title('Closing Price', size=10)
# suptitle() 함수로 전체 제목을 지정
plt.suptitle('Stock Price')
# tight_layout() : 그래프 간 간격을 적절하게 맞추어 그래프가 겹치지 않게 정리
plt.tight_layout()
plt.show()
'Data Science > 시각화' 카테고리의 다른 글
시각화 라이브러리(2) - Seaborn (0) | 2025.03.31 |
---|