Недавно библиотека визуализации графиков `egui_graphs`, написанная на rust и работающая на базе `egui` для пользовательского интерфейса и `petgraph` в качестве серверной части `graph`, вышла в версии 0.3.0. Чтобы отпраздновать эту веху, я хотел бы продемонстрировать, насколько просто визуализировать граф и добавить интерактивности с помощью этого инструмента.
Шаг 1: Настройка структуры `InteractiveApp`.
Сначала давайте определим структуру `InteractiveApp`, которая будет содержать граф.
Шаг 2: Реализация функции `new()`.
Далее давайте реализуем функцию `new()` для структуры `BasicApp`.
Здесь мы вызываем функцию `generate_graph()`. Допустим, нам нужно 30 узлов и 60 ребер.
Шаг 3: Функция случайного графа.
Теперь мы создаем функцию generate_graph.
Шаг 4: Реализация функции update().
Теперь давайте реализуем функцию `update()` для нашего `Interactiveapp`. Эта функция создает виджет `egui_graphs::GraphView`, предоставляющий изменяемую ссылку на наш граф, и добавляет его в `egui::CentralPanel`, используя функцию `ui.add()` для добавления виджетов.
Здесь мы инициализируем `GraphView` с помощью функции конструктора `with_interactions` и передаем туда экземпляр `SettingsInteraction` со свойствами взаимодействия. По сути, это место, которое добавляет все взаимодействия в виджет.
Шаг 5: Запуск приложения.
Наконец, запустите приложение, используя функцию `run_native()` с указанными собственными параметрами и `InteractiveApp`.
Как только приложение будет запущено, мы увидим полностью интерактивный график с возможностью перетаскивания и выбора узлов.
Полный код для этого примера:
Статья на list-site.