利用matplotlib绘制两点间线段组成的图形

2024-04-26 22:45:23 发布

您现在位置:Python中文网/ 问答频道 /正文

我在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)]

我想用这些边绘制一个图。这4个点的坐标如下:

a=[10-10]

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

下面是我写的函数:

def plot_current_图形(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)
plt.clf()

我希望看到一个所有边都连接4个点的图形,但是这个函数在一个单独的图形上逐个绘制边。 我怎样才能只得到一个图形同时绘制图形上的所有边? 我尝试在一个程序中使用这个函数,当边缘改变时,它会周期性地绘制新图形。在

谢谢!在


Tags: 函数in图形forlen定义roplot
1条回答
网友
1楼 · 发布于 2024-04-26 22:45:23

这可能会给你想要的:

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)

相关问题 更多 >