Ответ 1
Советую вам использовать Gephi.
Эта программа способна выполнять все, что вы хотите, особенно графические макеты!
У меня есть большой направленный ациклический граф, который я хотел бы визуализировать в растровом изображении.
В идеале я хотел бы иметь все корневые узлы в верхней части изображения, а все узлы листа внизу, т.е. края графа все указывают в направлении вниз.
Есть ли хороший алгоритм для разработки координат всех узлов, которые соответствуют этим ограничениям, и даст хорошую визуализацию?
Советую вам использовать Gephi.
Эта программа способна выполнять все, что вы хотите, особенно графические макеты!
Посмотрите на коллекцию программного обеспечения Graphviz. Он содержит несколько программ для рендеринга графиков.
Самый простой способ - написать свой график на диск в одном из текстовых форматов Graphviz. Затем выполните одну из программ рендеринга и загрузите полученное изображение в ваше приложение.
Bayesian Networks имеет аналогичные требования. Вы можете искать алгоритмы для байесовских сетей. Эта статья может быть полезной.
Вам может быть интересен многоуровневый графический чертеж (также известный как "иерархический графический чертеж" или "рисунок графика в стиле Сугияма" ). Алгоритм слишком длинный, чтобы описать здесь, но поиски Google дают много надежных объяснений.
Вы можете попробовать этот пакет Go Я написал: https://github.com/h8liu/e8tools/tree/master/dagvis
Пример: http://lonnie.io/gostd/dagvis/