Улучшение graphviz расположение

У меня есть паралич совершенства когда дело доходит до создания чего-то графического. Если симметрии визуального не были полностью исследованы, мне приходится тяжелее, постигая то, что продолжается. Я - очень визуальный ученик также, и я ЛЮБЛЮ упрощать вещи, которые я просто изучил, и потяните их на бумаге.

Graphviz является хорошим инструментом для рисования вещи автоматически, но это могло быть лучше. Давайте запустимся с примера хорошего графика) конечный автомат скорее). Не берите в голову качество (оно может быть перерисовано с лучшим инструментом), этот почти прекрасен, за исключением того, что я повернул бы его против часовой стрелки 45 градусов для создания симметрии очевидной. Читателю должно затем потребоваться меньше времени, чтобы выяснить, как состояния q1 и q2 подобны и как, где они отличаются. Я утверждаю, что существует единственный лучший способ представить ту схему, учитывая, что нет никаких других частей диаграммы рядом с ним.

http://gallery.hd.org/_exhibits/maths/math-finite-state-machine-DHD.gif
(источник: gallery.hd.org)

Теперь давайте посмотрим меньше, чем идеальное описание:

http://linux.softpedia.com/screenshots/Graphviz_1.png
(источник: softpedia.com)

Это похоже на что-то, что graphviz генерировал бы. Да, края являются гладкими, но GAAAAWWWD это ненужное сбивающий с толку! Это похоже на интеллект-карту, не законченную схему, готовую к потреблению. Я полагаю, что человеческие глаза ЖАЖДУТ (не меньше) симметрию. Да, иерархия, и т.д. также важные факторы.

Я удивлен, что нет лучших доступных алгоритмов. Некоторые люди не являются визуальными учениками вообще; они могут схватить абстрактные понятия путем чтения символов. Не я!

Так, каков мой вопрос? Ну, есть ли лучшее бесплатное программное обеспечение, доступное для рисования малых и средних графиков? Возможно,

Спасибо!

Сообщите мне, как я могу улучшить это сообщение.

P.S. Я занял 10 минут для вытягивания достаточно подобного клона в диаметре. Это все еще не прекрасно, но было удобно сделать, потому что все привязывается к сетке (и я пропустил несколько небольших деталей, но не испытывайте желание повторно загружать). LR_0 нужно, "Запускают--->" прибывающий сверху, чтобы позволить пользователю схватить начальное состояние раньше.

Finate State Machine

19
задан 6 revs, 4 users 62% 17 June 2019 в 07:06
поделиться

2 ответа

После нескольких попыток построения графика и неудачной попытки получить макет, который вы считаете "лучшим", вы задали вопрос здесь: есть " [b] etter бесплатное программное обеспечение [для] рисования графиков малого и среднего размера ». Единственный критерий, который вы указали для оценки алгоритмов компоновки, - это то, насколько близко они подходят к« единственному лучшему способу представления этой диаграммы. . " «Лучшее», конечно, остается за вами.

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

В основе алгоритмов рисования графов лежат процедуры оптимизации, которые затем генерируют оценочные решения («решение» здесь относится к координатам для каждого узла, которые вместе составляют макет). Эти решения оцениваются в соответствии с минимизацией одного критерия или ряда ранжированных критериев, т. Е. Минимизацией одного или нескольких атрибутов графа - например, общего количества пересекающихся ребер или суммы расстояний. между узлами (или их комбинация, или некоторая взвешенная комбинация этих двух), или близость к симметричной конфигурации. Graphviz состоит из шести различных алгоритмов компоновки (dot neato, fdp, sfdp, twopi и circo). Из них, похоже, вы использовали только точку; однако twopi и circo могли быть лучшими вариантами, учитывая их строгие ограничения симметрии, которые, кажется, соответствуют вашему собственному представлению о правильно нарисованном графике.

Во-вторых, текст вашего вопроса направлен на «графики» и рисование графиков. После прочтения вашего полного описания я не думаю, что ваш вопрос имеет какое-либо отношение к какой-либо концепции.

Помимо общих алгоритмов рисования графов (таких как graphviz), существует ряд алгоритмов компоновки для конкретных областей, например, диаграммы Хассе (для представления частично упорядоченных множеств в теории порядка), графы Барабаши-Альберта (безмасштабные сети ) и Эрдош-Реньи (случайные графы). Каждый из этих алгоритмов создает макет графика на основе критериев и ограничений, предоставляемых доменом - это должно указывать вам на то, что не существует единого «лучшего» макета для всех доменов. Хотя вы использовали термин «граф» в своем вопросе, ваше описание указывает на то, что ваша проблема связана с отрисовкой конечных автоматов - весьма своеобразного типа графа. Общие алгоритмы рисования графов часто не справляются с рисованием специализированных графов такого типа, потому что алгоритм ничего не знает о предметной области. Фактически, я не знаю ни одного алгоритма компоновки диаграмм состояний - точно так же, как нет ни одного алгоритма для диаграмм (не одинаковых, но похожих). Что касается рабочего процесса, вы можете нарисовать график в graphviz, а затем импортировать его в Omnigraffle для точной настройки - в Omnigraffle у вас будет точный контроль над размещением узлов и краев.

22
ответ дан 30 November 2019 в 04:11
поделиться

Я знаю несколько опций:

  • Prefuse - у них более старая версия Java . Самая последняя версия находится в формате Flash и имеет несколько хороших макетов. Это называется Prefuse Flare . Демонстрационная страница иллюстрирует некоторые возможности компоновки.
  • JUNG включает несколько вариантов компоновки, а также мощные функции анализа графиков. Есть несколько примеров здесь .
  • Networkx также включает в себя многочисленные возможности компоновки. Некоторые из них перечислены здесь .
3
ответ дан 30 November 2019 в 04:11
поделиться
Другие вопросы по тегам:

Похожие вопросы: