Matplotlib で散布図をアニメーション化して時変データを視覚化する方法

Mary-Kate Olsen
リリース: 2024-11-07 00:21:02
オリジナル
737 人が閲覧しました

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

Matplotlib で散布図をアニメーション化する

散布図は、2 つ以上の変数間の関係を視覚化するのに便利なツールです。データが時間の経過とともに変化する場合、散布図をアニメーション化して関係がどのように変化するかを確認すると便利です。

位置、サイズ、色の更新

アニメーション化するには散布図の場合は、アニメーションの各フレームでポイントの位置、サイズ、色を更新する必要があります。これは、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 引数はプロットを初期化するために 1 回呼び出され、更新関数はフレームごとに呼び出されます。

<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 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!