--- url: https://chartbuddy.io/embed/docs/chart-types/mekko.md --- > Docs index: [llms.txt](https://chartbuddy.io/embed/docs/llms.txt) # Marimekko Variable-width 100% stacked columns. Every column is normalised to **100% height**; column width is proportional to the category total. Both axes read as shares. For **absolute** heights with variable widths, use [Bar Mekko](https://chartbuddy.io/embed/docs/chart-types/bar-mekko.md) instead. ## Identity | | | |---|---| | `chartType` | `mekko` | | Option bag | `mekko` (not `barMekko`) | | `seriesData` layout | `seriesRows` – row 0 = category header; later rows = series | | Min grid | 2 rows × 2 columns (header included) | | Orientation | Vertical composition layout (see axes notes) | | Sample | [Marimekko](https://chartbuddy.io/embed/docs/samples/mekko.md) | *** ## Minimal `chartData` ```js { chartType: 'mekko', isDataTransposed: true, seriesData: [ ['', 'Seg A', 'Seg B', 'Seg C'], ['Series 1', 40, 30, 20], ['Series 2', 25, 35, 15], ], title: { visible: true, text: 'Marimekko' }, subtitle: { visible: false, text: '' }, } ``` *** ## `seriesData` Same `seriesRows` shape as stacked bar (`isDataTransposed: true`). Values drive both segment shares (height) and category weight (width). ```js [ ['', 'Seg A', 'Seg B', 'Seg C'], ['Series 1', 40, 30, 20], ['Series 2', 25, 35, 15], ] ``` There is **no** separate width row (that is Bar Mekko). Shared layout rules: [chartData schema · seriesData](https://chartbuddy.io/embed/docs/api/chart-data.md#seriesdata-layouts). *** ## Option bag: `mekko` | Field | Default (new charts) | Role | |---|---|---| | `showTotals` | `true` | Totals visibility (prefer `annotations.totals.visible`) | | `overrides` | `{}` | Indexed style patches | Most authoring is axes, annotations, and legend – not a large `mekko` field set. Prefer editor + `getChartData()` for segment chrome. ```js { chartType: 'mekko', seriesData: [/* … */], mekko: { /* overrides if needed */ }, } ``` Do not put Bar Mekko `sort` on `mekko` – that belongs on `barMekko`. *** ## Axes & scales | Role | Behaviour | |---|---| | Domain | Linear **0–100** width domain (category thickness) | | Primary range | Linear **0–100** `%` stacks | Prefer `%` postfix and tick intervals that divide 100 (`20` / `25` / `50`). Details: [Axes · by chart type](https://chartbuddy.io/embed/docs/axes/by-chart-type.md) · [Domain axis · mekko](https://chartbuddy.io/embed/docs/axes/domain.md) · [Percent axis sample](https://chartbuddy.io/embed/docs/samples/percent-axis.md). *** ## Type-specific behaviour * Width comes from category totals of the same grid – not a dedicated width row. * Totals labels often via `annotations.totals`. *** ## Pitfalls * Using `barMekko` options / width-row layout on a classic mekko * Expecting absolute €/units on the value axis – mekko heights are shares * Hand-authoring dense domain chrome from scratch – export from the editor when possible *** ## Related * [Bar Mekko](https://chartbuddy.io/embed/docs/chart-types/bar-mekko.md) · [Stacked bar 100%](https://chartbuddy.io/embed/docs/chart-types/stacked-bar.md) * [chartData schema](https://chartbuddy.io/embed/docs/api/chart-data.md) · [Axes](https://chartbuddy.io/embed/docs/axes.md) * Sample: [Marimekko](https://chartbuddy.io/embed/docs/samples/mekko.md)