본문 바로가기
Big Data/Visualization

Matplotlib GridSpec

by Wikinist 2023. 8. 25.

GridSpec는 Matplotlib 라이브러리에서 제공하는 도구로, 서로 다른 크기와 비율로 레이아웃된 여러 개의 서브플롯(subplot)을 생성하는 데 사용됩니다. 이를 통해 복잡한 그래프 레이아웃을 만들거나 여러 그래프를 서로 다른 비율로 배열할 수 있습니다.

# GridSpec 설정
gs = gridspec.GridSpec(1, 2, width_ratios=[2, 1])  # 1행 2열, 첫 번째 그래프 폭을 두 번째 그래프 폭의 2배로 지정

ax1 = fig.add_subplot(gs[0])
ax2 = fig.add_subplot(gs[1])

위의 코드 샘플은 GridSpec를 사용하여 하나의 행에 두 개의 서브플롯을 생성하고, 첫 번째 서브플롯의 폭을 두 번째 서브플롯의 2배로 지정한 예시입니다.

여기서 각각의 요소에 대해 설명하겠습니다:

GridSpec(1, 2, width_ratios=[2, 1]): GridSpec 생성자를 호출하여 1행 2열의 그리드를 생성합니다. width_ratios 매개변수를 사용하여 각 열의 폭 비율을 지정합니다. 첫 번째 열의 폭은 두 번째 열의 폭의 2배로 지정되었습니다.

ax1 = fig.add_subplot(gs[0]): GridSpec에서 생성된 그리드에서 첫 번째 서브플롯을 선택합니다. 이를 통해 ax1이라는 서브플롯 객체를 생성합니다. 이 객체를 활용하여 해당 서브플롯에 그래프를 그릴 수 있습니다.

ax2 = fig.add_subplot(gs[1]): GridSpec에서 생성된 그리드에서 두 번째 서브플롯을 선택합니다. 위와 마찬가지로, ax2라는 서브플롯 객체를 생성합니다.

이제 다음은 더 자세한 예시 코드입니다

import matplotlib.pyplot as plt
import matplotlib.gridspec as gridspec
import numpy as np

# 샘플 데이터 생성
x = np.linspace(0, 10, 100)
y1 = np.sin(x)
y2 = np.cos(x)

# 그래프 생성
fig = plt.figure(figsize=(10, 4))

# GridSpec 설정
gs = gridspec.GridSpec(1, 2, width_ratios=[2, 1])

# 첫 번째 서브플롯
ax1 = fig.add_subplot(gs[0])
ax1.plot(x, y1)
ax1.set_title('Sine Function')

# 두 번째 서브플롯
ax2 = fig.add_subplot(gs[1])
ax2.plot(x, y2)
ax2.set_title('Cosine Function')

plt.tight_layout()
plt.show()

이 코드는 너비 비율이 2:1로 설정된 두 개의 서브플롯을 포함하는 그래프를 생성합니다. 첫 번째 서브플롯에는 사인 함수를, 두 번째 서브플롯에는 코사인 함수를 그립니다. plt.tight_layout()은 그래프 요소들의 간격을 최적화하여 레이아웃을 조정합니다. plt.show()는 그래프를 화면에 표시합니다.

해당 게시글은 ChatGPT의 도움을 받아 작성되었습니다.

'Big Data > Visualization' 카테고리의 다른 글

[Matplotlib] 여러 그래프 출력, subplots  (0) 2023.09.11
[scikit-plot] plot_confusion_matrix  (0) 2023.09.07
sns.heatmap() 알파값 조정  (0) 2023.08.25
Dash  (0) 2023.08.17
Plotly  (0) 2023.08.17