subplot_mosaic으로 복잡한 레이아웃
plt.subplot_mosaic과 너비·높이 비율로 크기가 다른 차트들을 배치한 그림을 만듭니다.
소개
plt.subplots는 고른 격자를 만들지만, 실제 그림에서는 큰 메인 차트 주위에 작은 차트를 두고 싶을 때가 많습니다. plt.subplot_mosaic을 쓰면 레이아웃을 행의 리스트로 그리고 차트마다 이름을 붙일 수 있습니다.
안쪽 리스트 하나가 한 행이고 이름 하나가 차트 하나입니다. 여러 칸에 같은 이름을 반복하면 더 큰 차트가 되고, "."는 칸을 비웁니다. axes는 딕셔너리이므로 axes["main"]이 산점도입니다. gridspec_kw로 상대 크기를 정해 메인 열이 오른쪽 열보다 네 배 넓어집니다. 가장자리의 히스토그램은 x와 y의 분포를 보여 줍니다.
인터랙티브 시각화
레이아웃을 고르고 크기 비율을 켜고 꺼 보세요. 모자이크의 이름 하나가 차트 하나가 됩니다.
실행 가능한 Matplotlib 예제
Matplotlib
main.py
import matplotlib.pyplot as plt
import numpy as np
rng = np.random.default_rng(4)
x = rng.normal(size=300)
y = 0.6 * x + rng.normal(scale=0.8, size=300)
fig, axes = plt.subplot_mosaic([["top", "."], ["main", "right"]], figsize=(6, 6),
gridspec_kw={"width_ratios": [4, 1], "height_ratios": [1, 4]})
axes["main"].scatter(x, y, s=10, alpha=0.6)
axes["top"].hist(x, bins=30)
axes["right"].hist(y, bins=30, orientation="horizontal")
axes["top"].axis("off")
axes["right"].axis("off")
fig.suptitle("Scatter plot with marginal histograms")
plt.show()
