Skip to content
튜토리얼
Matplotlib
Matplotlib를 사용해 대화형 플롯 만드는 방법

Matplotlib를 사용해 대화형 플롯 만드는 방법

Python과 Matplotlib을 사용하여 기본 정적 플롯을 만드는 방법은 많은 가이드와 자료가 제공되어 있습니다. 그러나 대화형 플롯 - 그래프를 확대, 축소 및 실시간으로 업데이트할 수 있는 그래프를 만드는 것에 관해서는 정보 빈도가 높습니다.

본 완전한 가이드에서는 Matplotlib를 사용하여 대화형 플롯을 만드는 과정을 설명합니다. 단계별 예제를 통해 스스로 대화형 시각화를 만드는 데 필요한 모든 기술을 습득할 수 있도록 지원하겠습니다.

Matplotlib에서 대화형 플롯 시작하기

시작하기 전에 대화형 플롯이 무엇인지 이해하는 것이 중요합니다. 정적 그림과 달리, 대화형 그림을 사용하면 사용자가 데이터와 상호작용할 수 있습니다. 이는 그래프를 확대, 축소하거나 위젯 상호작용에 대응하여 그래프를 업데이트하는 것을 의미할 수 있습니다. 실시간 입력 데이터에 따라 업데이트되는 동적 그래프를 만들 수도 있습니다.

Matplotlib에서 대화형 모드를 활성화하려면 대화형 모드를 지원하는 특정 백엔드를 활용해야 합니다. Matplotlib의 기본 모드는 비대화형이며 모든 플롯은 정적입니다. 대화형 플롯을 만드려면 'notebook' 또는 'widget'과 같은 다른 백엔드로 전환해야 합니다.

Jupyter 노트북에서 %matplotlib notebook 매직(magic) 명령을 사용하여 노트북 백엔드로 전환하고 대화형 플롯을 만들 수 있습니다. 이는 대화형 플롯을 만드는 핵심적인 첫 단계입니다.

첫 번째 대화형 플롯 만들기

이제 무대를 설정해보았으니 첫 번째 대화형 플롯을 만들어봅시다. 간단한 산점도를 시작점으로 사용하여 시작하겠습니다.

%matplotlib notebook
import matplotlib.pyplot as plt
import numpy as np
 
# 간단한 산점도 생성
fig, ax = plt.subplots()
x, y = np.random.rand(2, 200)
scatter = ax.scatter(x, y)
 
plt.show()

위 코드를 Jupyter 노트북에서 실행하면 플롯이 대화형으로 나타납니다. 그래프 하단의 도구 모음을 사용하여 그래프를 확대/축소할 수 있습니다.

대화형 플롯과 위젯 결합하기

대화형 플롯의 진정한 힘은 위젯과 결합할 때 드러납니다. 위젯을 사용하면 사용자가 데이터와 시각화의 측면을 제어하여 시각화와 상호작용할 수 있습니다.

사인파 그래프를 생성하고 슬라이더를 사용하여 파장 수를 제어하는 예제를 살펴봅시다.

from ipywidgets import interact
import ipywidgets as widgets
 
def plot_func(freq):
    plt.figure()
    x = np.linspace(0, 2*np.pi, 400)
    y = np.sin(x * freq)
    plt.plot(x, y)

plt.show()

위의 코드 스니펫에서, 우리는 먼저 특정 주기에 대한 사인 곡선을 생성하는 함수 plot_func을 정의합니다. 그리고나서 우리는 ipywidgets에서 제공하는 interact 함수를 사용하여 주파수를 조절하는 슬라이더를 생성합니다. 이 코드를 실행하면, 플롯 위에 슬라이더가 나타나고 슬라이더를 조정함에 따라 사인 곡선의 주파수가 실시간으로 변경됩니다 .

.

이러한 예시들은 Matplotlib으로 상호작용적인 플롯을 만드는 방법에 대한 소개를 제공합니다. 다음 섹션에서는 보다 복잡한 예시들을 탐구하고 상호작용적인 플롯의 기능과 기능들을 더 자세히 탐구할 것입니다.

우리가 남겨둔 곳에서 계속 진행하면, Matplotlib의 상호작용 능력의 매력적인 세계를 더 깊이 탐색해 봅시다.

위젯을 이용한 인터액션 향상

위젯들은 슬라이더에만 국한되지 않으며, 체크박스, 드롭다운, 텍스트 입력 등을 사용할 수 있습니다. 각각의 위젯 형식은 다른 유형의 데이터 조작과 연결될 수 있습니다. 예를 들어, 드롭다운은 플롯에서 어떤 데이터 집합을 선택할지 선택할 수 있습니다. 위젯을 사용하면 진정으로 상호작용적이고 다양한 시각화를 만들 수 있습니다.

동적으로 플롯 업데이트하기

