Ищете эффективный способ отображения небинарной древовидной структуры

Я работаю над созданием генетического алгоритма для проекта класса в python. Алгоритм работает отлично, но я хочу создать изображение дерева, а не просто вывод текста. Я написал функцию, которая хорошо работает для деревьев примерно до 4 уровней. Кроме того, дисплей работает плохо, и в итоге остается слишком много пустого места. Я знаю почему, но мне может потребоваться слишком много времени, чтобы найти лучшее решение.

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

Вы можете видеть, что он работает хорошо и не работает хорошо на изображениях.

Прилично выглядящее дерево: https://drive.google.com/file/d/1j2BQjanTDgvzttedUyhxnbWhkXuQwyaG/view?usp=sharing

Не очень хорошее дерево (слишком много пустого места): https://drive.google.com/file/d/1Gh90e3JvAeCB_U2NhvvouZulM4CVQ8ZH/view?usp=sharing

Заранее спасибо.


person Russell Senior    schedule 28.04.2019    source источник


Ответы (1)


Используйте graphviz. В частности, вам должен подойти генератор макета dot.

Вы также можете найти NetworkX drawing.

person J_H    schedule 28.04.2019