1. 기본 사용법
2x2 배열의 서브플롯에 각각 선 그래프, 막대 그래프, 산점도, 히스토그램이 그려집니다. tight_layout() 함수로 서브플롯 간의 간격이 자동으로 조정됩니다.
import matplotlib.pyplot as plt
# 하나의 Figure와 2x2 배열의 서브플롯 생성
fig, axs = plt.subplots(2, 2)
# 각각의 서브플롯에 접근하여 차트를 그릴 수 있습니다
axs[0, 0].plot([1, 2, 3], [1, 4, 9])
axs[0, 1].bar([1, 2, 3], [1, 4, 9])
axs[1, 0].scatter([1, 2, 3], [1, 4, 9])
axs[1, 1].hist([1, 2, 3, 1, 2, 3, 1, 2, 3])
# 레이아웃 조정
plt.tight_layout()
# 차트 표시
plt.show()
2. 다양한 크기의 서브플롯
위쪽 서브플롯에 'First Subplot'이라는 제목의 선 그래프가 그려지고, 아래쪽 서브플롯에 'Second Subplot'이라는 제목의 선 그래프가 그려집니다. tight_layout() 함수로 간격이 자동으로 조정됩니다.
plt.subplots(2, 1, figsize=(8, 6))
- plt.subplots(rows, cols, figsize=(width, height))는 rows × cols 배열의 서브플롯을 생성
- rows=2: 서브플롯을 세로로 2개 생성
- cols=1: 서브플롯을 가로로 1개 생성
- figsize=(8, 6): 전체 Figure의 크기를 지정. 여기서 8은 너비(inches), 6은 높이(inches)
import matplotlib.pyplot as plt
# 2x1 배열의 서브플롯 생성
fig, (ax1, ax2) = plt.subplots(2, 1, figsize=(8, 6))
# 첫 번째 서브플롯
ax1.plot([1, 2, 3], [1, 4, 9])
ax1.set_title('First Subplot')
# 두 번째 서브플롯
ax2.plot([1, 2, 3], [9, 4, 1])
ax2.set_title('Second Subplot')
# 레이아웃 조정
plt.tight_layout()
# 차트 표시
plt.show()
3. 다양한 배율 설정
첫 번째 서브플롯이 두 번째 서브플롯보다 세 배 높게 그려집니다. 각각의 서브플롯에 제목이 추가됩니다.
import matplotlib.pyplot as plt
# 다양한 높이의 서브플롯
fig, (ax1, ax2) = plt.subplots(2, 1, gridspec_kw={'height_ratios': [3, 1]}, figsize=(8, 6))
# 첫 번째 서브플롯
ax1.plot([1, 2, 3], [1, 4, 9])
ax1.set_title('Taller Subplot')
# 두 번째 서브플롯
ax2.plot([1, 2, 3], [9, 4, 1])
ax2.set_title('Shorter Subplot')
# 레이아웃 조정
plt.tight_layout()
# 차트 표시
plt.show()
4. 서브플롯 간의 간격 조정
2x2 배열의 서브플롯 간의 간격이 수평(wspace=0.5), 수직(hspace=0.5)으로 조정되어 더 넓게 표시됩니다.
import matplotlib.pyplot as plt
# 2x2 배열의 서브플롯 생성
fig, axs = plt.subplots(2, 2, figsize=(8, 8))
# 각 서브플롯에 그래프를 그리기
axs[0, 0].plot([1, 2, 3], [1, 4, 9])
axs[0, 1].plot([1, 2, 3], [1, 4, 9])
axs[1, 0].plot([1, 2, 3], [1, 4, 9])
axs[1, 1].plot([1, 2, 3], [1, 4, 9])
# 서브플롯 간의 간격 조정
plt.subplots_adjust(hspace=0.5, wspace=0.5)
# 차트 표시
plt.show()
5. 서브플롯에 추가 기능 적용
첫 번째 서브플롯과 두 번째 서브플롯에 각각 다른 제목, 축 레이블, 범례, 그리드가 추가됩니다. tight_layout() 함수로 간격이 자동으로 조정됩니다.
import matplotlib.pyplot as plt
# 2x1 배열의 서브플롯 생성
fig, (ax1, ax2) = plt.subplots(2, 1, figsize=(8, 6))
# 첫 번째 서브플롯
ax1.plot([1, 2, 3], [1, 4, 9], label='Line 1')
ax1.set_title('First Subplot')
ax1.set_xlabel('X Axis 1')
ax1.set_ylabel('Y Axis 1')
ax1.legend()
ax1.grid(True)
# 두 번째 서브플롯
ax2.plot([1, 2, 3], [9, 4, 1], label='Line 2', color='r')
ax2.set_title('Second Subplot')
ax2.set_xlabel('X Axis 2')
ax2.set_ylabel('Y Axis 2')
ax2.legend()
ax2.grid(True)
# 레이아웃 조정
plt.tight_layout()
# 차트 표시
plt.show()
6. 상단에 캔들차트, 하단에 선 그래프 그리기
상단에는 캔들차트, 하단에는 종가를 나타내는 선 차트가 하나의 Figure에 그려집니다. 상단 서브플롯의 높이가 하단보다 두 배 크며, 각각의 서브플롯에 제목과 레이블이 추가됩니다.
import yfinance as yf
import mplfinance as mpf
import pandas as pd
import matplotlib.pyplot as plt
# yfinance를 사용하여 S&P 500 데이터 다운로드
ticker = '^GSPC'
data = yf.download(ticker, start='2023-01-01', end='2024-01-01')
# Figure와 서브플롯 생성
fig, (ax_candle, ax_line) = plt.subplots(2, 1, gridspec_kw={'height_ratios': [2, 1]}, figsize=(10, 8))
# 캔들차트 스타일 설정
custom_style = mpf.make_mpf_style(base_mpf_style='charles',
marketcolors=mpf.make_marketcolors(up='g', down='r', wick='i', edge='i'))
# 상단의 캔들차트 그리기
mpf.plot(data, type='candle', ax=ax_candle, volume=False, style=custom_style)
ax_candle.set_title('S&P 500 Candlestick Chart')
# 하단의 선 차트 그리기
x = data.index
y = data['Close']
ax_line.plot(x, y, label='Close Price')
ax_line.set_title('S&P 500 Line Chart')
ax_line.set_xlabel('Date')
ax_line.set_ylabel('Close Price')
ax_line.legend()
# 레이아웃 조정
plt.tight_layout()
# 차트 표시
plt.show()
'프로그래밍 > 파이썬' 카테고리의 다른 글
배치파일을 통해 관리자 권한으로 실행하기 (0) | 2024.06.22 |
---|---|
ta_lib를 이용하여 슬로우 스토캐스틱 구하기 (0) | 2024.06.15 |
pip 오류 Configuration file could not be loaded. (0) | 2024.06.11 |
파이썬 함수에서 여개의 값을 리턴(반환)하는 방법 (0) | 2024.05.15 |
[에러]pip is configured with locations that require TLS/SSL, however the ssl module in Python is not available. (0) | 2024.03.31 |