🎨 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와 함께라면 더 잘 해낼 수 있을 것 같다