Charts & Visual Data Modeling
Marimekko (Mekko) Chart Formula: Variable Column Widths, Cumulative X-Spans & Cell Area Share
Construct a two-dimensional Marimekko (Mosaic) market-map table: compute Segment Horizontal Width % W_j, Cumulative X-Axis Start/End Coordinates, Within-Segment Vertical Mix %, and Rectangle Area = Grand-Total Market Share!
Why consulting firms love Marimekko charts: Width * Height = Exact Share of Total Market!
A standard 100% Stacked Column chart makes a tiny $5M niche segment look just as wide and visually important as a $95M core market! A Marimekko (Mekko or Mosaic) chart solves this by encoding TWO percentage dimensions simultaneously: column j’s horizontal width W_j = 100 * Segment_Total_j / Grand_Total represents segment size along a 0%–100% X-axis, while competitor i’s vertical height H_ij = 100 * Sales_ij / Segment_Total_j represents within-segment share along a 0%–100% Y-axis!
Because rectangle area equals Width * Height, every tile’s visual area (W_j / 100) * (H_ij / 100) = Sales_ij / Grand_Total equals that cell’s exact share of the entire industry with zero distortion! Computing cumulative X-boundaries X_end,j = SUM_{k<=j} W_k lets you build variable-width stacked area polygons cleanly in any spreadsheet.
| Market Segment | Enterprise ($M) | SMB ($M) | Segment Total ($M) | Horizontal Width W_j (%) | Cumulative X-End (%) |
|---|---|---|---|---|---|
| North America | 90 | 30 | 120 | 60.00% | 60.00% |
| Europe | 35 | 15 | 50 | 25.00% | 85.00% |
| APAC | 12 | 18 | 30 | 15.00% | 100.00% |
Segment Horizontal Width Share W_j (%) of Grand Total Market
Computes 100 * (B2 + C2) / (SUM(B2:B4) + SUM(C2:C4)) for Segment 1 across Enterprise (B2:B4) and SMB (C2:C4).
=IF(OR(MIN(B2:C4) < 0, SUM(B2:C4) <= 0), "Requires Non-Negative Revenues & Positive Grand Total", ROUND(100 * (B2 + C2) / SUM(B2:C4), 2))Within-Segment Vertical Share H_11 (%) & Overall Industry Tile Area Share (%)
Evaluates 100 * B2 / (B2 + C2) (vertical height in Segment 1), whose product with W_1 / 100 equals overall market share 100 * B2 / SUM(B2:C4).
=IF(OR(MIN(B2:C4) < 0, B2 + C2 <= 0), "Segment Total Must Be Positive", ROUND(100 * B2 / (B2 + C2), 2))Try the example
Use the original values or change them to test your understanding.