Как нарисовать удобочитаемые, желательно интерактивные, сетевые графики с помощью Python? - PullRequest
0 голосов
/ 17 сентября 2018

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

Проблема в том, что я не могу найти способ достаточно хорошо визуализировать график на моем экране.Пока что объединение networkx с matlib.pyplot позволило добиться лучших результатов, но это все еще кажется довольно случайным и хаотичным, теги трудно читать, узлы располагаются друг над другом и т. Д. '.Также желательно иметь возможность взаимодействовать с графиком - перемещать узлы по кругу, наводить курсор на узлы / ребра для получения дополнительной информации, возможно, увеличивать или даже кластеризовать вместе узлы, чтобы при нажатии на кластер вы могли видеть, какие узлы составляюткластер.

Поскольку анализ сетевых данных и добавление узлов и ребер к графику будет утомительным для вас, я добавляю сюда только соответствующую часть (часть, которая фактически показывает построенный мной график):

pos = nx.spring_layout(Graph, scale=2)
edge_labels = nx.get_edge_attributes(Graph, "Protocol")
nx.draw(Graph,pos, with_labels=True, node_size=600, font_size=8, font_weight='bold')
nx.draw_networkx_edge_labels(Graph, pos, edge_labels=edge_labels, font_size=8)
plt.show()

(я импортировал сети как nx и matplotlib.pyplot как plt)

Я также пробовал graphviz, ploty и bokeh, но не смог заставить их работать, и после устранения неполадок в Google получилСоздается впечатление, что в любом случае они не решат мою проблему, и я также попробовал AdjustText - но я никак не мог вписать его в мой код (не могу найти, как получить текстовый атрибут моего графика) и Holoviews - ноон отказывается показывать изображение независимо от того, что я пытаюсь (даже если я копирую и вставляю примеры с их сайта - любой Python скажетЕсли «% opts ...» является недопустимым синтаксисом, или если я попытаюсь изменить параметры каким-либо другим способом, код будет работать до конца и ничего не отображается на экране.

Это графиквыглядит так: This is what the graph looks like

Я нахожу много частичных решений в Интернете, поэтому ни одно из них не работает, у кого-нибудь есть всеобъемлющее решение?

...