1

ポイント (ノード) のペア間に線 (エッジ) を描く必要があるネットワーク プロジェクトに取り組んでいます。現在、これには matplotlib.pyplot を使用していますが、問題は pyplot.plot(x, y) が (x[0], y[0]) から始まり、(x[1], y[1 ]) など。
ノードの接続用に別のタプルのリストがあります:
edge=[(0,1), (0,2), (3,2), (2,1)...(m, n)]、個別のノードのインデックスを参照します。問題は、matplotlib.animation でアニメーション化する必要があることです。

ノード間に線を追加するだけで (静止画像)、ax.add_line(Line2D([x1, x2], [y1, y2])) を使用していましたが、このメソッドをアニメーションで動作させる方法がわかりません。 FuncAnimation()。

いくつかのダミーコード:

import matplotlib.pyplot as plt

edges = [(0,1), (2,3), (3,0), (2,1)]

x = [-5, 0, 5, 0]
y = [0, 5, 0, -5]

lx = []
ly = []
for edge in edges:
    lx.append(x[edge[0]])
    lx.append(x[edge[1]])
    ly.append(y[edge[0]])
    ly.append(y[edge[1]])

plt.figure()
plt.plot(x, y, 'ro')
plt.plot(lx, ly, '-', color='#000000')
plt.show()

(この画像と下の次の例)

代わりに次を使用する場合:

import matplotlib.pyplot as plt
from pylab import Line2D, gca

edges = [(0,1), (2,3), (3,0), (2,1)]

x = [-5, 0, 5, 0]
y = [0, 5, 0, -5]

plt.figure()
ax = gca()
for edge in edges:
    ax.add_line(Line2D([x[edge[0]], x[edge[1]]], [y[edge[0]], y[edge[1]]], color='#000000'))

ax.plot(x, y, 'ro')
plt.show()

それはすべて私が必要とする方法で機能します: .
残念ながら、これはアニメーション中は不可能です (私の知る限り)。次に必要なのは、ノードの個々のペア間に線をプロットする方法です。

問題の定式化が非常に悪いことはわかっていますが、誰かが理解し、助けてくれることを願っています。

ありがとうございました!

4

1 に答える 1

1
>>> edges=[(0,1), (0,2), (3,2), (2,1)]
>>> 
>>> xx = [x[0] for x in edges]
[0, 0, 3, 2]
>>> yy = [x[1] for x in edges]
[1, 2, 2, 1]
>>> line, = ax.plot(xx, yy, 'ro-')

次に、これをフィードしてplot、結果をアニメーション化します。一例を挙げます(たくさんあります)。

于 2013-07-17T12:01:09.053 に答える