LINUX.ORG.RU

Visual Graph Editor 2 — кроссплатформенный редактор графов

 , , , ,


4

3

Visual Graph Editor 2 это легкий кроссплатформенный визуальный редактор графов на Qt, предназначен для быстрого и удобного создания, редактирования и сохранения графов и анализа проблем, связанных с графами.

Предоставляет возможность изменить граф в трех основных плоскостях (сверху, спереди, сбоку) и просмотреть его в трехмерном режиме.

Для анализа представлены методы для расширения функциональности программы через JavaScript-подобный язык и RPC (передача данных через XML по протоколу HTTP).

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

P.S. На сайте имеется архив со скомпилированной версией под Windows, где есть переводы на 3 языка (английский, русский, украинский), примеры использования скриптов для анализа графов при помощи расширенного языка QtScript совместно с VGE2 (Visual Graph Editor 2) API. Также, там же, можно обнаружить пример (пока не полностью отлажен) использования RPC из браузера.

Из планов следует отметить отказ от существующего механизма RPC в сторону SOAP, JSON-RPC 2.0 и JSON-WSP. Расширения API для скриптов. Интеграция редактора и отладчика скриптов в редактор. Более мягкая интеграция с системной темой OS/DE — разные варианты оформления GUI под Windows, Linux/BSD/Solaris (GTK/GNOME theme, Qt/KDE theme) и Mac OS X.

>>> Screenshot из-под Debian GNU/Linux

>>> Подробности

Выглядит любопытно, надо потрогать.

buddhist ★★★★★ ()
Ответ на: комментарий от basp

Да, было такое дело. Сначала все началось просто из интереса, для себя, как научить правильно бегать ботов в Half-Life 2. У тут понеслась.

Void-995 ()
Ответ на: комментарий от basp

Если быть точным, то потом это планировалось как робота на диплом бакалавра.

Void-995 ()

Сохранять рисунок в какой-нибудь TeX-совместимый формат умеет? Было бы полезно...

DeXPeriX ()

что будет если загрузить 800 000 вершин и 4 000 000 ребер?

anonymous ()

RDF?

а оно умеет работать с rdf? импортировать граф данных и визуализировать его

anonymous ()
Ответ на: комментарий от DeXPeriX

Было бы интересно услышать пример использования в порядке действий и конечное использование документа, если нужно - можно сделать. Также добавить GraphML, DOT, и т.д. тоже можно, был бы интерес у пользователей.

Void-995 ()
Ответ на: комментарий от anonymous

Не пробовал, на оптимизацию роботы с особо большими данными мало времени тогда уделил. Надо будет этому выделить отдельное внимание.

Void-995 ()
Ответ на: комментарий от Void-995

Хочу получать на выходе что-то такое: http://habrahabr.ru/post/81751/ Но делать это визуально. Ещё б хорош был бы выбор: tikz, pstricks или стандартный picture. Использовать - в научных статьях. Теорию графов можно много куда прикрутить

DeXPeriX ()
Ответ на: комментарий от Solace

Судя по всему — из глубин хохляндии. Из-за ошибки, статус украинца не заслужил. Извините, Ваша правда — *работы. На русском говорю и пишу крайне редко. Даже не заметил.

Void-995 ()
Ответ на: комментарий от DeXPeriX

К подобному хочу стремиться. Пока инструмент подходит только для анализа графов. Первоначальной задачей было поиск путей в графах и расширяемость, что и было на данном этапе достигнуто.

Void-995 ()

А какие форматы хранения оно вообще умеет? Что-т не найду нигде.

proofit404 ()

Это всё очень мило, но trunk не собирается (нет GLUquadric), тарбола с исходниками нет, документации нет, readme нет и вообще населена роботами.

KblCb ★★★★★ ()

Скачал и посмотрел. Возникли вопросы:

  • Как перетащить вершину на другое место?
  • Как выбрать и удалить ребро?
  • Как менять размер вершины?
  • Как добавить название для вершины/ребра?
  • Почему нельзя просто просто соединять вершины через drag?
  • Где zoom по прокрутке колесика мышки?
  • Где undo/redo для действий?
  • Где copy/paste для выбранных вершин/ребер?

Пока не очень полезная штука как редактор графов, хотя для чего нужны скрипты я пока не очень понял. Впрочем как и запускать эти скрипты.

Вот неплохой редактор графов в качестве примера: yEd

kamre ★★★ ()

Нет тарбола - нет ебилдов, а нет ебилдов - нет цели...

