Автоматически вращать график - PullRequest
1 голос
/ 21 августа 2010

Я рисую графики с принудительной компоновкой, и проблема в том, что созданные графики ориентированы случайным и непредсказуемым образом, что делает их несколько запутанными.Например, предположим, что узел A является членом двух отдельных графов G1 и G2.С помощью силового макета узел A может оказаться в левой части G1, но в правой части G2.

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

В этом случае каждая вершинаявляется документом с отметкой времени и количеством слов, а края представляют собой ненаправленные и направленные отношения между документами.Возможно, есть способ повернуть график так, чтобы старые документы концентрировались слева, а новые - справа?То же самое со ссылками: стрелки должны указывать больше вправо, чем влево.Это звучит как разумный подход, но я понятия не имею, как рассчитать что-то подобное (и Google на самом деле не помог).

Примечания:

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

Ответы [ 2 ]

2 голосов
/ 23 августа 2010

Вы можете использовать

  • динамический силовой алгоритм, который сохраняет ментальную карту пользователя между кадрами (например, Рисование графика в движении, в Журнале алгоритмов и приложений графика (JGAA), 6 (3), 353–370, 2002) или
  • Анализ прокруток для перевода, поворота и масштабирования кадров с сохранением относительного положения «точек ориентиров».
1 голос
/ 26 апреля 2012

Вы можете использовать макет, который использует начальное число для генерации случайных чисел.Попробуйте многоуровневый алгоритм Ифань Ху в Гефи .

...