128просмотров
10.3%от подписчиков
21 марта 2026 г.
Score: 141
Генерация диаграмм с pygraphviz: основы визуализации графов Иногда проще один раз увидеть, чем сто раз распечатать print(). Особенно когда дело касается связей: кто с кем соединен, в каком направлении идет поток данных, как устроена архитектура проекта. Для этого отлично подходит pygraphviz — оболочка над знаменитым Graphviz, позволяющая генерировать диаграммы прямо из Python. --- ### Установка pip install pygraphviz Важно: на некоторых системах сначала нужно установить сам Graphviz (через пакетный менеджер ОС). --- ### Простейший граф Создадим ориентированный граф и сохраним его как PNG: from pygraphviz import AGraph g = AGraph(directed=True) g.add_node("User")
g.add_node("API")
g.add_node("DB") g.add_edge("User", "API")
g.add_edge("API", "DB") g.layout(prog="dot") # алгоритм раскладки
g.draw("simple_graph.png") prog="dot" — классический и самый читаемый для иерархических структур (запросы сверху, база снизу). --- ### Стайлинг: делаем диаграмму понятной Граф без стиля — это просто клубок линий. Добавим цвета и формы, чтобы по диаграмме можно было ориентироваться за секунды: from pygraphviz import AGraph g = AGraph(directed=True, strict=True, rankdir="LR") # слева направо g.add_node("Client", shape="box", style="filled", fillcolor="#AED6F1")
g.add_node("Service", shape="ellipse", style="filled", fillcolor="#A9DFBF")
g.add_node("Cache", shape="diamond", style="filled", fillcolor="#F9E79F") g.add_edge("Client", "Service", label="HTTP")
g.add_edge("Service", "Cache", label="GET")
g.add_edge("Cache", "Service", label="HIT", color="green")
g.add_edge("Service", "Client", label="Response", color="blue") g.graph_attr.update(label="Request Flow", fontsize="20")
g.layout(prog="dot")
g.draw("styled_graph.png") Ключевые идеи:
- rankdir="LR" — направление слева направо (удобно для потоков).
- shape, fillcolor, style — визуальное кодирование типов узлов.
- label и color у ребер помогают понимать протоколы, типы взаимодействия и т.п. --- ### Быстрая визуализация структур из кода pygraphviz удобно использовать для генерации диаграмм по данным из программы: граф зависимостей модулей, цепочка этапов обработки данных, схема микросервисов. Достаточно обхода вашей структуры (словаря, списка связей, дерева) и вызова add_node / add_edge в цикле. --- pygraphviz хорош тем, что избавляет от ручного рисования схем в редакторах: диаграмма становится частью кода, обновляется автоматически и всегда соответствует реальности. Для начинающего питониста это отличный инструмент, чтобы увидеть свои структуры данных и архитектуру, а не только представлять их в голове.