인턴 마지막 날, 지윤은 팀장에게 물었다.
"Matplotlib을 이제 어느 정도 쓸 수 있을 것 같아요. 그런데 Seaborn이나 Plotly는 언제 쓰나요?"
팀장이 커피를 마시며 정리해줬다.
세 라이브러리의 포지션
| 라이브러리 | 핵심 강점 | 주요 사용 상황 |
|---|---|---|
| Matplotlib | 커스터마이징 자유도, 기반 라이브러리 | 보고서용 출판 품질, 복잡한 레이아웃, 다른 라이브러리 커스터마이징 |
| Seaborn | 통계 시각화 특화, 한 줄로 세련된 차트 | 데이터 탐색(EDA), 상관관계, 분포 분석 |
| Plotly | 인터랙티브, 웹 대시보드 | 웹 앱, 대시보드, 마우스 호버 인터랙션 |
Seaborn 맛보기
import seaborn as snsimport matplotlib.pyplot as pltimport matplotlibimport platformmatplotlib.rcParams['font.family'] = {'Windows': 'Malgun Gothic', 'Darwin': 'AppleGothic'}.get(platform.system(), 'NanumGothic')# 한 줄로 상관관계 히트맵iris = sns.load_dataset('iris')fig, ax = plt.subplots(figsize=(8, 6))sns.heatmap(iris.iloc[:, :4].corr(), annot=True, cmap='coolwarm', ax=ax)ax.set_title('Iris 데이터 상관관계')plt.tight_layout()plt.show()


Seaborn은 Matplotlib 위에 구축되어 있습니다. ax=ax로 Axes를 전달하면 Matplotlib과 함께 사용할 수 있습니다.
Plotly 맛보기
import plotly.express as pxdf = px.data.gapminder().query("year == 2007")fig = px.scatter(df, x='gdpPercap', y='lifeExp', size='pop', color='continent', hover_name='country', log_x=True, title='2007년 GDP와 기대수명')fig.show()
마우스를 올리면 국가명이 표시되는 인터랙티브 차트가 만들어집니다. Plotly는 Matplotlib과 API가 완전히 다릅니다.
선택 기준 요약
그래프를 파일로 저장하거나 보고서에 삽입?
→ Matplotlib
데이터를 빠르게 탐색하고 통계적 패턴을 보고 싶음?
→ Seaborn (내부는 Matplotlib)
웹 앱이나 대시보드에서 인터랙티브하게 탐색?
→ Plotly
"결국 Matplotlib이 기반이에요." 팀장이 말했다. "Seaborn도 내부에서 Matplotlib Axes를 쓰고, 커스터마이징이 필요하면 결국 Matplotlib 메서드를 씁니다. 기초를 제대로 다진 지윤 씨는 어떤 라이브러리로 넘어가도 금방 적응할 거예요."
지윤은 3개월 전 처음 "Matplotlib이 뭔가요?"라고 물었던 자신을 떠올렸다. 이제는 팀의 보고서 차트 대부분이 지윤의 손에서 만들어지고 있었다.
데이터는 숫자로 말하지 않는다. 그래프로 말한다.