본문 바로가기
Artificial Intelligence/60. Python

[PYTHON] Plotly로 구현하는 인터랙티브 데이터 시각화 완전 가이드

by Papa Martino V 2025. 7. 23.
728x90

Plotly로 구현하는 인터랙티브 데이터 시각화 완전 가이드
[PYTHON] Plotly

 

1. Plotly란 무엇인가?

PlotlyPython, R, JavaScript 등에서 사용 가능한 인터랙티브 시각화 라이브러리입니다. 특히 Python에서는 Plotly Express와 Plotly Graph Objects 두 가지 API를 통해 손쉽게 다양한 그래프를 만들 수 있습니다. 일반적인 matplotlib나 seaborn과 달리, Plotly는 HTML 기반의 동적인 시각화가 가능하여 웹 대시보드, 데이터 리포트, 프레젠테이션 자료로 활용도가 높습니다.

2. 설치 방법

pip install plotly

JupyterLab 또는 VSCode를 사용하는 경우에도 브라우저에서 바로 시각화가 가능합니다.

3. 주요 기능 비교

기능 Plotly Matplotlib Seaborn
인터랙티브 지원 지원 미지원 미지원
웹 내보내기 가능 불가 불가
차트 종류 다양성 매우 다양 보통 제한적
초보자 접근성 높음 (Plotly Express) 보통 높음
대시보드 제작 Dash 연동 가능 불가 불가

4. 기본 사용 예제 (Plotly Express)

import plotly.express as px
df = px.data.iris()  # 내장 데이터셋
fig = px.scatter(df, x="sepal_width", y="sepal_length", color="species")
fig.show()
      

위 코드는 붓꽃 데이터셋을 이용하여 종(species)에 따라 색상이 구분된 산점도를 생성합니다. 마우스 오버, 줌인/아웃, 레전드 클릭이 모두 가능합니다.

5. 고급 예제: 시계열 라인 차트

df = px.data.stocks()
fig = px.line(df, x='date', y=['GOOG', 'AAPL', 'AMZN'], title='Tech Stocks Over Time')
fig.show()
      

시계열 데이터를 라인 차트로 시각화하며, 시간에 따라 확대/축소 및 마우스 툴팁 기능이 자동으로 활성화됩니다.

6. 다양한 차트 유형

  • 산점도(Scatter)
  • 막대 그래프(Bar)
  • 라인 차트(Line)
  • 히트맵(Heatmap)
  • 트리맵(Treemap)
  • 3D 플롯(3D Surface, 3D Scatter)
  • 파이 차트(Pie)
  • 애니메이션 차트 (시간 경과에 따른 동적 시각화)

7. 웹 대시보드: Dash 연동

Plotly는 같은 회사에서 개발한 Dash 프레임워크와 통합하여, 코드만으로 웹 기반 대시보드를 만들 수 있습니다.

from dash import Dash, dcc, html
import plotly.express as px

app = Dash(__name__)
df = px.data.gapminder().query("year == 2007")
fig = px.scatter(df, x="gdpPercap", y="lifeExp", size="pop", color="continent")

app.layout = html.Div([
  html.H1("세계 GDP vs 기대수명"),
  dcc.Graph(figure=fig)
])

if __name__ == '__main__':
  app.run_server(debug=True)
      

이 코드를 실행하면 Plotly 시각화가 포함된 웹 애플리케이션이 브라우저에서 동작합니다.

8. 실무 활용 사례

  • 마케팅 분석: 방문자 트렌드 시각화, 매출 데이터 추세 분석
  • 재무 리포트: 수익/비용 비교 및 KPI 그래프화
  • 고객 행동 분석: 시간대별 클릭량, 장바구니 전환율 분석
  • BI 대시보드: 실시간 매출 현황을 담은 대시보드 구축

9. 자주 묻는 질문

Q. 그래프를 HTML로 저장할 수 있나요?
A. 예. fig.write_html("파일명.html")로 저장 가능합니다.
Q. 오프라인에서도 시각화가 가능한가요?
A. 가능합니다. 인터넷 없이도 브라우저 기반의 시각화가 동작합니다.
Q. Matplotlib보다 느리지 않나요?
A. 렌더링 면에서는 느릴 수 있지만, 웹 기반 인터랙션이 필요하다면 가치가 높습니다.

10. 마무리

Python으로 아름답고 직관적인 시각화를 구현하고자 한다면 Plotly는 최고의 선택입니다. 단순한 그래프를 넘어서 동적 보고서, 실시간 분석, 웹 대시보드까지 확장 가능한 이 도구는 실무 효율성과 데이터 전달력을 모두 충족시켜줍니다. 이제 단순한 막대 그래프에서 벗어나, 진정한 ‘데이터의 이야기’를 전달해보세요. Plotly는 그 길을 함께할 강력한 도구입니다.

출처

728x90