Skip to content

Feature request: Stacked blocks or force-directed graph viz #47

@nl-brett-stime

Description

@nl-brett-stime

Thanks for dockviz!

I understand graphviz is doing most of the heavy lifting when it comes to visualization with this approach. Unfortunately, I don't think treemaps are the right approach for this use case. Usually, a treemap would be used for a bottom-up approach where we start with a given branch and want to know it's cumulative weight, including that of all the leaves 'owned' by the branch. E.g., all of the files nested under a given directory in a file system.

However, in the case of docker images, our interest is reversed. We'd prefer a top-down approach where we're interested in a particular peak in a mountain range and we want to determine the weight of all the supporting strata, including those which might also be undergirding other peaks. In the top-down analysis, a supporting stratum isn't necessarily 'owned' solely by a single peak.

In short, treemaps = sum(for all descendants of branch) analysis
...but for docker images we want: sum(for all ancestors of leaf) analysis

To that end, I think a better visualization would look more like a flamegraph or sunburst chart where we'd have more abstract/general/foundational building blocks across the bottom and more concrete/specific/dependent building blocks stacked up on top of their respective underlying dependencies. The area of any given block would be proportional to it's size in bytes.

Flame graphs: http://www.brendangregg.com/flamegraphs.html
Sunburst chart: https://architect-api.readthedocs.io/en/latest/text/document-vis-hierarchy.html#sunburst-chart

The main difference when compared to a regular flame graph is that the more dependent layers aren't necessarily constrained to be smaller than their dependencies. Some graphs might be top-heavy e.g., https://i.pinimg.com/736x/d3/79/61/d3796140d9104796457d8d26986c9f56.jpg

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions