如何使用matplotlib绘制由两点之间的线段组成的图

时间:2019-03-23 01:57:10

标签: python matplotlib

我在4个点之间定义了网络边缘,如下所示: 边缘= [(2,5),(2,4),(2,3),(3,5),(3,4),(3,2),(4,5),(4,4) ,(4,2),(4,3),(5,4),(5,2),(5,3)]

我想使用这些边缘绘制图形。这四个点的坐标为:

a = [1 0 -1 0]

b = [0,1,0,-1]

这是我写的函数:

def plot_current_graph(a,b,边):

for i in range(0, len(a)):
    plt.plot(a,b,'ro')

xc = []
yc = []
for i in range(0, len(edges)):
    xc.append(a[edges[i][0]-2])
    xc.append(a[edges[i][1]-2])
    #print xc
    yc.append(b[edges[i][0]-2])
    yc.append(b[edges[i][1]-2])

for i in range(0, len(edges), 2):
    plt.plot(xc[i:i+2], yc[i:i+2], 'ro-')


plt.axis('equal')
plt.show()
plt.pause(1)
plt.clf()

我希望看到一个图形,其所有边都连接4个点,但是相反,此函数在单独的图形上一个接一个地绘制了一条边。 如何只绘制一个图形,同时绘制图形上的所有边? 我正在尝试在程序中使用此功能,该程序会在边缘变化时定期绘制新图形。

谢谢!

1 个答案:

答案 0 :(得分:0)

这可能会给您带来以下好处:

edges = [(2, 5), (2, 4), (2, 3),(3, 5),(3, 4),(3, 2),(4, 5),(4, 4),(4, 2),(4, 3),(5, 4),(5, 2),(5, 3)]
a = [1, 0, -1, 0]
b = [0, 1, 0, -1]

def plot_current_graph(a,b, edges):

    for i in range(0, len(a)):
        plt.plot(a,b,'ro')

    xc = []
    yc = []
    for i in range(0, len(edges)):
        xc.append(a[edges[i][0]-2])
        xc.append(a[edges[i][1]-2])
        #print xc
        yc.append(b[edges[i][0]-2])
        yc.append(b[edges[i][1]-2])

    for i in range(0, len(edges), 2):
        plt.plot(xc[i:i+2], yc[i:i+2], 'ro-')


        plt.axis('equal')
        plt.show()
        plt.pause(1)

plot_current_graph(a, b, edges)