>  기사  >  백엔드 개발  >  시간에 따라 변하는 데이터를 시각화하기 위해 Matplotlib에서 산점도에 애니메이션을 적용하는 방법은 무엇입니까?

시간에 따라 변하는 데이터를 시각화하기 위해 Matplotlib에서 산점도에 애니메이션을 적용하는 방법은 무엇입니까?

Mary-Kate Olsen
Mary-Kate Olsen원래의
2024-11-07 00:21:02737검색

How to Animate Scatter Plots in Matplotlib to Visualize Time-Varying Data?

Matplotlib에서 산점도 애니메이션

산점도는 둘 이상의 변수 간의 관계를 시각화하는 데 유용한 도구입니다. 시간이 지남에 따라 데이터가 변경되면 산점도에 애니메이션을 적용하여 관계가 어떻게 전개되는지 확인하는 것이 도움이 될 수 있습니다.

위치, 크기 및 색상 업데이트

애니메이션을 적용하려면 분산형 차트를 사용하려면 애니메이션의 각 프레임에서 점의 위치, 크기 또는 색상을 업데이트해야 합니다. 이는 각각 Scatter 객체의 set_offsets, set_sizes 및 set_array 메소드를 사용하여 수행할 수 있습니다.

<code class="python">scat = plt.scatter(x, y, c=c)

# Update position
scat.set_offsets(new_xy)

# Update size
scat.set_sizes(new_sizes)

# Update color
scat.set_array(new_colors)</code>

FuncAnimation 사용

matplotlib의 FuncAnimation 클래스. 애니메이션 모듈을 사용하면 애니메이션의 각 프레임에서 산점도를 자동으로 업데이트할 수 있습니다. init_func 인수는 플롯을 초기화하기 위해 한 번 호출되고 업데이트 함수는 각 프레임에서 호출됩니다.

<code class="python">import matplotlib.animation as animation

def update(i):
    # Update data
    x, y, c = get_data(i)

    # Update plot
    scat.set_offsets(x, y)
    scat.set_array(c)

    return scat,

ani = animation.FuncAnimation(fig, update, interval=5)
plt.show()</code>

다음 예는 점들이 무작위로 움직이고 시간에 따라 색상이 변하는 산점도:

<code class="python">import numpy as np
import matplotlib.pyplot as plt
import matplotlib.animation as animation

# Create random data
num_points = 50
xy = (np.random.rand(2, num_points) - 0.5) * 10
c = np.random.rand(num_points)

# Setup figure and axes
fig, ax = plt.subplots()
scat = ax.scatter(xy[0], xy[1], c=c, s=30)

# Define animation update function
def update(i):
    # Update data
    xy += np.random.rand(2, num_points) * 0.02
    c = np.random.rand(num_points)

    # Update plot
    scat.set_offsets(xy)
    scat.set_array(c)

    return scat,

# Create animation
ani = animation.FuncAnimation(fig, update, interval=10)
plt.show()</code>

이 애니메이션은 무작위로 움직이고 시간에 따라 색상이 변하는 50개 점의 산점도를 보여줍니다.

위 내용은 시간에 따라 변하는 데이터를 시각화하기 위해 Matplotlib에서 산점도에 애니메이션을 적용하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.