Matplotlib에서는 `figure` 내에서 zoom in과 zoom out 기능을 구현하기 위해 여러 가지 접근 방법을 사용할 수 있습니다. 기본적으로 Matplotlib의 인터랙티브 모드와 함께 `Axes` 객체의 한계를 변경하거나, GUI 백엔드에서 제공하는 확대/축소 도구를 활용합니다.
1. Matplotlib의 기본 도구 활용 (인터랙티브 모드)
Matplotlib의 GUI 인터페이스에서는 자동으로 zoom in/out 기능을 제공합니다. 이를 사용하려면 인터랙티브 모드를 활성화하면 됩니다.
(1) 기본 설정으로 GUI 확대/축소
import matplotlib.pyplot as plt
plt.ion() # 인터랙티브 모드 활성화
plt.plot([1, 2, 3, 4], [10, 20, 25, 30])
plt.title("기본 인터랙티브 모드의 확대/축소")
plt.show()
- 실행 후 그래프 상단의 확대/축소 아이콘(돋보기)을 사용해 zoom in/out이 가능합니다.
- 인터랙티브 모드는 GUI 백엔드(예: TkAgg, Qt5Agg)에서 지원합니다.
2. 프로그래밍 방식으로 Zoom 구현
(1) `set_xlim`과 `set_ylim`을 사용한 Zoom 설정
`Axes` 객체의 X, Y 축 범위를 수동으로 설정하여 특정 부분을 확대할 수 있습니다.
import matplotlib.pyplot as plt
# 데이터 생성
x = [1, 2, 3, 4, 5, 6]
y = [10, 20, 30, 40, 50, 60]
fig, ax = plt.subplots()
ax.plot(x, y)
# Zoom in: X축과 Y축 범위를 조정
ax.set_xlim(2, 4) # X축 범위
ax.set_ylim(20, 40) # Y축 범위
plt.title("Zoom In using set_xlim and set_ylim")
plt.show()
(2) 버튼을 활용한 동적 확대/축소
Matplotlib의 `mpl_connect` 이벤트를 사용하여 확대/축소를 동적으로 구현할 수 있습니다.
import matplotlib.pyplot as plt
# 데이터 생성
x = [1, 2, 3, 4, 5, 6]
y = [10, 20, 30, 40, 50, 60]
fig, ax = plt.subplots()
ax.plot(x, y)
# 확대/축소 함수
def zoom(event):
if event.button == 'up': # Zoom in
ax.set_xlim(ax.get_xlim()[0] * 0.9, ax.get_xlim()[1] * 0.9)
ax.set_ylim(ax.get_ylim()[0] * 0.9, ax.get_ylim()[1] * 0.9)
elif event.button == 'down': # Zoom out
ax.set_xlim(ax.get_xlim()[0] * 1.1, ax.get_xlim()[1] * 1.1)
ax.set_ylim(ax.get_ylim()[0] * 1.1, ax.get_ylim()[1] * 1.1)
fig.canvas.draw_idle() # 그래프 업데이트
# 마우스 휠 이벤트 연결
fig.canvas.mpl_connect('scroll_event', zoom)
plt.title("Mouse Wheel Zoom")
plt.show()
- 마우스 휠을 위로 스크롤하면 zoom in.
- 마우스 휠을 아래로 스크롤하면 zoom out.
3. 기타 고급 방법
(1) `panzoom` 플러그인 활용
Matplotlib의 `mpl_toolkits.axes_grid1` 라이브러리의 도구를 사용하여 확대/축소를 더 정교하게 제어할 수 있습니다.
pip install mpl_toolkits
(2) Bokeh 및 Plotly를 사용한 대안
Matplotlib의 인터랙티브 기능이 부족하다면 **Bokeh**나 **Plotly** 같은 시각화 라이브러리를 사용해 강력한 zoom 기능을 활용할 수 있습니다.
from bokeh.plotting import figure, show
p = figure(title="Zoom In/Out Example", tools="wheel_zoom,pan,reset")
p.line([1, 2, 3, 4, 5], [10, 20, 30, 40, 50], line_width=2)
show(p)
4. 다양한 방법으로 plot 활용
Matplotlib에서는 GUI 도구를 통한 간단한 확대/축소부터 `mpl_connect` 이벤트를 활용한 동적 zoom까지 구현할 수 있습니다. 고급 기능이 필요하다면 Bokeh나 Plotly 같은 대안 라이브러리도 고려할 수 있습니다.
'코딩연습' 카테고리의 다른 글
자기지도학습(SSL)의 모든 것: 레이블 없는 데이터로 AI 학습하기 (1) | 2024.11.22 |
---|---|
Claude API 사용하기, 방법, 사용 예제 정리 (1) | 2024.11.17 |
라이선스 인증 프로그램 (0) | 2024.11.13 |
Google Sheets를 사용한 라이선스 관리 및 console API 생성 방법 (2) | 2024.11.12 |
RAG(검색 증강 생성)? LLM 대규모 언어 모델의 한계를 넘어서다 (5) | 2024.11.05 |