networkx получить положение узлов - PullRequest
0 голосов
/ 25 июня 2018
import networkx as nx
%matplotlib inline
import matplotlib.pyplot as plt

G2=nx.DiGraph()
G2.add_node(900,pos=(0,0))
G2.add_node(901,pos=(1,0))
G2.add_node(902,pos=(0,1))
G2.add_node(903,pos=(1,1))
G2.add_node(904,pos=(0,-1))

nodePos = nx.circular_layout(G2)
print("nodePos : \n" , nodePos)

nx.draw_networkx(G2, with_labels = True)
plt.show()

Приведенный выше код создает график, показанный ниже с позициями узлов:

enter image description here

nodePos:

{900: массив ([1., 0.]), 901: массив ([0.30901699, 0.95105652]), 902: массив ([- 0.80901699, 0.58778525]), 903: массив ([- 0.80901699, -0.58778525]), 904:массив ([0.30901699, -0.95105652])}

Вопросы:

a) Узлу 900 присваивается местоположение 0, 0, но для этого узла значение x больше 0,8 ... Аналогично, 904 задается y как -1, но система координат нигде не показывает -1.

b) nx.circular_layout () должен возвращать расположение узлов, и это то, что я напечатал в nodePos,Но я не понимаю значения, напечатанные в nodePos.Почему я вижу десятичные значения и то же самое с отрицательными значениями.

c) Моя цель - получить правильное расположение узлов, чтобы я мог взять его и рисовать график на своем конце в Qt / Java и т. Д....

1 Ответ

0 голосов
/ 25 июня 2018

Вам необходимо добавить аргумент pos для графика nx.draw_networkx, например:

import networkx as nx
%matplotlib inline
import matplotlib.pyplot as plt

G2=nx.DiGraph()
G2.add_node(900,pos=(0,0))
G2.add_node(901,pos=(1,0))
G2.add_node(902,pos=(0,1))
G2.add_node(903,pos=(1,1))
G2.add_node(904,pos=(0,-1))

nodePos = nx.circular_layout(G2)
print("nodePos : \n" , nodePos)
#('nodePos : \n', {904: array([1.00000000e+00, 2.38418583e-08]),
# 900: array([0.30901696, 0.95105658]), 901: array([-0.80901709,  0.58778522]),
# 902: array([-0.80901698, -0.58778535]), 903: array([ 0.30901711, -0.95105647])})

nx.draw_networkx(G2, with_labels = True,pos=nodePos)
plt.show()

enter image description here

Вы можете прочитать документацию дляpos аргумент здесь , он говорит, что

pos (словарь, необязательно) - словарь с узлами в качестве ключей и позициями в качестве значений.Если не указано, будет рассчитано расположение пружины.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...