sirena 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
- data/.github/workflows/build_deploy.yml +59 -0
- data/.github/workflows/links.yml +85 -0
- data/.github/workflows/rake.yml +15 -0
- data/.github/workflows/release.yml +27 -0
- data/.gitignore +68 -0
- data/.rspec +3 -0
- data/.rubocop.yml +14 -0
- data/.rubocop_todo.yml +70 -0
- data/ARCHITECTURE.md +744 -0
- data/Gemfile +12 -0
- data/LICENSE +25 -0
- data/README.adoc +357 -0
- data/Rakefile +11 -0
- data/docs/.gitignore +1 -0
- data/docs/Gemfile +13 -0
- data/docs/_config.yml +182 -0
- data/docs/_diagram_types/architecture-diagram.adoc +314 -0
- data/docs/_diagram_types/block-diagram.adoc +345 -0
- data/docs/_diagram_types/c4-diagram.adoc +559 -0
- data/docs/_diagram_types/class-diagram.adoc +816 -0
- data/docs/_diagram_types/er-diagram.adoc +719 -0
- data/docs/_diagram_types/error-diagram.adoc +114 -0
- data/docs/_diagram_types/examples/flowchart-examples.adoc +29 -0
- data/docs/_diagram_types/flowchart.adoc +488 -0
- data/docs/_diagram_types/gantt-chart.adoc +502 -0
- data/docs/_diagram_types/git-graph.adoc +600 -0
- data/docs/_diagram_types/index.adoc +192 -0
- data/docs/_diagram_types/info-diagram.adoc +103 -0
- data/docs/_diagram_types/kanban-diagram.adoc +262 -0
- data/docs/_diagram_types/mindmap.adoc +603 -0
- data/docs/_diagram_types/packet-diagram.adoc +378 -0
- data/docs/_diagram_types/pie-chart.adoc +335 -0
- data/docs/_diagram_types/quadrant-chart.adoc +406 -0
- data/docs/_diagram_types/radar-chart.adoc +528 -0
- data/docs/_diagram_types/requirement-diagram.adoc +416 -0
- data/docs/_diagram_types/sankey-diagram.adoc +357 -0
- data/docs/_diagram_types/sequence-diagram.adoc +664 -0
- data/docs/_diagram_types/state-diagram.adoc +658 -0
- data/docs/_diagram_types/timeline.adoc +352 -0
- data/docs/_diagram_types/treemap-diagram.adoc +462 -0
- data/docs/_diagram_types/user-journey.adoc +602 -0
- data/docs/_features/index.adoc +129 -0
- data/docs/_guides/cli-reference.adoc +203 -0
- data/docs/_guides/index.adoc +56 -0
- data/docs/_guides/installation.adoc +100 -0
- data/docs/_guides/quick-start.adoc +132 -0
- data/docs/_pages/comparison.adoc +441 -0
- data/docs/_pages/compatibility.adoc +300 -0
- data/docs/_pages/index.adoc +39 -0
- data/docs/_references/index.adoc +103 -0
- data/docs/_tutorials/index.adoc +57 -0
- data/docs/index.adoc +166 -0
- data/docs/lychee.toml +54 -0
- data/examples/.gitignore +10 -0
- data/examples/README.adoc +196 -0
- data/examples/README.md +64 -0
- data/examples/architecture/01-basic-services.mmd +9 -0
- data/examples/architecture/01-basic-services.svg +37 -0
- data/examples/architecture/02-service-groups.mmd +16 -0
- data/examples/architecture/02-service-groups.svg +55 -0
- data/examples/architecture/README.adoc +79 -0
- data/examples/block/01-basic-blocks.mmd +13 -0
- data/examples/block/01-basic-blocks.svg +44 -0
- data/examples/block/02-block-shapes.mmd +13 -0
- data/examples/block/02-block-shapes.svg +47 -0
- data/examples/block/README.adoc +85 -0
- data/examples/c4/01-context-diagram.mmd +10 -0
- data/examples/c4/01-context-diagram.svg +45 -0
- data/examples/c4/02-container-diagram.mmd +24 -0
- data/examples/c4/02-container-diagram.svg +105 -0
- data/examples/c4/README.adoc +92 -0
- data/examples/class_diagram/01-basic-classes.mmd +61 -0
- data/examples/class_diagram/01-basic-classes.svg +117 -0
- data/examples/class_diagram/02-relationships.mmd +61 -0
- data/examples/class_diagram/02-relationships.svg +129 -0
- data/examples/class_diagram/README.adoc +93 -0
- data/examples/er_diagram/01-basic-entities.mmd +64 -0
- data/examples/er_diagram/01-basic-entities.svg +5 -0
- data/examples/er_diagram/02-cardinality.mmd +57 -0
- data/examples/er_diagram/02-cardinality.svg +125 -0
- data/examples/er_diagram/README.adoc +88 -0
- data/examples/error/01-basic-error.mmd +1 -0
- data/examples/error/01-basic-error.svg +13 -0
- data/examples/error/02-error-display.mmd +1 -0
- data/examples/error/02-error-display.svg +13 -0
- data/examples/error/README.adoc +71 -0
- data/examples/error_message_example.svg +13 -0
- data/examples/flowchart/00-original.mmd +13 -0
- data/examples/flowchart/00-original.svg +5 -0
- data/examples/flowchart/01-basic-flow.mmd +7 -0
- data/examples/flowchart/01-basic-flow.svg +52 -0
- data/examples/flowchart/01-basic-flow.yml +13 -0
- data/examples/flowchart/02*.svg +87 -0
- data/examples/flowchart/02-node-shapes.mmd +9 -0
- data/examples/flowchart/02-node-shapes.svg +33 -0
- data/examples/flowchart/03-edge-types.mmd +7 -0
- data/examples/flowchart/03-edge-types.svg +53 -0
- data/examples/flowchart/04-subgraphs.mmd +9 -0
- data/examples/flowchart/04-subgraphs.svg +33 -0
- data/examples/flowchart/05-styling.mmd +9 -0
- data/examples/flowchart/05-styling.svg +33 -0
- data/examples/flowchart/06-complex-flow.mmd +8 -0
- data/examples/flowchart/06-complex-flow.svg +59 -0
- data/examples/flowchart/README.adoc +167 -0
- data/examples/gantt/01-simple-timeline.* +14 -0
- data/examples/gantt/01-simple-timeline.mmd +6 -0
- data/examples/gantt/01-simple-timeline.svg +26 -0
- data/examples/gantt/02-task-dependencies.mmd +6 -0
- data/examples/gantt/02-task-dependencies.svg +26 -0
- data/examples/gantt/README.adoc +86 -0
- data/examples/git_graph/01-linear-history.mmd +12 -0
- data/examples/git_graph/01-linear-history.svg +26 -0
- data/examples/git_graph/02-branching.mmd +12 -0
- data/examples/git_graph/02-branching.svg +26 -0
- data/examples/git_graph/README.adoc +73 -0
- data/examples/info/02-showinfo.mmd +1 -0
- data/examples/info/02-showinfo.svg +10 -0
- data/examples/info/README.adoc +58 -0
- data/examples/info_showinfo_example.svg +10 -0
- data/examples/kanban/01-simple-board.mmd +8 -0
- data/examples/kanban/01-simple-board.svg +43 -0
- data/examples/kanban/02-workflow.mmd +8 -0
- data/examples/kanban/02-workflow.svg +43 -0
- data/examples/kanban/README.adoc +79 -0
- data/examples/mindmap/01-simple-tree.mmd +19 -0
- data/examples/mindmap/01-simple-tree.svg +61 -0
- data/examples/mindmap/02-knowledge-map.mmd +19 -0
- data/examples/mindmap/02-knowledge-map.svg +61 -0
- data/examples/mindmap/README.adoc +77 -0
- data/examples/packet/01-basic-packet.* +17 -0
- data/examples/packet/01-basic-packet.mmd +4 -0
- data/examples/packet/01-basic-packet.svg +82 -0
- data/examples/packet/README.adoc +58 -0
- data/examples/pie/01-simple-chart.mmd +5 -0
- data/examples/pie/01-simple-chart.svg +17 -0
- data/examples/pie/02-labeled-slices.mmd +6 -0
- data/examples/pie/02-labeled-slices.svg +19 -0
- data/examples/pie/README.adoc +75 -0
- data/examples/quadrant/01-basic-quadrant.mmd +13 -0
- data/examples/quadrant/01-basic-quadrant.svg +33 -0
- data/examples/quadrant/02-positioned-items.mmd +14 -0
- data/examples/quadrant/02-positioned-items.svg +35 -0
- data/examples/quadrant/README.adoc +84 -0
- data/examples/radar/01-simple-radar.* +5 -0
- data/examples/radar/01-simple-radar.mmd +3 -0
- data/examples/radar/01-simple-radar.svg +25 -0
- data/examples/radar/02-multiple-curves.mmd +4 -0
- data/examples/radar/02-multiple-curves.svg +43 -0
- data/examples/radar/README.adoc +75 -0
- data/examples/requirement/01-basic-requirements.mmd +23 -0
- data/examples/requirement/01-basic-requirements.svg +49 -0
- data/examples/requirement/02-risk-levels.mmd +23 -0
- data/examples/requirement/02-risk-levels.svg +49 -0
- data/examples/requirement/README.adoc +85 -0
- data/examples/sankey/01-simple-flow.mmd +7 -0
- data/examples/sankey/01-simple-flow.svg +34 -0
- data/examples/sankey/02-multi-stage.mmd +11 -0
- data/examples/sankey/02-multi-stage.svg +44 -0
- data/examples/sankey/README.adoc +74 -0
- data/examples/sequence/01-basic-sequence.mmd +27 -0
- data/examples/sequence/01-basic-sequence.svg +5 -0
- data/examples/sequence/02-activations.mmd +17 -0
- data/examples/sequence/02-activations.svg +78 -0
- data/examples/sequence/README.adoc +86 -0
- data/examples/state_diagram/01-simple-states.mmd +29 -0
- data/examples/state_diagram/01-simple-states.svg +5 -0
- data/examples/state_diagram/02-composite.mmd +19 -0
- data/examples/state_diagram/02-composite.svg +81 -0
- data/examples/state_diagram/README.adoc +90 -0
- data/examples/timeline/01-simple-timeline.mmd +11 -0
- data/examples/timeline/01-simple-timeline.svg +36 -0
- data/examples/timeline/02-periods.mmd +15 -0
- data/examples/timeline/02-periods.svg +47 -0
- data/examples/timeline/README.adoc +78 -0
- data/examples/treemap/01-basic-treemap.mmd +12 -0
- data/examples/treemap/01-basic-treemap.svg +59 -0
- data/examples/treemap/README.adoc +59 -0
- data/examples/user_journey/01-simple-journey.mmd +23 -0
- data/examples/user_journey/01-simple-journey.svg +5 -0
- data/examples/user_journey/02-multi-actor.mmd +18 -0
- data/examples/user_journey/02-multi-actor.svg +129 -0
- data/examples/user_journey/README.adoc +81 -0
- data/examples/xychart/01-line-chart.mmd +5 -0
- data/examples/xychart/01-line-chart.svg +43 -0
- data/examples/xychart/02-bar-chart.mmd +7 -0
- data/examples/xychart/02-bar-chart.svg +48 -0
- data/examples/xychart/README.adoc +80 -0
- data/exe/sirena +7 -0
- data/lib/sirena/cli.rb +138 -0
- data/lib/sirena/commands/batch.rb +117 -0
- data/lib/sirena/commands/render.rb +80 -0
- data/lib/sirena/commands/types.rb +29 -0
- data/lib/sirena/commands/version.rb +24 -0
- data/lib/sirena/diagram/architecture.rb +46 -0
- data/lib/sirena/diagram/base.rb +61 -0
- data/lib/sirena/diagram/block.rb +81 -0
- data/lib/sirena/diagram/c4.rb +328 -0
- data/lib/sirena/diagram/class_diagram.rb +385 -0
- data/lib/sirena/diagram/er_diagram.rb +238 -0
- data/lib/sirena/diagram/error.rb +38 -0
- data/lib/sirena/diagram/flowchart.rb +160 -0
- data/lib/sirena/diagram/gantt.rb +71 -0
- data/lib/sirena/diagram/git_graph.rb +36 -0
- data/lib/sirena/diagram/info.rb +38 -0
- data/lib/sirena/diagram/kanban.rb +178 -0
- data/lib/sirena/diagram/mindmap.rb +54 -0
- data/lib/sirena/diagram/packet.rb +79 -0
- data/lib/sirena/diagram/pie.rb +115 -0
- data/lib/sirena/diagram/quadrant.rb +138 -0
- data/lib/sirena/diagram/radar.rb +52 -0
- data/lib/sirena/diagram/requirement.rb +133 -0
- data/lib/sirena/diagram/sankey.rb +217 -0
- data/lib/sirena/diagram/sequence.rb +242 -0
- data/lib/sirena/diagram/state_diagram.rb +237 -0
- data/lib/sirena/diagram/timeline.rb +171 -0
- data/lib/sirena/diagram/treemap.rb +84 -0
- data/lib/sirena/diagram/user_journey.rb +149 -0
- data/lib/sirena/diagram/xy_chart.rb +76 -0
- data/lib/sirena/diagram.rb +8 -0
- data/lib/sirena/diagram_registry.rb +101 -0
- data/lib/sirena/engine.rb +292 -0
- data/lib/sirena/parser/architecture.rb +41 -0
- data/lib/sirena/parser/base.rb +41 -0
- data/lib/sirena/parser/block.rb +72 -0
- data/lib/sirena/parser/c4.rb +53 -0
- data/lib/sirena/parser/class_diagram.rb +63 -0
- data/lib/sirena/parser/er_diagram.rb +40 -0
- data/lib/sirena/parser/error.rb +49 -0
- data/lib/sirena/parser/flowchart.rb +71 -0
- data/lib/sirena/parser/gantt.rb +60 -0
- data/lib/sirena/parser/git_graph.rb +95 -0
- data/lib/sirena/parser/grammars/architecture.rb +145 -0
- data/lib/sirena/parser/grammars/block.rb +190 -0
- data/lib/sirena/parser/grammars/c4.rb +226 -0
- data/lib/sirena/parser/grammars/class_diagram.rb +284 -0
- data/lib/sirena/parser/grammars/common.rb +84 -0
- data/lib/sirena/parser/grammars/er_diagram.rb +114 -0
- data/lib/sirena/parser/grammars/error.rb +40 -0
- data/lib/sirena/parser/grammars/flowchart.rb +298 -0
- data/lib/sirena/parser/grammars/gantt.rb +252 -0
- data/lib/sirena/parser/grammars/git_graph.rb +167 -0
- data/lib/sirena/parser/grammars/info.rb +58 -0
- data/lib/sirena/parser/grammars/kanban.rb +83 -0
- data/lib/sirena/parser/grammars/mindmap.rb +115 -0
- data/lib/sirena/parser/grammars/packet.rb +73 -0
- data/lib/sirena/parser/grammars/pie.rb +128 -0
- data/lib/sirena/parser/grammars/quadrant.rb +199 -0
- data/lib/sirena/parser/grammars/radar.rb +150 -0
- data/lib/sirena/parser/grammars/requirement.rb +188 -0
- data/lib/sirena/parser/grammars/sankey.rb +104 -0
- data/lib/sirena/parser/grammars/sequence.rb +247 -0
- data/lib/sirena/parser/grammars/state_diagram.rb +172 -0
- data/lib/sirena/parser/grammars/timeline.rb +142 -0
- data/lib/sirena/parser/grammars/treemap.rb +120 -0
- data/lib/sirena/parser/grammars/xy_chart.rb +120 -0
- data/lib/sirena/parser/info.rb +49 -0
- data/lib/sirena/parser/kanban.rb +97 -0
- data/lib/sirena/parser/mindmap.rb +106 -0
- data/lib/sirena/parser/packet.rb +76 -0
- data/lib/sirena/parser/pie.rb +49 -0
- data/lib/sirena/parser/quadrant.rb +57 -0
- data/lib/sirena/parser/radar.rb +104 -0
- data/lib/sirena/parser/requirement.rb +70 -0
- data/lib/sirena/parser/sankey.rb +64 -0
- data/lib/sirena/parser/sequence.rb +51 -0
- data/lib/sirena/parser/state_diagram.rb +69 -0
- data/lib/sirena/parser/timeline.rb +57 -0
- data/lib/sirena/parser/transforms/architecture.rb +97 -0
- data/lib/sirena/parser/transforms/block.rb +254 -0
- data/lib/sirena/parser/transforms/c4.rb +347 -0
- data/lib/sirena/parser/transforms/class_diagram.rb +352 -0
- data/lib/sirena/parser/transforms/er_diagram.rb +169 -0
- data/lib/sirena/parser/transforms/error.rb +58 -0
- data/lib/sirena/parser/transforms/flowchart.rb +293 -0
- data/lib/sirena/parser/transforms/gantt.rb +215 -0
- data/lib/sirena/parser/transforms/git_graph.rb +160 -0
- data/lib/sirena/parser/transforms/info.rb +58 -0
- data/lib/sirena/parser/transforms/kanban.rb +176 -0
- data/lib/sirena/parser/transforms/mindmap.rb +227 -0
- data/lib/sirena/parser/transforms/packet.rb +63 -0
- data/lib/sirena/parser/transforms/pie.rb +143 -0
- data/lib/sirena/parser/transforms/quadrant.rb +177 -0
- data/lib/sirena/parser/transforms/radar.rb +126 -0
- data/lib/sirena/parser/transforms/requirement.rb +272 -0
- data/lib/sirena/parser/transforms/sankey.rb +122 -0
- data/lib/sirena/parser/transforms/sequence.rb +342 -0
- data/lib/sirena/parser/transforms/state_diagram.rb +292 -0
- data/lib/sirena/parser/transforms/timeline.rb +177 -0
- data/lib/sirena/parser/transforms/treemap.rb +81 -0
- data/lib/sirena/parser/transforms/xy_chart.rb +132 -0
- data/lib/sirena/parser/treemap.rb +98 -0
- data/lib/sirena/parser/user_journey.rb +120 -0
- data/lib/sirena/parser/xy_chart.rb +114 -0
- data/lib/sirena/parser.rb +8 -0
- data/lib/sirena/renderer/architecture.rb +251 -0
- data/lib/sirena/renderer/base.rb +251 -0
- data/lib/sirena/renderer/block.rb +286 -0
- data/lib/sirena/renderer/c4.rb +490 -0
- data/lib/sirena/renderer/class_diagram.rb +499 -0
- data/lib/sirena/renderer/er_diagram.rb +417 -0
- data/lib/sirena/renderer/error.rb +131 -0
- data/lib/sirena/renderer/flowchart.rb +301 -0
- data/lib/sirena/renderer/gantt.rb +331 -0
- data/lib/sirena/renderer/git_graph.rb +368 -0
- data/lib/sirena/renderer/info.rb +93 -0
- data/lib/sirena/renderer/kanban.rb +295 -0
- data/lib/sirena/renderer/mindmap.rb +396 -0
- data/lib/sirena/renderer/packet.rb +239 -0
- data/lib/sirena/renderer/pie.rb +235 -0
- data/lib/sirena/renderer/quadrant.rb +292 -0
- data/lib/sirena/renderer/radar.rb +323 -0
- data/lib/sirena/renderer/requirement.rb +371 -0
- data/lib/sirena/renderer/sankey.rb +255 -0
- data/lib/sirena/renderer/sequence.rb +424 -0
- data/lib/sirena/renderer/state_diagram.rb +328 -0
- data/lib/sirena/renderer/timeline.rb +304 -0
- data/lib/sirena/renderer/treemap.rb +152 -0
- data/lib/sirena/renderer/user_journey.rb +331 -0
- data/lib/sirena/renderer/xy_chart.rb +452 -0
- data/lib/sirena/renderer.rb +8 -0
- data/lib/sirena/svg/circle.rb +41 -0
- data/lib/sirena/svg/document.rb +103 -0
- data/lib/sirena/svg/element.rb +65 -0
- data/lib/sirena/svg/ellipse.rb +33 -0
- data/lib/sirena/svg/group.rb +71 -0
- data/lib/sirena/svg/line.rb +49 -0
- data/lib/sirena/svg/path.rb +76 -0
- data/lib/sirena/svg/polygon.rb +43 -0
- data/lib/sirena/svg/polyline.rb +35 -0
- data/lib/sirena/svg/rect.rb +57 -0
- data/lib/sirena/svg/style.rb +44 -0
- data/lib/sirena/svg/text.rb +72 -0
- data/lib/sirena/svg.rb +19 -0
- data/lib/sirena/text_measurement.rb +71 -0
- data/lib/sirena/theme/builtin/dark.yml +70 -0
- data/lib/sirena/theme/builtin/default.yml +80 -0
- data/lib/sirena/theme/builtin/high_contrast.yml +70 -0
- data/lib/sirena/theme/builtin/light.yml +70 -0
- data/lib/sirena/theme/color_palette.rb +48 -0
- data/lib/sirena/theme/effect_styles.rb +28 -0
- data/lib/sirena/theme/registry.rb +41 -0
- data/lib/sirena/theme/shape_styles.rb +28 -0
- data/lib/sirena/theme/spacing_config.rb +24 -0
- data/lib/sirena/theme/typography.rb +30 -0
- data/lib/sirena/theme.rb +69 -0
- data/lib/sirena/transform/architecture.rb +273 -0
- data/lib/sirena/transform/base.rb +199 -0
- data/lib/sirena/transform/block.rb +215 -0
- data/lib/sirena/transform/c4.rb +288 -0
- data/lib/sirena/transform/class_diagram.rb +296 -0
- data/lib/sirena/transform/er_diagram.rb +204 -0
- data/lib/sirena/transform/error.rb +39 -0
- data/lib/sirena/transform/flowchart.rb +161 -0
- data/lib/sirena/transform/gantt.rb +253 -0
- data/lib/sirena/transform/git_graph.rb +283 -0
- data/lib/sirena/transform/info.rb +39 -0
- data/lib/sirena/transform/kanban.rb +180 -0
- data/lib/sirena/transform/mindmap.rb +251 -0
- data/lib/sirena/transform/packet.rb +185 -0
- data/lib/sirena/transform/pie.rb +62 -0
- data/lib/sirena/transform/quadrant.rb +167 -0
- data/lib/sirena/transform/radar.rb +227 -0
- data/lib/sirena/transform/requirement.rb +233 -0
- data/lib/sirena/transform/sankey.rb +212 -0
- data/lib/sirena/transform/sequence.rb +143 -0
- data/lib/sirena/transform/state_diagram.rb +228 -0
- data/lib/sirena/transform/timeline.rb +139 -0
- data/lib/sirena/transform/treemap.rb +120 -0
- data/lib/sirena/transform/user_journey.rb +207 -0
- data/lib/sirena/transform/xy_chart.rb +273 -0
- data/lib/sirena/transform.rb +8 -0
- data/lib/sirena/version.rb +5 -0
- data/lib/sirena.rb +328 -0
- data/lib/tasks/benchmark.rake +532 -0
- data/lib/tasks/examples.rake +468 -0
- data/lib/tasks/generate_mermaid_fixtures.rake +363 -0
- data/lib/tasks/mermaid_fixtures.rake +46 -0
- data/scripts/extract_mermaid_tests.rb +493 -0
- data/scripts/rename_to_sirena.rb +73 -0
- data/sirena.gemspec +47 -0
- metadata +529 -0
|
@@ -0,0 +1,462 @@
|
|
|
1
|
+
= Treemap diagrams
|
|
2
|
+
:toc:
|
|
3
|
+
:toclevels: 3
|
|
4
|
+
|
|
5
|
+
== Overview
|
|
6
|
+
|
|
7
|
+
Treemap diagrams in Sirena visualize hierarchical data using nested
|
|
8
|
+
rectangles. Each branch of the hierarchy is represented by a rectangle,
|
|
9
|
+
which is then subdivided by rectangles representing its children. The area
|
|
10
|
+
of each rectangle is proportional to a specified value dimension.
|
|
11
|
+
|
|
12
|
+
Treemap diagrams are useful for:
|
|
13
|
+
|
|
14
|
+
* Visualizing hierarchical data structures
|
|
15
|
+
* Displaying proportional relationships
|
|
16
|
+
* Showing nested categories and subcategories
|
|
17
|
+
* Analyzing file system structures
|
|
18
|
+
* Representing organizational hierarchies
|
|
19
|
+
* Displaying budget allocations
|
|
20
|
+
|
|
21
|
+
== Syntax specification
|
|
22
|
+
|
|
23
|
+
=== Diagram declaration
|
|
24
|
+
|
|
25
|
+
Treemap diagrams are declared using either the `treemap` or `treemap-beta`
|
|
26
|
+
keyword:
|
|
27
|
+
|
|
28
|
+
[source,mermaid]
|
|
29
|
+
----
|
|
30
|
+
treemap
|
|
31
|
+
<diagram-content>
|
|
32
|
+
----
|
|
33
|
+
|
|
34
|
+
Or:
|
|
35
|
+
|
|
36
|
+
[source,mermaid]
|
|
37
|
+
----
|
|
38
|
+
treemap-beta
|
|
39
|
+
<diagram-content>
|
|
40
|
+
----
|
|
41
|
+
|
|
42
|
+
=== Node definitions
|
|
43
|
+
|
|
44
|
+
Nodes represent elements in the hierarchy:
|
|
45
|
+
|
|
46
|
+
[source,mermaid]
|
|
47
|
+
----
|
|
48
|
+
"Node Label"
|
|
49
|
+
"Child Node": value
|
|
50
|
+
----
|
|
51
|
+
|
|
52
|
+
Where:
|
|
53
|
+
|
|
54
|
+
* Indentation (4 spaces) indicates parent-child relationships
|
|
55
|
+
* Labels are enclosed in double quotes
|
|
56
|
+
* Leaf nodes (endpoints) have numeric values
|
|
57
|
+
* Branch nodes (containers) contain other nodes
|
|
58
|
+
|
|
59
|
+
==== Branch nodes
|
|
60
|
+
|
|
61
|
+
Branch nodes contain other nodes but don't have values:
|
|
62
|
+
|
|
63
|
+
[source,mermaid]
|
|
64
|
+
----
|
|
65
|
+
treemap
|
|
66
|
+
"Category A"
|
|
67
|
+
"Item A1": 10
|
|
68
|
+
"Item A2": 20
|
|
69
|
+
----
|
|
70
|
+
|
|
71
|
+
==== Leaf nodes
|
|
72
|
+
|
|
73
|
+
Leaf nodes are endpoints with numeric values:
|
|
74
|
+
|
|
75
|
+
[source,mermaid]
|
|
76
|
+
----
|
|
77
|
+
treemap
|
|
78
|
+
"Root"
|
|
79
|
+
"Leaf 1": 100
|
|
80
|
+
"Leaf 2": 200
|
|
81
|
+
----
|
|
82
|
+
|
|
83
|
+
==== Value separators
|
|
84
|
+
|
|
85
|
+
Values can be separated by either colon `:` or comma `,`:
|
|
86
|
+
|
|
87
|
+
[source,mermaid]
|
|
88
|
+
----
|
|
89
|
+
treemap
|
|
90
|
+
"Root"
|
|
91
|
+
"With colon": 100
|
|
92
|
+
"With comma" , 200
|
|
93
|
+
----
|
|
94
|
+
|
|
95
|
+
=== Hierarchical structure
|
|
96
|
+
|
|
97
|
+
Use indentation to create nested hierarchies:
|
|
98
|
+
|
|
99
|
+
[source,mermaid]
|
|
100
|
+
----
|
|
101
|
+
treemap-beta
|
|
102
|
+
"Level 1"
|
|
103
|
+
"Level 2"
|
|
104
|
+
"Level 3": 10
|
|
105
|
+
"Level 3B": 15
|
|
106
|
+
"Level 2B"
|
|
107
|
+
"Level 3C": 20
|
|
108
|
+
----
|
|
109
|
+
|
|
110
|
+
Each level of indentation (4 spaces) represents one level deeper in the
|
|
111
|
+
hierarchy.
|
|
112
|
+
|
|
113
|
+
=== Styling
|
|
114
|
+
|
|
115
|
+
==== CSS classes
|
|
116
|
+
|
|
117
|
+
Nodes can be assigned CSS classes for custom styling:
|
|
118
|
+
|
|
119
|
+
[source,mermaid]
|
|
120
|
+
----
|
|
121
|
+
treemap-beta
|
|
122
|
+
"Main"
|
|
123
|
+
"Important Node":::important
|
|
124
|
+
"Child": 10
|
|
125
|
+
"Secondary": 5:::secondary
|
|
126
|
+
----
|
|
127
|
+
|
|
128
|
+
==== Class definitions
|
|
129
|
+
|
|
130
|
+
Define custom styles with `classDef`:
|
|
131
|
+
|
|
132
|
+
[source,mermaid]
|
|
133
|
+
----
|
|
134
|
+
treemap-beta
|
|
135
|
+
"Root"
|
|
136
|
+
"Important": 100:::important
|
|
137
|
+
|
|
138
|
+
classDef important fill:#f96,stroke:#333,stroke-width:2px;
|
|
139
|
+
classDef secondary fill:#6cf,stroke:#333,stroke-dasharray:5 5;
|
|
140
|
+
----
|
|
141
|
+
|
|
142
|
+
=== Metadata
|
|
143
|
+
|
|
144
|
+
==== Title
|
|
145
|
+
|
|
146
|
+
Add a title to the diagram:
|
|
147
|
+
|
|
148
|
+
[source,mermaid]
|
|
149
|
+
----
|
|
150
|
+
treemap
|
|
151
|
+
title Sales by Category
|
|
152
|
+
"Products"
|
|
153
|
+
"Electronics": 5000
|
|
154
|
+
"Clothing": 3000
|
|
155
|
+
----
|
|
156
|
+
|
|
157
|
+
==== Accessibility
|
|
158
|
+
|
|
159
|
+
Add accessibility metadata:
|
|
160
|
+
|
|
161
|
+
[source,mermaid]
|
|
162
|
+
----
|
|
163
|
+
treemap
|
|
164
|
+
title My Treemap
|
|
165
|
+
accTitle: Accessible Title
|
|
166
|
+
accDescr: This is an accessible description
|
|
167
|
+
"Root"
|
|
168
|
+
"Child": 100
|
|
169
|
+
----
|
|
170
|
+
|
|
171
|
+
== Examples
|
|
172
|
+
|
|
173
|
+
=== Basic hierarchy
|
|
174
|
+
|
|
175
|
+
.Simple two-level treemap
|
|
176
|
+
[example]
|
|
177
|
+
====
|
|
178
|
+
[source,mermaid]
|
|
179
|
+
----
|
|
180
|
+
treemap
|
|
181
|
+
"Category A"
|
|
182
|
+
"Item A1": 10
|
|
183
|
+
"Item A2": 20
|
|
184
|
+
"Category B"
|
|
185
|
+
"Item B1": 15
|
|
186
|
+
"Item B2": 25
|
|
187
|
+
----
|
|
188
|
+
|
|
189
|
+
This creates a treemap with:
|
|
190
|
+
|
|
191
|
+
* Two root categories (A and B)
|
|
192
|
+
* Each category containing two items
|
|
193
|
+
* Items sized proportionally to their values
|
|
194
|
+
====
|
|
195
|
+
|
|
196
|
+
=== Multi-level hierarchy
|
|
197
|
+
|
|
198
|
+
.Deep nested structure
|
|
199
|
+
[example]
|
|
200
|
+
====
|
|
201
|
+
[source,mermaid]
|
|
202
|
+
----
|
|
203
|
+
treemap-beta
|
|
204
|
+
"Level 1"
|
|
205
|
+
"Level 2A"
|
|
206
|
+
"Level 3A": 10
|
|
207
|
+
"Level 3B": 15
|
|
208
|
+
"Level 2B"
|
|
209
|
+
"Level 3C": 20
|
|
210
|
+
"Level 3D"
|
|
211
|
+
"Level 4A": 5
|
|
212
|
+
"Level 4B": 5
|
|
213
|
+
----
|
|
214
|
+
|
|
215
|
+
This demonstrates:
|
|
216
|
+
|
|
217
|
+
* Four levels of nesting
|
|
218
|
+
* Mixed depth (some branches deeper than others)
|
|
219
|
+
* Proportional sizing at each level
|
|
220
|
+
====
|
|
221
|
+
|
|
222
|
+
=== File system visualization
|
|
223
|
+
|
|
224
|
+
.Disk space usage
|
|
225
|
+
[example]
|
|
226
|
+
====
|
|
227
|
+
[source,mermaid]
|
|
228
|
+
----
|
|
229
|
+
treemap
|
|
230
|
+
title Disk Space Usage
|
|
231
|
+
"Documents"
|
|
232
|
+
"Work": 250
|
|
233
|
+
"Personal": 180
|
|
234
|
+
"Archives": 500
|
|
235
|
+
"Media"
|
|
236
|
+
"Photos": 1200
|
|
237
|
+
"Videos": 3500
|
|
238
|
+
"Music": 450
|
|
239
|
+
"Applications"
|
|
240
|
+
"Development": 800
|
|
241
|
+
"Productivity": 350
|
|
242
|
+
"Games": 1500
|
|
243
|
+
----
|
|
244
|
+
|
|
245
|
+
This shows:
|
|
246
|
+
|
|
247
|
+
* File system hierarchy
|
|
248
|
+
* Proportional space usage
|
|
249
|
+
* Multiple root folders
|
|
250
|
+
* Different category sizes
|
|
251
|
+
====
|
|
252
|
+
|
|
253
|
+
=== Budget allocation
|
|
254
|
+
|
|
255
|
+
.Department budget
|
|
256
|
+
[example]
|
|
257
|
+
====
|
|
258
|
+
[source,mermaid]
|
|
259
|
+
----
|
|
260
|
+
treemap-beta
|
|
261
|
+
title 2024 Budget Allocation
|
|
262
|
+
"Operations"
|
|
263
|
+
"Salaries": 500000
|
|
264
|
+
"Infrastructure": 200000
|
|
265
|
+
"Supplies": 50000
|
|
266
|
+
"Research"
|
|
267
|
+
"Equipment": 150000
|
|
268
|
+
"Personnel": 300000
|
|
269
|
+
"Materials": 75000
|
|
270
|
+
"Marketing"
|
|
271
|
+
"Advertising": 180000
|
|
272
|
+
"Events": 120000
|
|
273
|
+
"Digital": 90000
|
|
274
|
+
----
|
|
275
|
+
|
|
276
|
+
This demonstrates:
|
|
277
|
+
|
|
278
|
+
* Budget breakdown by department
|
|
279
|
+
* Sub-category allocation
|
|
280
|
+
* Clear title for context
|
|
281
|
+
* Proportional visualization
|
|
282
|
+
====
|
|
283
|
+
|
|
284
|
+
=== With custom styling
|
|
285
|
+
|
|
286
|
+
.Styled treemap with priorities
|
|
287
|
+
[example]
|
|
288
|
+
====
|
|
289
|
+
[source,mermaid]
|
|
290
|
+
----
|
|
291
|
+
treemap-beta
|
|
292
|
+
title Project Tasks
|
|
293
|
+
"Development"
|
|
294
|
+
"Critical":::high
|
|
295
|
+
"Bug Fixes": 40
|
|
296
|
+
"Security": 30
|
|
297
|
+
"Normal"
|
|
298
|
+
"Features": 50
|
|
299
|
+
"Refactoring": 20
|
|
300
|
+
"Documentation":::low
|
|
301
|
+
"API Docs": 15
|
|
302
|
+
"User Guide": 25
|
|
303
|
+
|
|
304
|
+
classDef high fill:#f96,stroke:#333,stroke-width:3px;
|
|
305
|
+
classDef low fill:#6cf,stroke:#333,stroke-dasharray:5 5;
|
|
306
|
+
----
|
|
307
|
+
|
|
308
|
+
This shows:
|
|
309
|
+
|
|
310
|
+
* Custom CSS classes for priority levels
|
|
311
|
+
* Styled rectangles for visual emphasis
|
|
312
|
+
* Mixed styled and default nodes
|
|
313
|
+
====
|
|
314
|
+
|
|
315
|
+
== Features
|
|
316
|
+
|
|
317
|
+
=== Proportional sizing
|
|
318
|
+
|
|
319
|
+
Node areas are automatically calculated proportional to their values or the
|
|
320
|
+
sum of their children's values.
|
|
321
|
+
|
|
322
|
+
=== Automatic color coding
|
|
323
|
+
|
|
324
|
+
Nodes at different depth levels receive different colors automatically for
|
|
325
|
+
visual distinction.
|
|
326
|
+
|
|
327
|
+
=== Hierarchical layout
|
|
328
|
+
|
|
329
|
+
The layout algorithm automatically positions nodes based on their hierarchy
|
|
330
|
+
and proportional values.
|
|
331
|
+
|
|
332
|
+
=== Value aggregation
|
|
333
|
+
|
|
334
|
+
Parent nodes automatically calculate their total value from their children.
|
|
335
|
+
|
|
336
|
+
== Limitations
|
|
337
|
+
|
|
338
|
+
=== Currently not supported
|
|
339
|
+
|
|
340
|
+
The following features are not yet supported in Sirena:
|
|
341
|
+
|
|
342
|
+
* Custom layout algorithms (squarify, slice-and-dice, etc.)
|
|
343
|
+
* Interactive drill-down
|
|
344
|
+
* Tooltips or hover effects
|
|
345
|
+
* Custom color schemes beyond CSS classes
|
|
346
|
+
* Percentage labels
|
|
347
|
+
* Click events
|
|
348
|
+
|
|
349
|
+
=== Known issues
|
|
350
|
+
|
|
351
|
+
* Very long labels may be truncated
|
|
352
|
+
* Deep hierarchies (>4 levels) may become difficult to read
|
|
353
|
+
* Small values may produce tiny rectangles
|
|
354
|
+
|
|
355
|
+
== Best practices
|
|
356
|
+
|
|
357
|
+
=== Use meaningful labels
|
|
358
|
+
|
|
359
|
+
Give nodes clear, descriptive labels:
|
|
360
|
+
|
|
361
|
+
[source,mermaid]
|
|
362
|
+
----
|
|
363
|
+
%% Good
|
|
364
|
+
treemap
|
|
365
|
+
"Revenue by Product"
|
|
366
|
+
"Software Licenses": 50000
|
|
367
|
+
"Consulting Services": 30000
|
|
368
|
+
|
|
369
|
+
%% Less clear
|
|
370
|
+
treemap
|
|
371
|
+
"Data"
|
|
372
|
+
"A": 50000
|
|
373
|
+
"B": 30000
|
|
374
|
+
----
|
|
375
|
+
|
|
376
|
+
=== Include titles
|
|
377
|
+
|
|
378
|
+
Always add a title for context:
|
|
379
|
+
|
|
380
|
+
[source,mermaid]
|
|
381
|
+
----
|
|
382
|
+
%% Good
|
|
383
|
+
treemap
|
|
384
|
+
title Q4 Sales by Region
|
|
385
|
+
...
|
|
386
|
+
|
|
387
|
+
%% Missing context
|
|
388
|
+
treemap
|
|
389
|
+
...
|
|
390
|
+
----
|
|
391
|
+
|
|
392
|
+
=== Balance depth
|
|
393
|
+
|
|
394
|
+
Avoid extremely deep hierarchies:
|
|
395
|
+
|
|
396
|
+
[source,mermaid]
|
|
397
|
+
----
|
|
398
|
+
%% Good - 3 levels
|
|
399
|
+
treemap
|
|
400
|
+
"Continent"
|
|
401
|
+
"Country"
|
|
402
|
+
"City": 1000
|
|
403
|
+
|
|
404
|
+
%% Hard to visualize - 6+ levels
|
|
405
|
+
treemap
|
|
406
|
+
"Level 1"
|
|
407
|
+
"Level 2"
|
|
408
|
+
"Level 3"
|
|
409
|
+
"Level 4"
|
|
410
|
+
"Level 5"
|
|
411
|
+
"Level 6": 10
|
|
412
|
+
----
|
|
413
|
+
|
|
414
|
+
=== Use appropriate values
|
|
415
|
+
|
|
416
|
+
Ensure values are meaningful and proportional:
|
|
417
|
+
|
|
418
|
+
[source,mermaid]
|
|
419
|
+
----
|
|
420
|
+
%% Good - represents actual data
|
|
421
|
+
treemap
|
|
422
|
+
"Sales"
|
|
423
|
+
"North": 15000
|
|
424
|
+
"South": 12000
|
|
425
|
+
"East": 18000
|
|
426
|
+
|
|
427
|
+
%% Misleading - arbitrary values
|
|
428
|
+
treemap
|
|
429
|
+
"Sales"
|
|
430
|
+
"North": 1
|
|
431
|
+
"South": 1
|
|
432
|
+
"East": 1
|
|
433
|
+
----
|
|
434
|
+
|
|
435
|
+
=== Group related items
|
|
436
|
+
|
|
437
|
+
Organize nodes logically:
|
|
438
|
+
|
|
439
|
+
[source,mermaid]
|
|
440
|
+
----
|
|
441
|
+
%% Good - logical grouping
|
|
442
|
+
treemap
|
|
443
|
+
"Company"
|
|
444
|
+
"Engineering"
|
|
445
|
+
"Frontend": 25
|
|
446
|
+
"Backend": 30
|
|
447
|
+
"Sales"
|
|
448
|
+
"Direct": 40
|
|
449
|
+
"Channel": 35
|
|
450
|
+
|
|
451
|
+
%% Confusing - mixed grouping
|
|
452
|
+
treemap
|
|
453
|
+
"Company"
|
|
454
|
+
"Frontend": 25
|
|
455
|
+
"Sales": 40
|
|
456
|
+
"Backend": 30
|
|
457
|
+
----
|
|
458
|
+
|
|
459
|
+
== Related documentation
|
|
460
|
+
|
|
461
|
+
* <<index.adoc#,Diagram types overview>>
|
|
462
|
+
* link:https://mermaid.js.org/syntax/treemap.html[Official Mermaid treemap documentation]
|