1

我正在做一个网络项目,我需要在成对的点(节点)之间绘制线(边)。目前我为此使用 matplotlib.pyplot,但问题是 pyplot.plot(x, y) 从 (x[0], y[0]) 开始,然后继续到 (x[1], y[1 ]) 等
我有一个单独的元组列表用于节点的连接:
edges=[(0,1), (0,2), (3,2), (2,1)...(m, n)],它指的是单独节点的索引。问题是我需要用 matplotlib.animation 来制作动画。

为了在节点之间添加线条(静态图片),我使用的是 ax.add_line(Line2D([x1, x2], [y1, y2])),但我不知道如何让这种方法与动画一起使用。函数动画()。

一些虚拟代码:

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()

这一切都按我需要的方式工作: 示例
不幸的是,在动画期间这是不可能的(afaik)。我需要的是一种在单个节点对之间绘制线的方法。

我知道非常糟糕的问题表述,但我希望有人理解并能够提供帮助。

谢谢!

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 回答