我正在开展一个网络项目,我需要在点(节点)对之间绘制线条(边)。目前我正在使用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])),但我无法弄清楚如何让这个方法起作用with animation.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)。我需要的是一种在各个节点对之间绘制线条的方法。
非常糟糕的问题表述,我知道,但我希望有人理解并能够提供帮助。
谢谢!
答案 0 :(得分:0)
>>> 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(有很多)。