🎨 Plotly, 왜 써야 할까?

Matplotlib과 Seaborn으로 정적인 그래프는 충분히 익숙해졌다고 생각했다

하지만 데이터를 단순히 보여주는 것을 넘어
사용자가 직접 탐색할 수 있는 인터랙티브(Interactive)한 경험을 주고 싶었다

Plotly는 그런 점에서 아주 매력적인 도구라고 느꼈다
마우스를 올리면 정보가 뜨고, 특정 영역을 확대하는 등
동적인 그래프를 만들 수 있다는 점이 가장 큰 장점인 것 같다


✨ Plotly의 핵심 특징들

Plotly를 처음 접하면서 가장 인상 깊었던 특징들을 정리해봤다

특징 내가 느낀 점
인터랙티브 사용자가 그래프와 소통하는 느낌을 준다, 데이터 탐색이 훨씬 즐거워질 것 같았다
다양한 차트 기본 차트는 물론, 3D나 지도 시각화까지 지원해서 표현의 폭이 넓다고 생각했다
JSON 기반 모든 그래프가 웹 친화적인 JSON 구조라는 점이 신기했다, 웹에 올리기도 편할 것 같다
쉬운 공유 HTML 파일 하나로 그래프를 저장하고 공유할 수 있어 협업할 때 유용할 것 같았다

📦 Plotly 시작하기: 주요 모듈 임포트

Plotly는 기능별로 모듈이 잘 나뉘어 있었다
목적에 맞게 필요한 것만 가져다 쓰는 방식이 효율적이라고 생각했다

# 보통 이 정도만 알아도 충분히 활용할 수 있을 것 같다
import plotly.io as pio            # 그래프를 보여주거나 저장할 때
import plotly.express as px        # 쉽고 빠르게 고퀄리티 그래프를 만들 때 (강력 추천)
import plotly.graph_objects as go  # 그래프를 아주 세밀하게 꾸미고 싶을 때

🖌️ Plotly로 그래프 그리는 3가지 길

Plotly로 그래프를 그리는 방법은 크게 세 가지가 있었다
각자 장단점이 뚜렷해서 상황에 맞게 선택하면 될 것 같다

1. dict로 그리기 (로우 레벨)

  • 파이썬 딕셔너리로 그래프 구조를 직접 짜는 방식
  • 코드가 길고 복잡해서 실제로 쓸 일은 거의 없을 것 같지만
  • Plotly가 어떻게 동작하는지 내부 구조를 이해하는 데는 도움이 되었다

2. plotly.express로 그리기 (하이 레벨)

  • px라는 별칭으로 쓰는데, 정말 간결하고 편했다
  • Seaborn처럼 적은 코드로도 아주 예쁜 그래프가 나와서 놀랐다
  • 앞으로 데이터 탐색(EDA)할 때 주력으로 사용하게 될 것 같다
import plotly.express as px

# 단 몇 줄만으로 인터랙티브 산점도가 완성된다
tips = px.data.tips()
fig = px.scatter(tips, x='total_bill', y='tip', color='sex',
                 title='팁 데이터 산점도',
                 hover_data=['day', 'size'])
fig.show()

3. plotly.graph_objects로 그리기 (로우 레벨)

  • go라는 별칭으로 쓰며, 그래프의 모든 요소를 하나하나 제어할 수 있었다
  • 여러 그래프를 겹쳐 그리거나, 나만의 스타일로 커스터마이징할 때 강력한 힘을 발휘할 것 같다
  • 처음엔 좀 복잡하게 느껴졌지만, 익숙해지면 표현의 자유도가 엄청날 것 같다는 생각이 들었다

🖼️ Figure 객체: 데이터와 레이아웃의 조화

Plotly의 모든 그래프는 Figure라는 큰 틀 안에 담긴다는 것을 알게 됐다

  • data: 실제 점, 선, 막대 등을 그리는 데이터 부분
  • layout: 제목, 축 이름, 범례처럼 그래프를 꾸미는 부분

이 두 가지를 조합해서 하나의 완성된 그래프를 만든다는 개념이
Matplotlib의 Figure와 Axes 구조와 비슷하면서도 더 직관적으로 다가왔다


🚀 앞으로의 다짐

오늘은 Plotly의 기본적인 사용법과 철학을 맛보는 시간이었다

정적인 차트를 넘어 사용자와 소통하는 동적 시각화의 가능성을 보았다
앞으로는 더 다양한 종류의 차트를 그려보고
특히 graph_objects를 활용해 나만의 맞춤형 그래프를 만드는 연습을 더 해보려 한다

데이터에 생명을 불어넣는 시각화
Plotly와 함께라면 더 잘 해낼 수 있을 것 같다