anonymous ()
Ответ на: комментарий от kamre
  • Добавить вершину - LMB;
  • Выделить вершину - RMB;
  • Удалить вершину можно выделив ее и только ее одну. Сделать это можно как из панели, так и из меню, так и комбинацией клавиш.
  • Соединять вершины (добавить ребро), так как и удалять соединения (удалить ребро), можно выбрав две точки. Две точки это максимум который удастся выделить;
  • Снять выделение - RMB по чистой области;
  • Названия, размер, ровно как и фигуры вершин на данный момент не реализованы;
  • Возможности регулировать масштаб в плоскостях пока нет;
  • Навигация в 3D - W, A, S, D. Space - уровень вверх, С - уровень вниз. Навигация работает пока только на английской раскладке.
  • Скрипты можно использовать для анализа и модификации графов, находятся они в каталоге с программой (scripts). Скрипты запускаются через меню Graph/Граф, некоторые доступны только при выделении одной или двух вершин. Ими же можно расширять функционал программы. В примере есть поиск дочерних и родительских вершин, а также алгоритм поиска кратчайшего пути Флойда-Уоршелла. Также есть 3-й тип скриптов который доступен в любой момент, но в примерах их нет. Как определяется тип скрипта (загружаются они при запуске), можно посмотреть в самих скриптах, там есть комментарии.
  • Проблема с GLUquadric - в новых Qt, QtOpenGL уже не линкует GLU, поправлю и сделаю тарбол.
Void-995 ()

Уже есть скомпилированная версия под Linux-x86_64, а также тарбол с исправленными исходниками.

Void-995 ()
Ответ на: комментарий от Void-995

А какие форматы хранения оно вообще умеет? Что-т не найду нигде.

proofit404 ()

Сделай рисовалку графов на произвольной поверхности, типа на сфере там... Можно даже без редактирования, лишбы ДОТ читала и выкладывала ребра и вершины на какой-нибудь тор, например

Мне очень интересно было бы поигратся да. Типа на сколько географические кратчайшие линии соответсвуют кратчайшим в графе, который соединяет роутеры по всему миру

anonymous ()
Ответ на: комментарий от proofit404

Пока только свой, внутренний (GEF, Graph Editor File). Планирую расширить API для скриптов, тогда можно будет импортировать/экспортировать любые другие форматы, как в Blender, например. Хочу добавить для начала GraphML и DOT.

Void-995 ()
Ответ на: комментарий от kamre

Вот неплохой редактор графов в качестве примера: yEd

А у Вас есть такой же, но не на Java?

anonymous ()
Ответ на: комментарий от anonymous

Сам ищу хороший и «не на Java». Думал вот может быть из топика будет весьма годен, но пока что-то не очень, еще много всего не хватает.

kamre ★★★ ()
Ответ на: комментарий от Void-995

Есть желание помочь по парочке пунктов. Контакты в профиле, стучись - обсудим.

proofit404 ()

Отлично! Я, правда, пока не разобрался - только откомпилил и запустил. Но замены kgraphedit (RIP) искал очень давно. Если автору интересно привести в порядок проект (и попасть в http://www.qtdesktop.org/) - прошу в личку (ti.eugene@gmail.com) - мылом или xmpp. ЗЫ. там надо немного подрихтовать

TI_Eugene ()

слишком много внимания уделено внешнему виду. непонятно зачем нуже 3D просмотр.

PS запустить под линухом так и не удалось. Пришлось качать версию для винды и пускать под wine.

dikiy ★★★★☆ ()
Ответ на: комментарий от kerzol

я и говорю: нужно укладывание графов на произвольную поверхность. чото типа: http://www.ics.uci.edu/~eppstein/0xDE/F24/3dtorus2.png

зачем на произвольную? Из топологии мы знаем, что любые компактные поверхности гомеоморфны либо сфере, либо тору, либо кольцу мёбиуса (ну и их различным суммам).

то есть достаточно встраивать граф на соотв. поверхности. А визуализация нужна разве что в простейших случаях, ибо чуть более сложный - и можно уже не дергаться, все равно ничего не разглядеть в мешанине :)

3д очень пригодится тогда.

исключительно в целях обучения разве что.

dikiy ★★★★☆ ()
Последнее исправление: dikiy (всего исправлений: 1)
Ответ на: комментарий от dikiy

зачем на произвольную? Из топологии мы знаем, что любые компактные поверхности гомеоморфны либо сфере, либо тору, либо кольцу мёбиуса (ну и их различным суммам).

мне не столько топология интересна, сколько метрика.

А визуализация нужна разве что в простейших случаях, ибо чуть более сложный - и можно уже не дергаться, все равно ничего не разглядеть в мешанине :)

ну... не согласен. Кусочки то можно посмотреть всё ж.

