Когда я создаю словарь узлов с их кортежами координат, как я могу добавить ребра от узла к узлу и поддерживать стабильность графика без каких-либо движений?
Я искал другие решения вокругдокументация по networkx и Google тоже.Я обнаружил, что использую функцию add_edges_from()
, которая создает путь от узла к узлу.Однако, при этом, это не будет в правильных координатах и будет в основном перемещаться.Я сделал сообщение в StackOverflow ( здесь ), чтобы использовать координаты узла и нарисовать график.Это то, что я хотел, но теперь мой компромисс в том, что я теряю свои преимущества.В моем ex.txt
я анализирую свои узлы и их координаты.После анализа моих узлов и координат, я смотрю, какой узел имеет ребро к другому узлу.
ex.txt файл:
3
a2a 5 0
##start
a0 1 2
##end
a1 9 2
3 5 4
a0-a2a
a0-3
a2a-1
3-1
a2a-3
файл python:
import re
import pandas as pd
import networkx as nx
import matplotlib.pyplot as plt
%matplotlib inline
def file_parsing(file_path):
cnt = 0
output_list = []
with open(file_path, 'r') as fp:
for line in fp:
cnt += 1
#checks for the room name and coordinates
if re.match('([^\s#]{1,10}) (\d+) (\d+)', line, re.MULTILINE):
output_list.append(line.strip().split(' '))
#checks for start
if line.startswith('##start'):
output_list.append(next(fp, '').strip().split())
#checks for start
if line.startswith('##end'):
output_list.append(next(fp, '').strip().split())
room_name = [item[0] for item in output_list]
x_coord = [int(item[1]) for item in output_list]
y_coord = [int(item[2]) for item in output_list]
x_y = list(zip(x_coord, y_coord))
pos_dict = dict(zip(room_name, x_y))
return pos_dict
room_pos_dict = file_parsing('ex.txt')
print(room_pos_dict)
G = nx.Graph()
G.add_nodes_from(room_pos_dict.keys())
nx.set_node_attributes(G, room_pos_dict, 'pos')
# nx.set_edge_attributes(G, room_pos_dict.values(), 'pos')
nx.draw_networkx(G, pos=nx.get_node_attributes(G, 'pos'))
Это был бы идеальный график, который я разобрал:
Но теперь они размещены случайным образом повсюду.
Теперь, из моего предыдущего поста, который я сделал (спасибо, Мухаммед Кашиф), Я получаю положение всех моих узлов, но не ребер:
Моя ожидаемая комбинация обоих: узлов с их положением и ребер, соединенных с каждым узлом.
Пожалуйста, потерпите меня, я пытаюсь изучить Python и networkx :).Заранее спасибо!