Itinai.com it company office background blured chaos 50 v 41eae118 fe3f 43d0 8564 55d2ed4291fc 3

Graphify и NetworkX: быстро визуализировать структуру Python‑проекта

Itinai.com it company office background blured chaos 50 v 41eae118 fe3f 43d0 8564 55d2ed4291fc 3

Визуализация графов знаний: от статического изображения к интерактивному браузеру

Если вы уже успели запутаться в лабиринте узлов и ребер, то вы точно знаете, что без наглядных графиков разобраться в структуре проекта почти невозможно. Ниже – практический рецепт, который превратит ваши данные в читабельный граф: сначала получим статическую PNG‑картинку, а затем добавим интерактивный слой с pyvis. Всё без лишних «пушек», только рабочий код и проверенные ссылки.

Что нам понадобится

  • Python 3.8+
  • Библиотеки: networkx, matplotlib, pyvis, IPython (для Jupyter‑ноутбуков). Установить их можно одной командой:

pip install networkx matplotlib pyvis ipython

Шаг 1. Статический граф с matplotlib и networkx

Код ниже создаёт «красивый» граф, где:

  • Размер узла — его центральность (степень).
  • Цвет — принадлежность к сообществу (комьюнити).
  • Прозрачность — чтобы не «перегружать» глаз.

Обратите внимание на параметры k и seed в spring_layout – они стабилизируют расположение узлов.

plt.figure(figsize=(13, 9))
pos = nx.spring_layout(UG, k=0.7, seed=42)
nx.draw_networkx_edges(UG, pos, alpha=0.25)
nx.draw_networkx_nodes(
   UG, pos,
   node_color=[node_comm.get(n, 0) for n in UG.nodes],
   node_size=[300 + 4000 * deg.get(n, 0) for n in UG.nodes],
   cmap=plt.cm.tab20, alpha=0.9,
)
top = {n for n, _ in sorted(deg.items(), key=lambda x: -x[1])[:14]}
nx.draw_networkx_labels(UG, pos, {n: label(n) for n in top}, font_size=8)
plt.title("Graphify knowledge graph — size=centrality, color=community")
plt.axis("off"); plt.tight_layout()
plt.savefig("graph_static.png", dpi=130); plt.show()

Шаг 2. Интерактивный браузерный граф с pyvis

Для интерактивных задач (поиск соседей, просмотр атрибутов) pyvis генерирует HTML‑страницу, которую можно открыть в любой браузере.

Ключевые моменты:

  • Палитра цветов задаётся вручную – так гарантируем различие сообществ.
  • Размер узла учитывает степень, но добавляем небольшую базу (12 px) для читаемости.
  • В свойствах узла (title) выводим тип файла и путь – удобно при наведении.

from pyvis.network import Network
net = Network(height="650px", width="100%", bgcolor="#111", font_color="white",
            notebook=True, cdn_resources="in_line", directed=G.is_directed())
palette = ["#e6194B","#3cb44b","#4363d8","#f58231","#911eb4",
            "#42d4f4","#f032e6","#bfef45","#fabed4","#469990"]
for n, d in G.nodes(data=True):
    c = node_comm.get(n, 0)
    net.add_node(n, label=label(n), title=f"{d.get('file_type','?')} · {d.get('source_file','')}",
                 color=palette[c % len(palette)], size=12 + 60 * deg.get(n, 0))
for s, t, d in G.edges(data=True):
    net.add_edge(s, t, title=d.get("relation", ""))
net.save_graph("graph_interactive.html")
print("\\nSaved interactive graph -> graph_interactive.html")
from IPython.display import HTML, display
display(HTML(open("graph_interactive.html").read()))

Шаг 3. Автоматический запрос к графу

Если ваш проект уже упакован в CLI‑утилиту graphify, то выполнить запросы вроде «что связывает Auth с DB?» или «показать путь от AuthService к DatabasePool» можно одной строкой. Пример скрипта, который последовательно прогонит три типичных запроса и выведет первые 1200 символов ответа.

for cmd in (
   ["query", "what connects auth to the database?", "--graph", GRAPH_JSON],
   ["path", "AuthService", "DatabasePool", "--graph", GRAPH_JSON],
   ["explain", "RateLimiter", "--graph", GRAPH_JSON],
):
    print("\\n$ graphify " + " ".join(cmd))
    r = subprocess.run([sys.executable, "-m", "graphify", *cmd],
                       capture_output=True, text=True)
    print((r.stdout or r.stderr)[:1200])
print("\\nDone. Artifacts: graph_static.png, graph_interactive.html, and graphify-out/ (graph.json, GRAPH_REPORT.md).")

Полезные ссылки

Итоги

Следуя четырём простым шагам, вы получаете:

  • Чёткое статическое изображение для отчётов.
  • Интерактивный HTML‑файл для исследований «на лету».
  • Небольшой скрипт, который автоматизирует типовые запросы.
  • Минимальный набор зависимостей и понятный код, который можно копировать в свой проект.

Теперь ваш граф знаний будет не только «работать», но и «говорить» на понятном всем языке – визуально.

Запустите свой ИИ проект бесплатно

ИИ-агенты искусственный интеллект онлайн для бизнеса

Лучший ИИ онлайн