Plotly 인터렉티브 드롭다운 실습 - 동적 데이터 시각화
Plotly 인터렉티브 드롭다운 실습
공식 문서: https://plotly.com/python/dropdowns/
📊 개요
Plotly의 updatemenus 기능을 활용하여 사용자와 상호작용하는 인터렉티브 차트를 구현하는 방법을 다룸.
📁 파일
- plotly_dropdown_practice.py - 드롭다운 실습 코드
🔑 핵심 메서드
Plotly 드롭다운은 다음 세 가지 메서드를 통해 차트를 업데이트함.

1. Restyle (method="restyle")
- 기능: 데이터 속성 또는 Trace 속성을 변경함.
- 예시:
- 특정 데이터 계열만 표시/숨김 (
visible속성 제어) - 차트 타입 변경 (Scatter ↔ Bar)
- 마커 색상, 라인 스타일 변경
- 특정 데이터 계열만 표시/숨김 (
2. Relayout (method="relayout")
- 기능: 차트의 레이아웃 속성을 변경함.
- 예시:
- 축 스케일 변경 (Linear ↔ Log)
- 차트 제목, 배경색, 테마 변경
- 주석(Annotation) 표시/숨김
3. Update (method="update")
- 기능:
restyle과relayout을 동시에 실행함. - 예시:
- 년도별 데이터 변경 시, 차트 데이터(x, y)와 차트 제목(title)을 동시에 업데이트
- 복잡한 대시보드 인터랙션 구현
💻 구현 예제
기본 구조
updatemenus = [
dict(
type="dropdown",
buttons=list([
dict(label="Option 1",
method="restyle",
args=[{"visible": [True, False]}]),
dict(label="Option 2",
method="restyle",
args=[{"visible": [False, True]}]),
]),
)
]
fig.update_layout(updatemenus=updatemenus)
🧬 드롭다운 구조 시각화

스타일링 옵션 (pad, x, y)
드롭다운의 위치와 여백을 세밀하게 조정할 수 있음.
dict(
direction="down",
pad={"r": 10, "t": 10}, # 패딩
x=0.1, # x 위치 (0~1)
xanchor="left",
y=1.1, # y 위치 (1.0 이상이면 차트 상단)
yanchor="top"
)
🚀 실행 결과

스크립트를 실행하면 세 가지 예제가 순차적으로 표시됨:
- 데이터 선택: 주식 데이터를
visible속성으로 제어하여 선택적으로 표시함. - 레이아웃 변경: Y축 스케일을 Linear와 Log로 전환함.
- 복합 기능: Gapminder 데이터를 사용하여 년도별 데이터 변화와 차트 타입 변경을 동시에 수행하는 고급 인터랙션을 보여줌.
💡 팁
args리스트는 Trace의 인덱스와 매핑됨.{"visible": [True, False]}는 첫 번째 Trace는 보이고, 두 번째는 숨기라는 의미임.- 여러 개의 드롭다운을 배치할 때는
x,y좌표를 사용하여 겹치지 않게 정렬하는 것이 중요함. update메서드는 가장 강력하지만, 인자 구조가 복잡할 수 있으므로 주의가 필요함.
Comments