Я рисую графики с ориентированным на усиление макетом, и проблема в том, что созданные графики ориентированы случайным образом и непредсказуемо, что делает их несколько запутанными. Например, предположим, что узел A является членом двух отдельных графов G1 и G2. При силовой ориентации узел A может попасть в левую сторону G1, но с правой стороны G2.Автоматический поворот графика
Теперь я пытаюсь уменьшить путаницу, автоматически поворачивая график детерминированным способом после того, как алгоритм макета графа был применен к нему. Для этого можно было вычислить minimum bounding rectangle, но было бы лучше, если бы алгоритм вращения мог включать некоторую дополнительную информацию о вершинах и ребрах.
В этом случае каждая вершина представляет собой документ с меткой времени и числом слов, а ребра представляют собой неориентированные и направленные отношения между документами. Возможно, есть способ повернуть график, чтобы старые документы концентрировались слева, а новые - справа? То же самое со ссылками: стрелки должны указывать больше справа, чем налево. Это звучит как разумный подход, но я не знаю, как вычислить что-то подобное (и Google тоже не помог).
Примечание:
- Я думаю, что есть алгоритмы граф макета, которые ухаживают за поворот, но я предпочел бы решение, которое включает в себя расположение силы направленного.
- Можно было бы вручную повернуть график вручную, но это требует сохранения ориентации графика, чего я бы предпочел избежать, потому что в базе данных документов нет места для этого.
Большое спасибо за ответ. К сожалению, ни один из этих подходов не будет работать в моем случае. Первый не будет работать, потому что между графиками нет переходов (иногда граф A -> граф B, но обычно такого порядка нет). Второй не будет работать, потому что вращение прокруток основано на минимизации «расстояния прокрутки» между двумя формами - в моем случае есть только одна форма. Во всяком случае, я дам вам преимущество для усилий и опрятную идею нормализации шкалы :-) –
Да, я неправильно понял вопрос. Может быть, вам нужен силовой алгоритм, который включает направленность? например 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. –
Вау, квадратичное программирование? Мне не понадобилось что-то такое сложное для такой маленькой проблемы ;-) Но это похоже на решение моей проблемы, поэтому еще раз спасибо! –