У вас есть две проблемы, которые следует рассматривать отдельно: визуализация и интерактивность.
Визуализация:
В NetworkX есть несколько инструментов для эффективной визуализации иерархических графиков. Они используют библиотеку Graphviz и интерфейс pygraphviz / pydot . Вот пример:
import networkx as nx
# Create the hierarchical graph (DAG)
G = nx.fast_gnp_random_graph(70, 0.02)
G.remove_edges_from([(x, y) for (x, y) in G.edges if x > y])
G = nx.subgraph(G, max(nx.connected_components(G), key=lambda x: len(x)))
# Draw it with default function
nx.draw(G, node_size=50)
# Draw it with graphviz_layout
nx.draw(G, node_size=50, pos=nx.nx_agraph.graphviz_layout(G, prog='dot'))
Если вы хотите визуализировать свой график с помощью самого Graphviz, вы можете преобразовать его в DOT-файл и использовать всю мощь Graphviz позже.
Вы также можете использовать библиотеки Javascript, такие как Bokeh или D3.js , чтобы рисовать графики NetworkX чуть более интерактивно (вы можете интерактивно выбирать узлы, выделять ребра и некоторые другие функции в этих библиотеках).
Интерактивность:
Эта проблема гораздо сложнее, чем проблема визуализации. Python не имеет стабильных популярных библиотек / программ, которые позволяют вам управлять графиком в интерактивном графическом интерфейсе. Для интерактивности требуется очень сложное программное обеспечение, а в Python его просто нет.
Наиболее подходящее программное обеспечение для вас:
- Gephi (у него нет визуализации по умолчанию для иерархическойграфики, но вы можете скачать плагин, который позволит вам это сделать).
- Cytoscape - возможно, он может подойти вам немного больше, чем Gephi.
- Wolfram Mathematica - хорошо, но стоит денег.