사용자 상호작용에 따라 동적으로 플롯을 업데이트하려면 Matplotlib에서 이벤트 개념을 이해해야 합니다. 이벤트는 사용자로부터의 입력입니다. 마우스 클릭, 키를 누르기, 또는 플롯 위에서 마우스를 움직이는 것과 같은 것들입니다. 이러한 이벤트를 캡처하고 처리함으로써 사용자 입력에 대응하여 플롯을 업데이트할 수 있습니다.

다음은 새로운 데이터 점을 산점도 플롯에 추가하기 위해 버튼 누름 이벤트를 사용하는 방법을 보여주는 예시입니다:

from matplotlib.widgets import Button
 
fig, ax = plt.subplots()
scatter = ax.scatter(np.random.rand(10), np.random.rand(10))
 
button_ax = plt.axes([0.7, 0.05, 0.1, 0.075])
button = Button(button_ax, 'Add')
 
def add_point(event):
    new_point = np.random.rand(2)
    scatter.set_offsets(np.concatenate([scatter.get_offsets(), [new_point]]))
    plt.draw()
 
button.on_clicked(add_point)
 
plt.show()

이 코드에서, 우리는 산점도 플롯과 버튼을 만들고 있습니다. 버튼을 클릭하면, add_point 함수가 호출되고, 이 함수는 산점도 플롯에 새로운 랜덤 데이터 점을 추가합니다.

상호작용적인 3D 플롯

Matplotlib은 또한 상호작용적인 3D 플롯을 만들 수 있습니다. 이를 통해 플롯을 회전하고 확대/축소하여 데이터를 다른 각도에서 검사할 수 있습니다. 다음은 3D 산점도 플롯의 예시입니다:

from mpl_toolkits.mplot3d import Axes3D
 
fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')
 
x, y, z = np.random.rand(3, 100)
ax.scatter(x, y, z)
 
plt.show()

이 그림에서는 마우스를 사용하여 3D 공간에서 그림을 드래그하고 회전하고, 스크롤 휠을 사용하여 확대 및 축소할 수 있습니다.

이러한 기술을 사용하여 Matplotlib에서 다양한 대화형 플롯을 만들 수 있습니다. 대화형 플롯은 데이터 분석 및 시각화에 대한 강력한 도구이며 데이터를 더 철저하고 직관적으로 탐색할 수 있습니다.

Matplotlib 대신에 PyGWalker로 데이터 시각화

pandas 데이터프레임을 시각화하기 위해 Matplotlib을 사용하는 것 외에도, 다른 대안이 있습니다. PyGWalker (opens in a new tab)는 Open Source python 라이브러리로, 데이터 시각화를 쉽게 만들어줍니다.

PyGWalker for Data visualization (opens in a new tab)

Python 코딩으로 복잡한 처리를 완료할 필요 없이, 데이터를 가져와 변수를 끌어서 놓기만 하면 모든 종류의 데이터 시각화를 생성할 수 있습니다! 작동에 대한 빠른 데모 비디오가 있습니다.


Jupyter 노트북에서 PyGWalker를 사용하는 방법은 다음과 같습니다.

pip install pygwalker
import pygwalker as pyg
gwalker = pyg.walk(df)

또는 Kaggle 노트북 / Google Colab에서 시도해 볼 수 있습니다.

Kaggle 노트북에서 PyGWalker 실행 (opens in a new tab)Google Colab에서 PyGWalker 실행 (opens in a new tab)PyGWalker에 ⭐️ GitHub 주기 (opens in a new tab)
Kaggle 노트북에서 PyGWalker 실행 (opens in a new tab)Google Colab에서 PyGWalker 실행 (opens in a new tab)Run PyGWalker in Google Colab (opens in a new tab)

PyGWalker는 Open Source 커뮤니티의 지원을 받아 만들어졌습니다. PyGWalker GitHub (opens in a new tab)를 확인하고 별점을 주지 않으세요!

FAQ

  1. 대화형 그림이란 무엇입니까?
    대화형 그림은 사용자가 상호 작용할 수 있는 그래프입니다. 사용자는 확대 및 축소, 그래프 이동 및 구현된 기능에 따라 실시간으로 업데이트할 수 있습니다.

  2. 내 Matplotlib 그림을 대화형으로 만들 수 있나요?
    Matplotlib 그림을 대화형으로 만들려면 'notebook' 또는 'widget'와 같은 대화형 백엔드를 사용할 수 있습니다. Jupyter notebook에서 %matplotlib notebook 매직 명령을 사용하여 대화형 모드를 활성화할 수 있습니다.

  3. Matplotlib 그림과 함께 위젯을 사용하여 상호 작용할 수 있나요?
    예, Matplotlib과 ipywidgets를 함께 사용하여 슬라이더, 버튼, 확인란 등을 포함하여 다양한 대화형 기능을 만들 수 있습니다. 이러한 기능은 데이터 또는 플롯의 모양을 실시간으로 수정할 수 있습니다. 이 마크다운 파일은 다음과 같습니다: