Граф Python, как windirstat? - PullRequest
       19

Граф Python, как windirstat?

6 голосов
/ 15 января 2012

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

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

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

Edit: Спасибо, ребята, оба ваших ответа очень помогли.

Ответы [ 2 ]

7 голосов
/ 15 января 2012

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

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

Дополнительные ссылки и информация:

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

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

1 голос
/ 15 января 2012

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

...