Python
 Computer >> コンピューター >  >> プログラミング >> Python

更新関数を使ってMatplotlibでNetworkXグラフをアニメーション化する方法

MatplotlibでNetworkXのグラフをアニメーション化するには、update関数(animate)を活用します。この記事では、FuncAnimationを使ってグラフにランダムなエッジを次々と追加していくアニメーションの作成方法を、具体的な手順とコード例とともに解説します。

実装の手順

  1. 図のサイズを設定し、サブプロット間および周囲のパディング(余白)を調整します。
  2. figure()メソッドを使って、新しい図を作成するか、既存の図をアクティブにします。
  3. エッジ・名前・グラフ属性を指定してグラフを初期化します。
  4. add_nodes_from()メソッドでグラフにノードを追加します。
  5. MatplotlibでグラフGを描画します。
  6. FuncAnimation()クラスを使用し、関数animateを繰り返し呼び出すことでアニメーションを作成します。
  7. animate関数は、現在の図をクリアした後、2つの乱数を生成し、そのノード間にエッジを描画します。
  8. 図を表示するには、show()メソッドを使用します。

コード例

from matplotlib import pyplot as plt, animation
import networkx as nx
import random

plt.rcParams["figure.figsize"] = [7.50, 3.50]
plt.rcParams["figure.autolayout"] = True

fig = plt.figure()

G = nx.DiGraph()
G.add_nodes_from([0, 1, 2, 3, 4])

nx.draw(G, with_labels=True)

def animate(frame):
    fig.clear()
    num1 = random.randint(0, 4)
    num2 = random.randint(0, 4)
    G.add_edges_from([(num1, num2)])
    nx.draw(G, with_labels=True)

ani = animation.FuncAnimation(fig, animate, frames=6, interval=1000, repeat=True)

plt.show()

コードのポイント

  • nx.DiGraph():有向グラフを作成しています。無向グラフにしたい場合はnx.Graph()に置き換えてください。
  • frames=6:animate関数が6回呼び出され、各フレームで1本ずつエッジが追加されます。
  • interval=1000:フレーム間の間隔は1000ミリ秒(1秒)です。値を小さくするとアニメーションが速くなります。
  • repeat=True:アニメーションが終了後、自動的に繰り返し再生されます。

出力結果

更新関数を使ってMatplotlibでNetworkXグラフをアニメーション化する方法

上記のコードを実行すると、ノード0〜4を持つ有向グラフに対して、1秒ごとにランダムな2つのノード間へエッジが追加されていく様子をアニメーションとして確認できます。fig.clear()によって毎フレーム描画内容をリセットしているため、最新のグラフ状態だけが表示される仕組みです。

  1. 【Python】Matplotlibで回転する3Dグラフをアニメーション化する方法

    Matplotlibで回転する3Dグラフを作成するには、Animationクラスを使用して関数を繰り返し呼び出します。この記事では、3Dサーフェスプロットをアニメーション化し、時間の経過とともに形状が変化する様子を可視化する手順を解説します。 実装の手順 メッシュグリッドの分割数(N)、1秒あたりのフレームレート(fps)、総フレーム数(frn)などの変数を初期化します。 曲線を描くための x、y、z の配列を作成します。 lambda関数を使って z 配列を生成する関数を定義します。 Animationクラスに関数を渡すために、前のフレームのプロットを削除し、新しい x、y、z 配列からサ

  2. Matplotlibでpcolormeshをアニメーション化する方法【コード例付き解説】

    Matplotlibでpcolormesh(擬似カラープロット)をアニメーション化する方法を、具体的な手順とサンプルコード付きで解説します。 アニメーション化の基本的な流れ pcolormeshをアニメーションさせるには、以下の手順に従います。 figureオブジェクトとサブプロットを作成する numpyを使ってx、y、tのデータポイントを生成する meshgrid関数で座標ベクトルから座標行列(X3、Y3、T3)を作成する pcolormesh()メソッドを使って、不規則な矩形グリッド上に擬似カラープロットを描画する カラーバーをfigureに追加する FuncAnimationクラスを使