Сегодня хочется воздать по заслугам программе-долгожительнице SequoiaView — приложению, созданному в начале двухтысячных годов Техническим университетом Эйндховена (Нидерланды). Приложение получилось настолько практичным, лаконичным и удобным, что уже более 10 лет выручает всех, у кого вдруг внезапно закончилось место на диске, а сейчас как раз позарез нужно расчистить пару десятков гигабайт, чтобы поставить новую игру, скачать фильм или просто забить это место в очередной раз мелким мусором.
Это миниатюрное (1.3 Мб) приложение обладает одной основной функцией. Оно рисует «подушечную» древовидную карту (cushion treemap) выбранного раздела жесткого диска. Выглядит подобная карта примерно так:
Что же такое древовидная карта?
Древовидная карта — это способ представления иерархической структуры, в котором исходная область делится на прямоугольники, площадь которых пропорциональна значению некоторого свойства данной структуры (в нашем примере — объему папки в байтах) по отношению к величине данного свойства во всей структуре.
Таким образом, площадь каждого прямоугольного участка на древовидной карте пропорционально объему на диске элемента (папки или файла), соответствующего данному участку. Карта может быть построена путем рекурсивного подразбиения произвольного прямоугольника в соответствии с каждым уровнем иерархической структуры.
Для понятности приведу пример построения древовидной карты для некоторого дерева каталогов:
Как видно из примера, результирующая картинка получилась не самая наглядная с точки зрения анализа, она могла бы выглядеть лучше.
Профессор Технического университета Эйндховена Jack van Wijk, эксперт в области визуализации данных, в 1999 году предложил интересное решение: применять к прямоугольникам «псевдообъемную» раскраску, которая обеспечивает простое визуальное восприятие размеров областей в иерархической древовидной карте, так называемый шейдинг (или тайлинг). Такой способ раскраски они назвали «подушечной» древовидной картой (cushion treemap). Их работа доступна для публичного скачивания.
Учетные решили, что наиболее близким человеку способом восприятия объема является градация оттенков на освещенной поверхности. Таким образом, задача сводится к построению объемной поверхности, которая отражает структуру древовидную карты. В качестве решения они использовали подразбиение интервалов.
На каждом уровне иерархии каждый интервал «добавлял» высоту результирующей поверхности:
Итоговая кривая высот (кривая, показанная на примере серым цветом) использовалась для построения засветки всей карты таким образом, как будто наблюдатель смотрел на нее сверху. При таком подходе с одной стороны видны отдельные сегменты, четко разделенные тенями, а с другой стороны — прослеживается общая иерархичность карты и можно выделить отдельные уровни иерархии. Данный подход может быть обобщен и для двумерного случая. Для расчета степени засветки, добавляемой каждым уровнем иерархии, ученый предложил использовать параболические кривые, подбирая степень кривизны которых можно получить как более, так и менее контрастное изображение:
Как показала практика, такой способ визуализации гораздо лучше классических (одноцветных) древовидных карт, а также лучше трехмерного изометрического представления.
Описанный подход был успешно реализован учеными в программе SequioaView. Помимо описанного подхода в ней были добавлены опции, позволяющие управлять видом древовидной карты и отображением выделения:
Удобным вариантом здесь является подсветка полного пути в древовидной карте к каталогу, находящемуся под указателем мыши (Highlight file and entire path). По умолчанию этот режим не включен.
На вкладке View можно включить показ свободного места на верхнем уровне карты (Show free diskspace on toplevel). По умолчанию он выключен и карта показывает только занятое файлами место.
Интересной функцией является возможность задать цвет для разных расширений файлов, что позволяет еще более наглядно понять, где лежит фотоархив, а где папки с музыкой:
Всем хороших выходных! Надеюсь, вы сами поэкспериментируете с этой замечательной программой и найдете у себя на диске что-то новое ;-) О самых интересных находках можно писать в комментариях :-)
Автор: alan008