Как построить график, состоящий из отрезков между двумя точками, используя matplotlib - PullRequest
0 голосов
/ 23 марта 2019

У меня есть ребра сети, определенные между 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 = [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 голосов
/ 23 марта 2019

Это может дать вам то, что вы ищете:

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)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...