2010-08-21 4 views
1

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

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

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

Примечание:

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

ответ

2

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

  • динамическая сила, направленная алгоритм, который сохраняет ментальную карту пользователя между кадрами (например, визуализация графов в движении, в журнале графовых алгоритмов и приложений (JGAA), 6 (3), 353--370, 2002), или
  • Procrustes Analysis для перевода, поворота и масштабирования кадров, чтобы относительное положение точек «ориентиров» сохранилось.
+0

Большое спасибо за ответ. К сожалению, ни один из этих подходов не будет работать в моем случае. Первый не будет работать, потому что между графиками нет переходов (иногда граф A -> граф B, но обычно такого порядка нет). Второй не будет работать, потому что вращение прокруток основано на минимизации «расстояния прокрутки» между двумя формами - в моем случае есть только одна форма. Во всяком случае, я дам вам преимущество для усилий и опрятную идею нормализации шкалы :-) –

+0

Да, я неправильно понял вопрос. Может быть, вам нужен силовой алгоритм, который включает направленность? например Dwyer, T. and Koren, Y. and Marriott, K., Графические графики с использованием квадратичного программирования, IEEE-транзакции для визуализации и компьютерной графики, 12 (4), 536-548 (2006) и Dwyer, T. and Koren, Y ., Dig-CoLa: Направленная схема графиков с помощью минимизации минимизации энергии, Материалы симпозиума IEEE по информационной визуализации (InfoVis'05), IEEE Computer Society, 65-72, 2005. –

+0

Вау, квадратичное программирование? Мне не понадобилось что-то такое сложное для такой маленькой проблемы ;-) Но это похоже на решение моей проблемы, поэтому еще раз спасибо! –

Смежные вопросы