Как изменить размер линии края в NetowrkX Graph - PullRequest
0 голосов
/ 09 февраля 2019

У меня есть это изображение дерева сети, и я просто хочу сделать линию между каждым узлом меньше, потому что если у меня огромная сеть, линия будет слишком большой и сделает другие узлы меньше в тексте.

PS: я использую словарь для графика

https://imgur.com/a/nxVvPDX

G = nx.Graph(graphDict)
plt.figure(figsize=(100, 100))
pos = nx.fruchterman_reingold_layout(G, k=0.3, scale=50, seed=101)
nx.draw(G, pos=pos, with_labels=True, font_size=10, font_weight='bold', 
        font_color='black', node_size=0,edge_color='lightgrey', width=2)
plt.savefig("Topologie.pdf")
plt.show()

1 Ответ

0 голосов
/ 10 февраля 2019

Размер краев имеет 2 концептуально разных аспекта - ширина и длина .Ширина настраивается и может быть легко установлена ​​для каждого ребра, а длина определяется позиционированием узлов.

Для изменения ширины ребер вызовите draw_networkx_edges и используйте аргумент 'width', который принимает либо float (для постоянного размера ребра)), или массив с плавающей точкой.

Изменение длины ребер может быть сделано путем изменения макета, установленного аргументом 'pos'.Компоновка определяет, где будет располагаться каждый узел.

Поскольку у вас есть дерево, разумным выбором будет использование позиционирования "точка" следующим образом:

import networkx as nx
import matplotlib.pyplot as plt

T = nx.DiGraph()
T.add_edges_from([(0, 1), (0, 2), (1, 3), (1, 4), (2, 5), (2, 6)])
pos = nx.nx_pydot.pydot_layout(T, prog='dot')
nx.draw_networkx(T, pos=pos, arrows= True)
plt.show()

В случае, если вы выбрали 'Нарочно fruchterman_reingold_layout '(он же spring_layout), вы можете поиграть с аргументом' k ', чтобы установить правильное расстояние между узлами.Согласно документации:

k: float (по умолчанию = None) Оптимальное расстояние между узлами.Если None, расстояние устанавливается равным 1 / sqrt (n), где n - количество узлов.Увеличьте это значение для перемещения узлов дальше друг от друга.

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