我正在一个网络项目中,需要在成对的点(节点)之间绘制线(边)。目前,我正在为此使用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])),但我不知道如何使此方法与动画一起使用。 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()
一切都按照我需要的方式工作:
Examples。
不幸的是,这在动画期间是不可能的(afaik)。然后,我需要的是一种在各个节点对之间绘制线的方法。
我知道问题表达很糟糕,但我希望有人能够理解并能够提供帮助。
谢谢!
最佳答案
>>> 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
并为结果设置动画。这是one example(有很多)。