This project is an interactive treemap visualization tool that represents hierarchical data structures using recursive tree-based algorithms. It was developed as part of CSC148 at the University of Toronto.
This program is designed to visualize hierarchical data, specifically focusing on file system structures by mapping folders and files into a treemap format.
π¨ The full source code is private due to university policies and academic integrity concerns. If you're an employer or an interested party, please contact me directly for access.
β
Python & Object-Oriented Programming β Implemented classes using inheritance and abstraction.
β
Recursive Algorithms β Used recursion to traverse and process hierarchical data structures.
β
Data Processing β Used os library to read and process file system data.
β
Visualization with Pygame β Implemented an interactive GUI to display treemaps dynamically.
β
Event Handling & User Interaction β Enabled users to expand/collapse nodes, resize, move, and delete elements in real-time.
β
Algorithm Design β Developed treemap partitioning algorithms to generate proportional rectangular visualizations.
- Models files and directories as a tree structure.
- Uses file sizes to proportionally divide rectangles in the visualization.
- Enables interactive expansion and collapsing of directories.
- Dynamic UI that updates based on user input.
- Supports clicking on elements to display information.
- Expanding & collapsing nodes for flexible navigation.
- Modifying & resizing elements using keyboard commands.
Below are some visuals demonstrating the system in action:
This GIF shows the user expanding and collapsing nodes in an example directory, representing a file system structure.

This GIF demonstrates how the treemap dynamically updates as nodes are expanded and collapsed, showing how data is visually represented.

When a folder/file is selected, the following keys can be pressed:
- E β Expand the folder
- A β Expand the folder and all folders inside
- C β Collapse the parent folder
- X β Collapse the entire display
- Q β Visualize the selected folder/file
- B β Go back to parent folder (if Q was pressed)
- Up/Down Arrow Keys β Change the size of a file (in visualization)
- M β Move a file (while selecting a file and hovering over a folder)
- Del β Delete a file or folder from the visualization
- Drag window β Resize the visualization window
- π This project was developed as part of CSC148 at UofT.
- π« Keeping the code private prevents academic integrity violations.
- π€ If you're interested in the source code, reach out to me directly.
π© Reach out via GitHub or LinkedIn!