исключительно в целях обучения разве что.

да

kerzol ()
Ответ на: комментарий от dikiy

хм... кароче я сам не знаю чего хочу походу. грусть

kerzol ()
Ответ на: комментарий от kerzol

А визуализация нужна разве что в простейших случаях, ибо чуть более сложный - и можно уже не дергаться, все равно ничего не разглядеть в мешанине :)

ну... не согласен. Кусочки то можно посмотреть всё ж.

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

зачем на произвольную? Из топологии мы знаем, что любые компактные поверхности гомеоморфны либо сфере, либо тору, либо кольцу мёбиуса (ну и их различным суммам).

мне не столько топология интересна, сколько метрика.

не понял.

Да и вообще - 3D и графы в твоем понимании совсем не относятся собственно к графам и алгоритмам на них, а относятся исключительно к топологии и общего с сабжем не имеют почти что ничего.

dikiy ★★★★☆ ()
Ответ на: комментарий от kerzol

хм... кароче я сам не знаю чего хочу походу. грусть

я знаю, чего ты хочешь. Ты хочешь обычного пыщ-пыща, но в тоже время сам это осознаешь и получаешь слабенький баттхерт :)

dikiy ★★★★☆ ()
Ответ на: комментарий от dikiy

не понял. что такое пыщ-пыщ?

По-поводу метрики вот что ищу:

По данному графу построить более-менее «хорошую» (гладкую быть может) поверхность в R^3 ну или в R^{4,5,6,...}. Потом нарисовать на ней граф да так, что бы кратчайшие пути попали прямиком на кратчайшие линии на этой самой поверхности.

ну и эт самое, что бы двуугольники тоже были.

kerzol ()

Предоставляет возможность изменить граф в трех основных плоскостях (сверху, спереди, сбоку) и просмотреть его в трехмерном режиме.

я не понимаю, нафига? ладно еще 3D, но нафига в разных плоскостях ?_o

вообще сделай интерфейс попроще. Поменьше кнопок и поменьше гламура. добавь лучше базовых алгоритмов туда.

скорей всего получится обыное ненужно, но коэффициент ненужности будет очевидно меньше, чем сейчас.

dikiy ★★★★☆ ()
Ответ на: комментарий от kerzol

не понял. что такое пыщ-пыщ?

свистелки и перделки, а так же гламур всякий.

По данному графу построить более-менее «хорошую» (гладкую быть может) поверхность в R^3 ну или в R^{4,5,6,...}. Потом нарисовать на ней граф да так, что бы кратчайшие пути попали прямиком на кратчайшие линии на этой самой поверхности.

не понял. Если ты имеешь в виду кратчайшие пути между любыми двумя вершинами... то это какая-то шизофрения.

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

ну и гладкую поверхность не обязательно. Достаточно просто использовать граф как остов.

dikiy ★★★★☆ ()
Ответ на: комментарий от dikiy

не понял. Если ты имеешь в виду кратчайшие пути между любыми двумя вершинами... то это какая-то шизофрения.

конечно между любыми двумя. Вот примерчик: http://www.nature.com/ncomms/journal/v1/n6/full/ncomms1063.html

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

нафиг, нафиг. я ваще считаю, что рёбра единичной длины все.

ну и гладкую поверхность не обязательно. Достаточно просто использовать граф как остов.

конечно, можно ваще граф как метрическое пространство рассматривать, но хочется поверхность няшную.

kerzol ()
Ответ на: комментарий от dikiy

просто пытаюсь найти гипотетическое применение 3Д-вьювера

kerzol ()
Ответ на: комментарий от kerzol

не понял. Если ты имеешь в виду кратчайшие пути между любыми двумя вершинами... то это какая-то шизофрения.

конечно между любыми двумя. Вот примерчик: http://www.nature.com/ncomms/journal/v1/n6/full/ncomms1063.html

ок. идея ясна. Я на буржуйском понимаю мало, но все равно очевидно, что тут никакая визуализация не поможет, это задача чисто аналитическая. Навскидку ни опрговергнуть, ни подтвердить не могу. Очевидно одно, к визуализации это не имеет отношения.

dikiy ★★★★☆ ()
Ответ на: комментарий от kerzol

просто пытаюсь найти гипотетическое применение 3Д-вьювера

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

dikiy ★★★★☆ ()
Ответ на: комментарий от dikiy

Очевидно одно, к визуализации это не имеет отношения.

угу. Просто решение нарисовать в 3Д. Вот было бы здорово!

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

Общие решения вообще штука опасная.

Энивей, спасибо за дискуссию.

kerzol ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.