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,528 @@
|
|
|
1
|
+
= Radar chart diagrams
|
|
2
|
+
:toc:
|
|
3
|
+
:toclevels: 3
|
|
4
|
+
|
|
5
|
+
== Overview
|
|
6
|
+
|
|
7
|
+
Radar charts (also known as spider charts or web charts) in Sirena visualize
|
|
8
|
+
multivariate data on axes that radiate from a central point. They are ideal for
|
|
9
|
+
comparing multiple variables across different items or showing the relative
|
|
10
|
+
performance of different attributes.
|
|
11
|
+
|
|
12
|
+
Radar charts are useful for:
|
|
13
|
+
|
|
14
|
+
* Comparing skill sets or competencies
|
|
15
|
+
* Displaying performance metrics across categories
|
|
16
|
+
* Visualizing product features or specifications
|
|
17
|
+
* Showing survey results with multiple dimensions
|
|
18
|
+
* Comparing team or individual assessments
|
|
19
|
+
* Analyzing competitive positioning
|
|
20
|
+
|
|
21
|
+
== Syntax specification
|
|
22
|
+
|
|
23
|
+
=== Diagram declaration
|
|
24
|
+
|
|
25
|
+
Radar charts are declared using the `radar-beta` keyword:
|
|
26
|
+
|
|
27
|
+
[source,mermaid]
|
|
28
|
+
----
|
|
29
|
+
radar-beta
|
|
30
|
+
axis <axis-definitions>
|
|
31
|
+
curve <dataset-definitions>
|
|
32
|
+
----
|
|
33
|
+
|
|
34
|
+
=== Axes
|
|
35
|
+
|
|
36
|
+
==== Simple axes
|
|
37
|
+
|
|
38
|
+
Axes are defined with comma-separated identifiers:
|
|
39
|
+
|
|
40
|
+
[source,mermaid]
|
|
41
|
+
----
|
|
42
|
+
radar-beta
|
|
43
|
+
axis A, B, C
|
|
44
|
+
----
|
|
45
|
+
|
|
46
|
+
==== Labeled axes
|
|
47
|
+
|
|
48
|
+
Axes can have custom labels using square brackets and quotes:
|
|
49
|
+
|
|
50
|
+
[source,mermaid]
|
|
51
|
+
----
|
|
52
|
+
radar-beta
|
|
53
|
+
axis A["Skill A"], B["Skill B"], C["Skill C"]
|
|
54
|
+
----
|
|
55
|
+
|
|
56
|
+
Where:
|
|
57
|
+
|
|
58
|
+
`axis`:: Keyword to declare axes
|
|
59
|
+
`A, B, C`:: Axis identifiers (used for data mapping)
|
|
60
|
+
`["Label"]`:: Optional human-readable label for the axis
|
|
61
|
+
|
|
62
|
+
=== Datasets (curves)
|
|
63
|
+
|
|
64
|
+
==== Positional values
|
|
65
|
+
|
|
66
|
+
Data can be provided as a comma-separated list matching axis order:
|
|
67
|
+
|
|
68
|
+
[source,mermaid]
|
|
69
|
+
----
|
|
70
|
+
radar-beta
|
|
71
|
+
axis A, B, C
|
|
72
|
+
curve dataset1{1, 2, 3}
|
|
73
|
+
----
|
|
74
|
+
|
|
75
|
+
==== Named values
|
|
76
|
+
|
|
77
|
+
Data can be mapped explicitly to axes (order-independent):
|
|
78
|
+
|
|
79
|
+
[source,mermaid]
|
|
80
|
+
----
|
|
81
|
+
radar-beta
|
|
82
|
+
axis A, B, C
|
|
83
|
+
curve dataset1{C: 3, A: 1, B: 2}
|
|
84
|
+
----
|
|
85
|
+
|
|
86
|
+
==== Labeled datasets
|
|
87
|
+
|
|
88
|
+
Datasets can have custom labels:
|
|
89
|
+
|
|
90
|
+
[source,mermaid]
|
|
91
|
+
----
|
|
92
|
+
radar-beta
|
|
93
|
+
axis A, B, C
|
|
94
|
+
curve dataset1["My Dataset"]{1, 2, 3}
|
|
95
|
+
----
|
|
96
|
+
|
|
97
|
+
Where:
|
|
98
|
+
|
|
99
|
+
`curve`:: Keyword to declare a dataset
|
|
100
|
+
`dataset1`:: Dataset identifier
|
|
101
|
+
`["Label"]`:: Optional human-readable label
|
|
102
|
+
`{values}`:: Data values (positional or named)
|
|
103
|
+
|
|
104
|
+
=== Title and metadata
|
|
105
|
+
|
|
106
|
+
==== Title
|
|
107
|
+
|
|
108
|
+
Add a title to the chart:
|
|
109
|
+
|
|
110
|
+
[source,mermaid]
|
|
111
|
+
----
|
|
112
|
+
radar-beta
|
|
113
|
+
title Skills Assessment
|
|
114
|
+
axis A, B, C
|
|
115
|
+
curve c1{1, 2, 3}
|
|
116
|
+
----
|
|
117
|
+
|
|
118
|
+
==== Accessibility metadata
|
|
119
|
+
|
|
120
|
+
Add accessibility information:
|
|
121
|
+
|
|
122
|
+
[source,mermaid]
|
|
123
|
+
----
|
|
124
|
+
radar-beta
|
|
125
|
+
title Radar diagram
|
|
126
|
+
accTitle: Radar accessible title
|
|
127
|
+
accDescr: Radar accessible description
|
|
128
|
+
axis A, B, C
|
|
129
|
+
curve c1{1, 2, 3}
|
|
130
|
+
----
|
|
131
|
+
|
|
132
|
+
Where:
|
|
133
|
+
|
|
134
|
+
`title`:: Chart title
|
|
135
|
+
`accTitle:`:: Accessible title for screen readers
|
|
136
|
+
`accDescr:`:: Accessible description for screen readers
|
|
137
|
+
|
|
138
|
+
=== Configuration options
|
|
139
|
+
|
|
140
|
+
==== Graticule
|
|
141
|
+
|
|
142
|
+
Set the grid style (polygon or circular):
|
|
143
|
+
|
|
144
|
+
[source,mermaid]
|
|
145
|
+
----
|
|
146
|
+
radar-beta
|
|
147
|
+
graticule polygon
|
|
148
|
+
----
|
|
149
|
+
|
|
150
|
+
==== Value range
|
|
151
|
+
|
|
152
|
+
Define minimum and maximum values:
|
|
153
|
+
|
|
154
|
+
[source,mermaid]
|
|
155
|
+
----
|
|
156
|
+
radar-beta
|
|
157
|
+
min 0
|
|
158
|
+
max 100
|
|
159
|
+
----
|
|
160
|
+
|
|
161
|
+
==== Ticks
|
|
162
|
+
|
|
163
|
+
Set the number of grid lines:
|
|
164
|
+
|
|
165
|
+
[source,mermaid]
|
|
166
|
+
----
|
|
167
|
+
radar-beta
|
|
168
|
+
ticks 10
|
|
169
|
+
----
|
|
170
|
+
|
|
171
|
+
==== Legend
|
|
172
|
+
|
|
173
|
+
Control legend visibility:
|
|
174
|
+
|
|
175
|
+
[source,mermaid]
|
|
176
|
+
----
|
|
177
|
+
radar-beta
|
|
178
|
+
showLegend false
|
|
179
|
+
----
|
|
180
|
+
|
|
181
|
+
Where:
|
|
182
|
+
|
|
183
|
+
`graticule`:: Grid style (`polygon` or `circular`)
|
|
184
|
+
`min`:: Minimum value for scaling
|
|
185
|
+
`max`:: Maximum value for scaling
|
|
186
|
+
`ticks`:: Number of grid circles to display
|
|
187
|
+
`showLegend`:: Whether to show the legend (`true` or `false`)
|
|
188
|
+
|
|
189
|
+
== Examples
|
|
190
|
+
|
|
191
|
+
=== Simple radar chart
|
|
192
|
+
|
|
193
|
+
.Basic three-axis radar
|
|
194
|
+
[example]
|
|
195
|
+
====
|
|
196
|
+
[source,mermaid]
|
|
197
|
+
----
|
|
198
|
+
radar-beta
|
|
199
|
+
axis A, B, C
|
|
200
|
+
curve mycurve{1, 2, 3}
|
|
201
|
+
----
|
|
202
|
+
|
|
203
|
+
This creates a simple radar with:
|
|
204
|
+
|
|
205
|
+
* Three axes (A, B, C)
|
|
206
|
+
* One dataset with values [1, 2, 3]
|
|
207
|
+
* Default styling and grid
|
|
208
|
+
====
|
|
209
|
+
|
|
210
|
+
=== Skills assessment
|
|
211
|
+
|
|
212
|
+
.Comparing team skills
|
|
213
|
+
[example]
|
|
214
|
+
====
|
|
215
|
+
[source,mermaid]
|
|
216
|
+
----
|
|
217
|
+
radar-beta
|
|
218
|
+
title Team Skills Assessment
|
|
219
|
+
axis JavaScript["JavaScript"], Python["Python"], SQL["SQL"], DevOps["DevOps"], Design["Design"]
|
|
220
|
+
curve TeamA["Team A"]{85, 70, 60, 75, 55}
|
|
221
|
+
curve TeamB["Team B"]{70, 90, 80, 65, 70}
|
|
222
|
+
----
|
|
223
|
+
|
|
224
|
+
This demonstrates:
|
|
225
|
+
|
|
226
|
+
* Labeled axes for clarity
|
|
227
|
+
* Multiple datasets for comparison
|
|
228
|
+
* Meaningful labels for both axes and datasets
|
|
229
|
+
* Real-world skill measurement scenario
|
|
230
|
+
====
|
|
231
|
+
|
|
232
|
+
=== Product comparison
|
|
233
|
+
|
|
234
|
+
.Comparing product features
|
|
235
|
+
[example]
|
|
236
|
+
====
|
|
237
|
+
[source,mermaid]
|
|
238
|
+
----
|
|
239
|
+
radar-beta
|
|
240
|
+
title Product Feature Comparison
|
|
241
|
+
axis Performance["Performance"], Usability["Usability"], Features["Features"], Price["Price"], Support["Support"]
|
|
242
|
+
curve ProductA["Product A"]{90, 85, 70, 60, 80}
|
|
243
|
+
curve ProductB["Product B"]{75, 90, 85, 85, 70}
|
|
244
|
+
curve ProductC["Product C"]{80, 75, 90, 70, 75}
|
|
245
|
+
min 0
|
|
246
|
+
max 100
|
|
247
|
+
----
|
|
248
|
+
|
|
249
|
+
This shows:
|
|
250
|
+
|
|
251
|
+
* Three products being compared
|
|
252
|
+
* Five evaluation criteria
|
|
253
|
+
* Explicit value range (0-100)
|
|
254
|
+
* Clear labeling for decision-making
|
|
255
|
+
====
|
|
256
|
+
|
|
257
|
+
=== Survey results
|
|
258
|
+
|
|
259
|
+
.Analyzing survey data
|
|
260
|
+
[example]
|
|
261
|
+
====
|
|
262
|
+
[source,mermaid]
|
|
263
|
+
----
|
|
264
|
+
radar-beta
|
|
265
|
+
title Customer Satisfaction Survey
|
|
266
|
+
accTitle: Customer satisfaction survey results
|
|
267
|
+
accDescr: Radar chart showing satisfaction scores across different aspects
|
|
268
|
+
axis Quality["Product Quality"], Service["Customer Service"], Value["Value for Money"], Delivery["Delivery Speed"], Packaging["Packaging"]
|
|
269
|
+
curve Q1Results["Q1 2024"]{85, 78, 82, 90, 88}
|
|
270
|
+
curve Q2Results["Q2 2024"]{88, 82, 85, 92, 90}
|
|
271
|
+
graticule polygon
|
|
272
|
+
min 0
|
|
273
|
+
max 100
|
|
274
|
+
----
|
|
275
|
+
|
|
276
|
+
This illustrates:
|
|
277
|
+
|
|
278
|
+
* Accessibility metadata
|
|
279
|
+
* Quarterly comparison
|
|
280
|
+
* Polygon grid style
|
|
281
|
+
* Clear value range
|
|
282
|
+
* Professional presentation
|
|
283
|
+
====
|
|
284
|
+
|
|
285
|
+
=== Named value format
|
|
286
|
+
|
|
287
|
+
.Using named values for clarity
|
|
288
|
+
[example]
|
|
289
|
+
====
|
|
290
|
+
[source,mermaid]
|
|
291
|
+
----
|
|
292
|
+
radar-beta
|
|
293
|
+
title Performance Metrics
|
|
294
|
+
axis Speed["Speed"], Memory["Memory Usage"], CPU["CPU Usage"], Reliability["Reliability"]
|
|
295
|
+
curve System1["System 1"]{Speed: 90, Memory: 70, CPU: 75, Reliability: 95}
|
|
296
|
+
curve System2["System 2"]{Reliability: 85, Speed: 80, CPU: 90, Memory: 85}
|
|
297
|
+
----
|
|
298
|
+
|
|
299
|
+
This demonstrates:
|
|
300
|
+
|
|
301
|
+
* Named value format (order-independent)
|
|
302
|
+
* Clear axis-to-value mapping
|
|
303
|
+
* Flexibility in data specification
|
|
304
|
+
====
|
|
305
|
+
|
|
306
|
+
=== Minimal configuration
|
|
307
|
+
|
|
308
|
+
.Minimal radar with options
|
|
309
|
+
[example]
|
|
310
|
+
====
|
|
311
|
+
[source,mermaid]
|
|
312
|
+
----
|
|
313
|
+
radar-beta
|
|
314
|
+
axis Mon, Tue, Wed, Thu, Fri
|
|
315
|
+
curve Activity{65, 78, 82, 88, 72}
|
|
316
|
+
ticks 5
|
|
317
|
+
showLegend false
|
|
318
|
+
min 0
|
|
319
|
+
max 100
|
|
320
|
+
----
|
|
321
|
+
|
|
322
|
+
This shows:
|
|
323
|
+
|
|
324
|
+
* Simple axis identifiers
|
|
325
|
+
* Single dataset
|
|
326
|
+
* Custom tick count
|
|
327
|
+
* Legend disabled
|
|
328
|
+
* Explicit value range
|
|
329
|
+
====
|
|
330
|
+
|
|
331
|
+
== Features
|
|
332
|
+
|
|
333
|
+
=== Multiple datasets
|
|
334
|
+
|
|
335
|
+
Compare up to multiple datasets on the same chart:
|
|
336
|
+
|
|
337
|
+
[source,mermaid]
|
|
338
|
+
----
|
|
339
|
+
radar-beta
|
|
340
|
+
axis A, B, C, D
|
|
341
|
+
curve data1{1, 2, 3, 4}
|
|
342
|
+
curve data2{2, 3, 1, 4}
|
|
343
|
+
curve data3{3, 1, 4, 2}
|
|
344
|
+
----
|
|
345
|
+
|
|
346
|
+
Each dataset is rendered with a different color from the theme palette.
|
|
347
|
+
|
|
348
|
+
=== Flexible axis count
|
|
349
|
+
|
|
350
|
+
Support for any number of axes (typically 3-12):
|
|
351
|
+
|
|
352
|
+
[source,mermaid]
|
|
353
|
+
----
|
|
354
|
+
radar-beta
|
|
355
|
+
axis A, B, C, D, E, F, G, H
|
|
356
|
+
curve data{10, 20, 30, 40, 50, 60, 70, 80}
|
|
357
|
+
----
|
|
358
|
+
|
|
359
|
+
=== Value normalization
|
|
360
|
+
|
|
361
|
+
Values are automatically normalized to fit the chart:
|
|
362
|
+
|
|
363
|
+
[source,mermaid]
|
|
364
|
+
----
|
|
365
|
+
radar-beta
|
|
366
|
+
axis A, B, C
|
|
367
|
+
curve data{100, 200, 300} # Automatically scaled
|
|
368
|
+
----
|
|
369
|
+
|
|
370
|
+
=== Custom labels
|
|
371
|
+
|
|
372
|
+
All elements support custom labels:
|
|
373
|
+
|
|
374
|
+
[source,mermaid]
|
|
375
|
+
----
|
|
376
|
+
radar-beta
|
|
377
|
+
axis A["First Metric"], B["Second Metric"], C["Third Metric"]
|
|
378
|
+
curve dataset["My Custom Name"]{1, 2, 3}
|
|
379
|
+
----
|
|
380
|
+
|
|
381
|
+
== Limitations
|
|
382
|
+
|
|
383
|
+
=== Currently not supported
|
|
384
|
+
|
|
385
|
+
The following Mermaid radar features are not yet supported in Sirena:
|
|
386
|
+
|
|
387
|
+
* Custom colors per dataset
|
|
388
|
+
* Curve-specific styling options
|
|
389
|
+
* Area opacity controls
|
|
390
|
+
* Data point markers beyond default circles
|
|
391
|
+
* Interactive tooltips
|
|
392
|
+
|
|
393
|
+
=== Known issues
|
|
394
|
+
|
|
395
|
+
* Very large numbers of axes (>12) may cause label overlap
|
|
396
|
+
* Long axis labels may require manual positioning
|
|
397
|
+
* Theme colors cycle after 10 datasets
|
|
398
|
+
|
|
399
|
+
== Best practices
|
|
400
|
+
|
|
401
|
+
=== Use appropriate axis count
|
|
402
|
+
|
|
403
|
+
Keep the number of axes manageable:
|
|
404
|
+
|
|
405
|
+
[source,mermaid]
|
|
406
|
+
----
|
|
407
|
+
%% Good - Clear and readable
|
|
408
|
+
radar-beta
|
|
409
|
+
axis A, B, C, D, E
|
|
410
|
+
curve data{1, 2, 3, 4, 5}
|
|
411
|
+
|
|
412
|
+
%% Too many - Hard to distinguish
|
|
413
|
+
radar-beta
|
|
414
|
+
axis A, B, C, D, E, F, G, H, I, J, K, L, M, N, O
|
|
415
|
+
curve data{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
|
|
416
|
+
----
|
|
417
|
+
|
|
418
|
+
=== Provide meaningful labels
|
|
419
|
+
|
|
420
|
+
Use descriptive axis and dataset labels:
|
|
421
|
+
|
|
422
|
+
[source,mermaid]
|
|
423
|
+
----
|
|
424
|
+
%% Good
|
|
425
|
+
radar-beta
|
|
426
|
+
title Employee Performance Review
|
|
427
|
+
axis Communication["Communication Skills"], Technical["Technical Skills"], Leadership["Leadership"], Teamwork["Teamwork"]
|
|
428
|
+
curve Employee1["John Doe"]{85, 90, 75, 88}
|
|
429
|
+
|
|
430
|
+
%% Less clear
|
|
431
|
+
radar-beta
|
|
432
|
+
axis A, B, C, D
|
|
433
|
+
curve c1{85, 90, 75, 88}
|
|
434
|
+
----
|
|
435
|
+
|
|
436
|
+
=== Set explicit ranges
|
|
437
|
+
|
|
438
|
+
Define min/max for consistent comparisons:
|
|
439
|
+
|
|
440
|
+
[source,mermaid]
|
|
441
|
+
----
|
|
442
|
+
radar-beta
|
|
443
|
+
axis A, B, C
|
|
444
|
+
curve data{45, 67, 89}
|
|
445
|
+
min 0
|
|
446
|
+
max 100 # Explicit range for clarity
|
|
447
|
+
----
|
|
448
|
+
|
|
449
|
+
=== Limit dataset count
|
|
450
|
+
|
|
451
|
+
Keep comparisons manageable (typically 2-5 datasets):
|
|
452
|
+
|
|
453
|
+
[source,mermaid]
|
|
454
|
+
----
|
|
455
|
+
%% Good - Clear comparison
|
|
456
|
+
radar-beta
|
|
457
|
+
axis A, B, C, D
|
|
458
|
+
curve Team1{1, 2, 3, 4}
|
|
459
|
+
curve Team2{2, 3, 1, 4}
|
|
460
|
+
curve Team3{3, 1, 4, 2}
|
|
461
|
+
|
|
462
|
+
%% Too many - Cluttered
|
|
463
|
+
radar-beta
|
|
464
|
+
axis A, B, C
|
|
465
|
+
curve d1{1, 2, 3}
|
|
466
|
+
curve d2{2, 3, 1}
|
|
467
|
+
curve d3{3, 1, 2}
|
|
468
|
+
curve d4{1, 3, 2}
|
|
469
|
+
curve d5{2, 1, 3}
|
|
470
|
+
curve d6{3, 2, 1}
|
|
471
|
+
----
|
|
472
|
+
|
|
473
|
+
=== Use consistent scales
|
|
474
|
+
|
|
475
|
+
Ensure all values are on comparable scales:
|
|
476
|
+
|
|
477
|
+
[source,mermaid]
|
|
478
|
+
----
|
|
479
|
+
%% Good - All percentages
|
|
480
|
+
radar-beta
|
|
481
|
+
axis Quality, Speed, Cost
|
|
482
|
+
curve Product{85, 90, 75}
|
|
483
|
+
min 0
|
|
484
|
+
max 100
|
|
485
|
+
|
|
486
|
+
%% Inconsistent - Mixed scales
|
|
487
|
+
radar-beta
|
|
488
|
+
axis Score, Count, Percentage
|
|
489
|
+
curve data{85, 1000, 75} # Different magnitudes
|
|
490
|
+
----
|
|
491
|
+
|
|
492
|
+
=== Choose appropriate grid
|
|
493
|
+
|
|
494
|
+
Select grid style based on your needs:
|
|
495
|
+
|
|
496
|
+
[source,mermaid]
|
|
497
|
+
----
|
|
498
|
+
%% Polygon grid - More geometric
|
|
499
|
+
radar-beta
|
|
500
|
+
graticule polygon
|
|
501
|
+
axis A, B, C
|
|
502
|
+
curve data{1, 2, 3}
|
|
503
|
+
|
|
504
|
+
%% Circular grid - More organic
|
|
505
|
+
radar-beta
|
|
506
|
+
graticule circular
|
|
507
|
+
axis A, B, C
|
|
508
|
+
curve data{1, 2, 3}
|
|
509
|
+
----
|
|
510
|
+
|
|
511
|
+
=== Include context
|
|
512
|
+
|
|
513
|
+
Add titles and descriptions:
|
|
514
|
+
|
|
515
|
+
[source,mermaid]
|
|
516
|
+
----
|
|
517
|
+
radar-beta
|
|
518
|
+
title Q3 2024 Performance Metrics
|
|
519
|
+
accTitle: Third quarter performance metrics
|
|
520
|
+
accDescr: Radar chart showing performance across five key metrics for Q3 2024
|
|
521
|
+
axis A, B, C, D, E
|
|
522
|
+
curve data{85, 90, 78, 92, 88}
|
|
523
|
+
----
|
|
524
|
+
|
|
525
|
+
== Related documentation
|
|
526
|
+
|
|
527
|
+
* link:https://mermaid.js.org/syntax/radar.html[Official Mermaid radar documentation]
|
|
528
|
+
* <<index.adoc#,Diagram types overview>>
|