Matplotlib - 6. 시각화 최적화

2025. 1. 21. 15:11프로그래밍 (확장)/Python-Matplotlib

Matplotlib을 사용하여 데이터 시각화를 최적화하면 그래프가 더 명확하고 전문적으로 보입니다. 이 섹션에서는 그래프 레이아웃 조정, 사용자 정의 텍스트 추가, 컬러맵 활용, 색상 막대 추가, 그래프 주석 등 시각화의 세부 요소를 최적화하는 방법을 다룹니다.


6.1 그래프 레이아웃 조정

Figure 크기와 DPI 설정 (figsize와 dpi)

그래프의 전체 크기와 해상도를 조정하여 더 명확하고 고해상도의 시각화를 생성할 수 있습니다.

예제:

import matplotlib.pyplot as plt

# Figure 크기와 DPI 설정
data = [10, 20, 30, 40]
labels = ["A", "B", "C", "D"]

plt.figure(figsize=(10, 6), dpi=100)  # 가로 10인치, 세로 6인치, 100 DPI 설정
plt.bar(labels, data, color="skyblue")
plt.title("Bar Chart with Custom Size and DPI")
plt.xlabel("Categories")
plt.ylabel("Values")
plt.show()

여백 조정 (plt.subplots_adjust())

서브플롯 간의 간격이나 그래프 여백을 조정할 때 유용합니다. tight_layout()과 함께 사용하여 제목이나 범례가 잘리지 않도록 조정할 수 있습니다.

예제:

fig, axes = plt.subplots(2, 2, figsize=(10, 8))

# 각 서브플롯 그리기
for i, ax in enumerate(axes.flat):
    ax.plot([1, 2, 3], [i + 1, (i + 1) * 2, (i + 1) * 3])
    ax.set_title(f"Plot {i + 1}")

# tight_layout과 subplots_adjust 조합
plt.tight_layout()
plt.subplots_adjust(top=0.9)  # 제목 공간 확보
plt.show()

6.2 사용자 정의 텍스트 추가

그래프에 텍스트를 추가하여 특정 데이터를 강조하거나 부가 설명을 제공할 수 있습니다.

plt.text()로 텍스트 삽입

plt.text()는 그래프의 특정 위치에 텍스트를 추가하는 데 사용됩니다. 텍스트 박스를 활용하면 더 시각적으로 구분됩니다.

예제:

x = [1, 2, 3, 4]
y = [10, 20, 15, 25]

plt.plot(x, y, marker="o")
plt.title("Custom Text Example")
plt.xlabel("X-axis")
plt.ylabel("Y-axis")

# 특정 위치에 텍스트 추가
plt.text(3, 15, "Peak Point", 
         bbox=dict(facecolor='white', edgecolor='black', alpha=0.7), 
         fontsize=12)
plt.show()

6.3 컬러맵과 색상 막대

컬러맵 (cmap) 활용

cmap은 데이터의 값을 색상으로 표현할 때 사용됩니다. 2D 데이터를 시각화할 때 주로 사용되며, 색상이 데이터 값을 직관적으로 나타냅니다.

예제:

import numpy as np

# 데이터 생성
matrix = np.random.rand(10, 10)

plt.imshow(matrix, cmap="viridis", interpolation="nearest")
plt.title("Heatmap with Viridis Colormap")
plt.colorbar(label="Intensity")  # 색상 막대 추가
plt.show()

색상 막대 (plt.colorbar())

색상 막대는 데이터의 색상 범위를 시각적으로 나타냅니다.

예제:

x = np.random.rand(100)
y = np.random.rand(100)
z = np.random.rand(100)

scatter = plt.scatter(x, y, c=z, cmap="plasma")
plt.colorbar(scatter, label="Color Intensity")
plt.title("Scatter Plot with Colorbar")
plt.xlabel("X-axis")
plt.ylabel("Y-axis")
plt.show()

6.4 그래프 주석 달기

plt.annotate()로 화살표 및 텍스트 박스 추가

데이터 포인트를 강조하거나 설명하기 위해 화살표와 텍스트 박스를 추가할 수 있습니다.

예제:

x = [1, 2, 3, 4, 5]
y = [2, 4, 6, 8, 10]

plt.plot(x, y, marker="o")
plt.title("Annotation Example")
plt.xlabel("X-axis")
plt.ylabel("Y-axis")

# 주석 추가
plt.annotate(
    "Important Point",
    xy=(3, 6),  # 화살표가 가리킬 위치
    xytext=(4, 8),  # 텍스트 위치
    arrowprops=dict(
        facecolor="black",
        shrink=0.05,
        width=2
    ),
    bbox=dict(boxstyle="round,pad=0.3", fc="yellow", alpha=0.3)
)

plt.show()