首頁 >後端開發 >Python教學 >如何在 Matplotlib 中製作散點圖動畫以視覺化時變資料?

如何在 Matplotlib 中製作散點圖動畫以視覺化時變資料?

Mary-Kate Olsen
Mary-Kate Olsen原創
2024-11-07 00:21:02815瀏覽

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