Граф Python, как windirstat?

Я заинтересован в использовании Python для создания диаграмм, представляющих размер значений на основе размера квадратов (и, необязательно, их цвет). По сути, я ищу способ сделать обзор множества значений, как в старой доброй программе http://windirstat.info/ с использованием жесткого диска (в основном это большой квадрат, представляющий ваш жесткий диск, а затем меньшие квадраты, составляющие область внутри него, представляющую разные программы, чем больше квадрат, тем больше размер файла, цвет указывает тип файла). Я довольно хорошо знаком с matplotlib и не думаю, что с этим можно что-то сделать. Есть ли другой пакет Python, который поможет? Любые предложения для чего-то более низкого уровня, если это не так? Я думаю, что я мог бы сделать это вручную, если бы я мог найти способ рисовать прямоугольники программно (меня не волнует формат, но вариант экспорта SVG, а также PNG был бы хорош).

В конечном счете, было бы неплохо, чтобы он был интерактивным, как windirstat, где, если бы вам пришлось навести курсор на определенный квадрат, вы получили бы больше информации о нем, и если бы вы щелкнули по нему, возможно, вы пошли бы и увидели состав этого конкретная площадь. Я знаком только с wxpython для GUI, но не уверен, что его можно использовать для чего-то подобного. На данный момент я был бы рад просто вывести их, хотя.

Большое спасибо! Alex

Редактировать: Спасибо, ребята, оба ваши ответы очень помогли.

2 ответа

Решение

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

Редактировать:

Больше ссылок и информации:

Если вы не возражаете против чтения статей, библиотека d3 на основе браузера предоставляет "квадратные" древовидные карты ( реализация js). Они ссылаются на эту статью Брулса, Хьюзинга и ван Вейка. (Это также цитата 3 в статье в Википедии)

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

Squarified, безусловно, представляется наиболее распространенным сортом вокруг. Приведенных выше ссылок должно быть достаточно для работы над решением или даже для непосредственного переноса реализации d3. Однако стоимость использования гроккинга d3 (что-то вроде декларативной формы jQuery) может быть несколько высокой. На первый взгляд, однако, реализация выглядит относительно простой.

Squaremap делает это. Я не использовал его (я знаю это только по RunSnakeRun), и его документации крайне не хватает, но, похоже, он работает.

Другие вопросы по тегам