데이터 시각화는 정보의 패턴, 추세 및 관계를 직관적으로 이해하는 데 필수적인 도구입니다. Python에서는 다양한 라이브러리를 이용하여 데이터를 효과적으로 시각화할 수 있습니다. 특히, 복잡한 데이터를 명확하게 표현해야 하는 경우, 3차원 그래프와 같은 고급 시각화 기법이 유용합니다. 이 글에서는 파이썬의 데이터 시각화 방법 중 두 가지, 즉 서피스 플롯과 컨투어 플롯에 대해 알아보겠습니다.

서피스 플롯과 컨투어 플롯의 이해
서피스 플롯은 3차원 공간에서 함수의 결과를 시각적으로 나타내는 방법입니다. 주어진 두 개의 독립 변수 x와 y에 대해 함수 z = f(x, y)의 값을 시각화합니다. 서피스 플롯은 데이터의 변화를 한눈에 파악할 수 있도록 돕는 반면, 컨투어 플롯은 동일한 데이터를 2차원에 등고선 형태로 표현하여, 데이터의 경향을 명확히 보여줍니다.
서피스 플롯과 컨투어 플롯의 차이점
- 서피스 플롯: 3D 공간에서 직접적으로 데이터의 형태를 시각화하여, 데이터 간의 관계를 입체적으로 이해할 수 있게 합니다.
- 컨투어 플롯: 2D 평면에서 등고선을 통해 함수의 값을 나타내며, 각 레벨에서의 데이터 분포를 쉽게 확인할 수 있습니다.
이 두 유형의 플롯을 결합하면 데이터의 구조를 더 풍부하게 표현할 수 있습니다. 다음 섹션에서는 파이썬 코드를 활용하여 이 두 플롯을 동시에 그리고, 데이터 분석에 어떻게 활용할 수 있는지 살펴보겠습니다.
파이썬을 이용한 서피스 플롯과 컨투어 플롯 그리기
이번 섹션에서는 파이썬의 Matplotlib 라이브러리를 이용하여 서피스 플롯과 컨투어 플롯을 생성하는 코드를 제공하겠습니다. 아래의 코드는 두 개의 플롯을 하나의 Figure에 나란히 배치하여 시각적으로 비교할 수 있도록 합니다.
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
# 데이터프레임 생성
data = pd.DataFrame({
'x': [20, 20, 20, 30, 30, 30, 40, 40, 40],
'y': [0.11, 0.12, 0.14, 0.11, 0.12, 0.14, 0.11, 0.12, 0.14],
'z': [151, 136, 120, 240, 220, 200, 300, 270, 240]
})
# x, y의 그리드 생성
x = data['x'].unique()
y = data['y'].unique()
x, y = np.meshgrid(x, y)
# z 값을 재배열
z = data.pivot(index='y', columns='x', values='z').values
# 서피스 플롯과 컨투어 플롯을 동시에 생성
fig, axs = plt.subplots(nrows=1, ncols=2, figsize=(16, 6), subplot_kw={'projection': '3d'}, gridspec_kw={'width_ratios': [1, 1]})
# 서피스 플롯 생성
surf = axs[0].plot_surface(x, y, z, cmap='viridis')
fig.colorbar(surf, ax=axs[0], shrink=0.5, aspect=5)
axs[0].set_xlabel('X 축')
axs[0].set_ylabel('Y 축')
axs[0].set_zlabel('Z 축')
axs[0].set_title('서피스 플롯', fontsize=16)
axs[0].view_init(30, 120)
# 컨투어 플롯 생성
axs[1].remove() # 기존의 3D 서브플롯 제거
axs[1] = fig.add_subplot(122) # 새로운 2D 서브플롯 생성
contour = axs[1].contourf(x, y, z, cmap='viridis')
fig.colorbar(contour, ax=axs[1], shrink=0.5, aspect=5)
axs[1].set_title('컨투어 플롯', fontsize=16)
axs[1].set_xlabel('X 축', fontsize=16)
axs[1].set_ylabel('Y 축', fontsize=16)
plt.tight_layout(pad=3)
plt.show()
위 코드는 데이터를 기반으로 서피스 플롯과 컨투어 플롯을 동시에 생성하는 예시입니다. 각 플롯은 X와 Y 축에 대한 레이블, 제목 및 색상 바를 포함하고 있어 정보에 쉽게 접근할 수 있게 해 줍니다.

결론
서피스 플롯과 컨투어 플롯은 데이터 분석에서 매우 유용한 도구입니다. 이 두 가지 플롯을 활용하면 다양한 데이터의 관계를 직관적으로 이해할 수 있으며, 데이터의 변화를 명확하게 시각화하여 효과적인 의사 결정을 도울 수 있습니다. 본 포스트를 통해 파이썬을 이용한 데이터 시각화의 기초를 확립하시길 바랍니다.
앞으로의 데이터 시각화 여정에서도 많은 성과를 이루시길 기원합니다.
자주 찾으시는 질문 FAQ
서피스 플롯과 컨투어 플롯의 차이점은 무엇인가요?
서피스 플롯은 3차원 공간에서 데이터를 입체적으로 표현하며, 함수의 변화를 시각적으로 파악하는 데 유용합니다. 반면, 컨투어 플롯은 2차원 평면에서 등고선을 통해 데이터의 분포를 나타내어, 변화 양상을 쉽게 이해할 수 있도록 돕습니다.
파이썬으로 서피스 플롯과 컨투어 플롯을 어떻게 동시에 그릴 수 있나요?
파이썬의 Matplotlib 라이브러리를 사용하여 서피스 플롯과 컨투어 플롯을 같은 Figure 안에 나란히 배치할 수 있습니다. 이를 통해 두 개의 플롯을 비교하기 쉽게 시각화할 수 있으며, 코드 예제를 통해 쉽게 구현할 수 있습니다.