Я пытаюсь использовать ego_graph
для рисования некоторых сетей, ориентированных на набор случайно выбранных узлов.Если я не установлю параметры distance
, то он правильно вернет график с шагом thisRadius
;однако, когда я определяю расстояние, результаты совершенно неверны и не имеют никакого смысла.
Как правильно использовать функцию distance
nx.ego_graph
?
В моем случае у меня есть различные веса на моих ребрах, но тот, который я хочуиспользовать сейчас - время обхода в минутах, которое называется timeWeight
.Допустим, я хочу подграф всех узлов в течение 30 минут моего начального узла.Я ожидал, что
nodeCenteredSubgraph = nx.ego_graph(thisNetwork, egoID, radius=30, distance='timeWeight')
вернет это, но вместо этого он вернет узлы, которые НАМНОГО дальше, чем 30 минут.Радиус действительно имеет некоторый эффект, потому что, если я уменьшу его до radius=1
, я получу меньший (но все еще огромный) подграф ... и, конечно, больше узлов, чем можно достичь за 1 минуту.На самом деле я должен был получить только эго в этом случае.
Если я установлю radius=0.1
или radius=0.01
или меньше, я всегда получаю одно и то же, и хотя он намного меньше, чем раньше, он все равно возвращает довольно большой график ... гораздо больше, чем можно достичь за меньшеечем минута (ничего).
Понимая, что ego_graph
использует single_source_dijkstra
в качестве своей базы, я попробовал эту функцию напрямую с
distances,paths = nx.single_source_dijkstra(thisNetwork, egoID, target=None, cutoff=10, weight='timeWeight')
, и он возвращает группу узлов свеса от 0,0 до 10,0 (все целые числа, хотя их не должно быть, если бы он действительно использовал timeWeight
), и они не имеют ничего общего со значениями timeWeight.
Из документации кажется, что я делаю этоверно, и я не могу найти ни одного примера использования параметра расстояния с ego_graph
, поэтому, надеюсь, кто-нибудь скажет мне, что я ошибся.