Aller au contenu
Plume Visuals
← Retour
Gamme de base

Treemap pour Power BI Treemap Plume

Le treemap qu'on attendait dans Power BI : des groupes imbriqués avec leur en-tête et leur total, un zoom au clic et des étiquettes enfin lisibles.

Tutoriels ↓

Démo interactive

Le vrai visuel Power BI, exécuté dans votre navigateur avec les données fictives du rapport d'exemple. Changez de scénario, de style ou d'année : le visuel se met à jour comme dans Power BI. Fonctions premium ★ montrées ici sans filigrane ; dans Power BI, sans licence, elles affichent « Plume Visuals · Aperçu premium ».

Treemap Plume reprend tout ce que fait le treemap de Power BI (Catégorie, Détails, Valeurs, info-bulles, couleurs par catégorie ou selon une mesure, filtrage croisé, surbrillance) et corrige ce qui lui manque : tous les niveaux affichés à la fois, chaque groupe avec son en-tête et son total, un clic sur un en-tête pour zoomer avec un fil d'Ariane pour revenir, un tri au choix et des étiquettes qui grandissent avec leur tuile et passent à la ligne au lieu d'être coupées. En premium : une année dans « Axe de lecture » anime le treemap sans que les tuiles changent de place, couleurs par tuile, divergentes ou à seuils, parts dans les étiquettes, Voronoï dans un cercle ou la carte de France, carte boursière (hausse en vert, baisse en rouge), Top N + « Autres », logos dans les tuiles et petits multiples.

Cas d'usage

  • Chiffre d'affaires par région, catégorie et produit, avec le total de chaque groupe
  • Budget par service et poste de dépense, coloré selon l'écart à l'objectif
  • Portefeuille ou marché par secteur et titre, en carte boursière (variation sur la période)
  • Stock par entrepôt et famille, animé mois après mois

GratuitInclus gratuitement

  • Treemap imbriqué : 1 à 6 champs dans Catégorie (groupes) plus Détails, tous les niveaux affichés à la fois ou un seul comme le treemap de Power BI
  • En-têtes de groupe (nom et total) colorés, neutres ou absents ; bordures de groupe ; espacements et coins arrondis
  • Zoom dans un groupe au clic sur son en-tête ou au double-clic, fil d'Ariane et bouton retour, transitions animées, clavier
  • Étiquettes lisibles : nom et valeur, taille automatique, retour à la ligne, jamais coupées en « C… » ; parts du groupe et du total dans l'info-bulle
  • Pavages carré, binaire, alterné, en rangées ou en colonnes ; tri par valeur, par nom ou ordre des données
  • Couleurs par catégorie (nuancées dans le groupe), unique ou en dégradé selon une mesure
  • Étiquettes des catégories séparées des valeurs (couleur, gras, lignes) ; dégradé automatique avec le champ Couleur
  • Formats dynamiques : bouton fx sur les couleurs et les textes, tout réglage piloté en DAX ; 100 000 lignes

PremiumFonctions premium

  • Lecture animée d'une année à l'autre avec le lecteur commun, tuiles à place stable
  • Couleurs par tuile, divergentes autour d'un milieu ou en 3 paliers par seuils ; parts du groupe ou du total dans les étiquettes
  • Voronoï : cellules polygonales dans un cercle, un hexagone ou la carte de France (153 formes), surfaces exactes à 1 %
  • Carte boursière : comparaison à la période précédente ou variation lue dans le champ Couleur, plage automatique, ▲▼ dans les étiquettes
  • Top N par groupe et tuile hachurée « Autres » qui sélectionne tout ce qu'elle regroupe
  • Logos et photos dans les tuiles (base64), petits multiples à surfaces comparables, mise en avant de catégories
  • Styles communs au catalogue (Néon, Journal, Nordique…), palettes, thème JSON

Utilisables sans clé pour les essayer, avec un filigrane.

Tutoriels

Commencez par la prise en main, puis piochez dans les cas pratiques. La page « Champs et réglages » décrit chaque option du volet Format.

  1. Prise en mainDébutant6 min de lectureUn treemap lisible dans Power BI : groupes, totaux et zoomPrise en main de Treemap Plume : préparer les données, créer la mesure, insérer le visuel, lire les groupes et leurs totaux, zoomer dans un groupe et revenir.
  2. Cas pratiquesIntermédiaire7 min de lectureTreemap Plume : 11 recettes pour vos cartes proportionnellesUn niveau à la fois, couleurs selon la marge, seuils, tri, lecture animée, carte boursière, Top N, Voronoï, petits multiples et logos : les besoins courants pas à pas.
  3. Champs et réglagesIntermédiaire16 min de lectureTreemap Plume : tous les champs et réglages expliquésChaque zone de champ et chaque réglage du volet Format de Treemap Plume : à quoi il sert, ses valeurs possibles et sa valeur par défaut, fonctions premium comprises.
  4. Bases communesBien démarrer avec les visuels PlumeInstallation, licence, styles et réglages communs à tous les visuels.

Champs à glisser dans le visuel

ChampContenu
Catégorie (groupes)1 à 6 colonnes, du plus grand groupe au plus petit (Région, Ville…)Obligatoire
DétailsUn niveau de plus, comme le treemap de Power BIFacultatif
ValeursLa mesure qui donne la surface (sans mesure : lignes comptées)Facultatif
Couleur (mesure)Taux de marge, écart à l'objectif : dégradé (divergent ★ ou seuils ★)Facultatif
ComparaisonValeur précédente : variation ▲▼ et carte boursièreFacultatifPremium
ImageLogo ou photo en base64 dans chaque tuileFacultatifPremium
Petits multiplesUn treemap par valeur, surfaces comparablesFacultatifPremium
Axe de lectureAnnée ou date : treemap animé, tuiles à place stableFacultatifPremium
InfobullesMesures supplémentairesFacultatif
Format dynamiqueMesures renommées carte.réglage (ex. title.text) : le volet Format piloté en DAXFacultatif

Il vous manque une fonction ? Nous adaptons nos visuels ou en créons sur mesure. Demander un visuel sur mesure

Un bug dans Treemap Plume, ou une idée pour l'améliorer ? Signaler un bug · Proposer une idée

Référence technique pour assistants IA

Section destinée aux assistants IA (ChatGPT, Claude, Copilot…) : tous les champs, toutes les options du volet Format avec leurs noms internes, le format des données et des exemples DAX. Générée depuis le code du visuel, version 1.1.0.0. Vous pouvez la copier dans votre assistant pour qu'il vous guide.

Version Markdown brute (/ai/visuals/treemap.md)
# Treemap Plume: technical reference for AI assistants

> Power BI custom visual by Plume Studio (Plume Visuals). Visual version **1.1.0.0**. This page is generated from the visual's source code at each site build: field names, option names and defaults are exact for this version.

Use it to help someone build a report with Treemap Plume: which fields to drag, how to shape the data, which Format pane option to change, or how to write the visual's settings in a PBIP `visual.json` file.

- Product page: https://plumevisuals.com/en/visuals/treemap (French: https://plumevisuals.com/fr/visuels/treemap)
- Summary: The treemap Power BI was missing: nested groups with their header and total, click to zoom, and labels you can actually read.
- Power BI visual GUID (`visualType`): `plumeTreemap7562F40DD0CD4981BD6A21FCA2485191`
- Power BI visuals API: 5.11.1
- Support: https://plumevisuals.com/support · contact@plumevisuals.com
- Index of everything on the site for AI assistants: https://plumevisuals.com/llms.txt

## What the visual does

Treemap Plume (identifier `treemap`) is a Power BI custom visual (version 1.1.0.0, installed from its `.pbiviz` file; AppSource submission in preparation) that draws **treemaps**: rectangles split into tiles whose area is proportional to a value, nested by category. It covers everything the built-in treemap does (Category, Details, Values, Tooltips, squarified / binary / alternating tiling, gaps between nodes and groups, category and data labels, colors per category, conditional colors, cross-filtering and highlighting) and fixes its known gaps.

**New in version 1.1.0.0 (30/10/2026):** Free native-parity additions: **category labels** separate from data labels (show, bold, lines, color) and an automatic gradient when the Color field is filled.

- **Nested hierarchy**: 1 to 6 fields in Category (groups) plus Details, all levels shown at once; each group has a **header** (name and total) and optional borders. `layout.depth` = 1 shows one level at a time like the built-in treemap (double-click a tile to drill down).
- **Tiling**: squarified (default, near-square tiles), binary, alternating (columns at the first level, rows at the next), rows, columns; ★ Voronoi (polygonal cells) inside a circle or any of 153 shapes (map of France, heart, hexagon…), areas exact within 1%.
- **Zoom into a group**: click a header (Ctrl + click selects the whole group instead), double-click a tile, breadcrumb and ↑ button to go back, animated transitions; keyboard Alt + Down / Backspace. Zoom is session state, never saved.
- **Readable labels**: name, value, ★ share of the group or of the total, change ▲▼ (with Comparison ★); text grows with the tile (auto size between a minimum and a maximum), wraps on spaces and after hyphens, and a label that does not fit is hidden rather than cut to "C…".
- **Sort**: value descending (default) or ascending, name A → Z / Z → A (natural order), data order (the model's sort-by-column).
- **Play axis ★** (premium since the free / premium rebalancing of 2026-10-22): a year or a date in `play` animates the treemap with the shared Plume player (play / pause, slider, speed, loop, large current value); with `layout.stable` (on) tiles keep their place from frame to frame (rows of the squarified layout computed on the total of all frames).
- Above 4,000 visible tiles, the smallest are merged into their group's color (message); 100,000 rows render in about 2 seconds.

## Free vs premium (★)

- Every feature works without a key and nothing is ever blocked. Free features never show a watermark.
- Shared Style card (the same in every Plume visual): the styles `none`, `minimal` and `blackWhite`, the two Plume gradient palettes (`crest`, `crestDiverging`), "Follow report theme" and all custom colors are **free**; every other `style.preset`, the other gradient palettes (`style.palette`) and `style.themeJson` ("Theme JSON ★") are **premium**.
- Free in Treemap Plume: the whole hierarchy, headers, borders, every tiling except Voronoi, zoom, breadcrumb, sort, labels (name, value), the colorings `category`, `single`, `gradient`, the Color field, cross-filtering and highlighting, tooltips (with the shares of the group and of the total).
- Premium features of Treemap Plume: the `play` role (Play axis ★: watermark as soon as the field holds data, even one frame); `dataColors.mode` = `leaf`, `diverging`, `rules`, `change` (stock map) or `highlight`; `labels.percent` = `parent` or `total` (labels shown); `layout.algorithm` = `voronoi` (any `layout.shape`); `layout.topN`; the `comparison` role (Comparison ★); the `image` role (Image ★); the `multiples` role (Small multiples ★).
- Without a valid key, a premium feature in use shows, in edit mode, a "Premium preview" note in the footer; in reading view, **"Plume Visuals · Premium preview"** (French « Plume Visuals · Aperçu premium ») is repeated lightly across the whole visual, without catching the mouse. It disappears once a key is pasted in **Format › Plume Studio License › License key** (`license.key`), the **first card** of the Format pane. Premium options and list values have " ★" appended to their label.
- Accepted keys: only keys starting with `PLUM1.` shown in the buyer's account on plumevisuals.com, checked offline (Ed25519 signature), covering `treemap` or the whole catalog. In edit mode, a wrong key shows "Invalid license key", "License expired (date)" or "This key does not cover this visual".
- Licenses last one year (one-time payment, no automatic renewal). Prices: 39 € personal, 99 € SME, 299 € enterprise per year, or the catalog pack.

## Expected data shape

One row per combination of categories (Power BI groups the rows), with a measure for the size.

| Region (`category`) | Category (`category`) | Revenue (`values`) | Margin rate (`colorBy`) | Revenue 2024 (`comparison`) |
|---|---|---|---|---|
| London | Furniture | 41,200 | 34% | 38,100 |
| London | Lighting | 18,900 | 52% | 20,400 |

- **Category (groups)** (`category`, « Catégorie (groupes) », 1 to 6 columns, required unless Details is filled): the levels, from the largest group to the smallest, in the order of the well. Blank values form a "(Blank)" tile.
- **Details** (`details`, « Détails », 1 column): one more level, like the built-in treemap.
- **Values** (`values`, « Valeurs », 1 measure): the area. Without it, rows are counted. Negative or blank values count as 0 (message in edit mode).
- **Color (measure)** (`colorBy`, « Couleur (mesure) »): read by the `gradient`, `diverging` ★ and `rules` ★ colorings; for a group shown as one tile, the size-weighted average.
- **Comparison ★** (`comparison`, « Comparaison ★ »): previous value; change = (value − comparison) / |comparison|, shown as "▲ +12%" in labels and tooltips, colors with `change`.
- **Image ★** (`image`, « Image ★ », text measure or column): `data:image/...;base64,...`, raw base64 or SVG text; web addresses are never loaded.
- **Small multiples ★** (`multiples`, « Petits multiples ★ », 1 column): one treemap per value; `smallMultiples.sameScale` makes each panel's area proportional to its total.
- **Play axis ★** (`play`, « Axe de lecture ★ », 1 column): numbers and dates ascending, texts in data order; integer years without a format are written "2024".
- **Tooltips** (`tooltips`) and **Dynamic format** (`format`, see below).
- Volume of data: windows of 30,000 rows, more fetched with `fetchMoreData` up to 100,000 rows.

## DAX recipes

```dax
Revenue = SUM ( Sales[Amount] )
Margin rate = DIVIDE ( SUM ( Sales[Margin] ), [Revenue] )          // Color (measure), gradient (free)
Revenue 2024 = CALCULATE ( [Revenue], Sales[Year] = "2024" )        // Comparison ★, stock map
Variance to target % = DIVIDE ( [Revenue] - [Target], [Target] )    // Color (measure), diverging ★ around 0
// Image ★ longer than 32,766 characters: join chunks stored one per row
Logo = CONCATENATEX ( Images, Images[Chunk], "", Images[Chunk index], ASC )
```

## Interactions with the report

- Click a tile: cross-filter on its whole path (and its small multiple, not the play-axis value); Ctrl for several; click the hatched "Others" tile = all merged categories. Ctrl + click a header selects the whole group. Click an empty area clears.
- Cross-highlighting from other visuals: the highlighted part of each tile is drawn at full color from the bottom, the rest faded.
- Hover: Power BI tooltip (full path, value, share of the group and of the total, Color, Comparison and change, Tooltips measures); report page tooltips are supported. Hovering a legend category dims the other groups.
- Context menu everywhere (tile, header, empty area, landing page).
- Keyboard: Tab to the treemap, arrows from tile to tile, Enter selects, Esc clears, Alt + Down zooms into the focused tile's group, Backspace or Alt + Up zooms out; the play bar has its own keys (Space, arrows, Home, End). High contrast, ARIA labels, French and English.

## Dynamic formats

- **fx button** (Power BI conditional formatting) on colors and texts of the Format pane, and on each category color (`dataColors`, one color per category).
- **"Dynamic format" well** (`format`): measures renamed `card.setting` (e.g. `title.text`, `dataColors.mode`, `layout.depth`) drive any setting and win over the fixed value. Driving a ★ setting by DAX still shows the watermark without a key.

```dax
// renamed title.text
Treemap title = "Revenue by region · " & FORMAT ( CALCULATE ( [Revenue], ALLSELECTED () ), "€#,0" )
```

## Format pane: option IDs

- Card order: `license`, `style`, `dataColors`, `layout`, `groups`, `labels`, `zoom`, `legend`, `images`, `smallMultiples`, `play`, `tooltip`, `interaction`, then `title`, `source`, `container`, `texts`. Format pane in version 1.1.0.0 (30/10/2026), top to bottom: `license`, `style`, `dataColors`, `layout`, `groups`, `labels`, `categoryLabels`, `zoom`, `legend`, `images`, `smallMultiples`, `play`, `tooltip`, `interaction`, `title`, `source`, `container`, `texts`. Settings moved or renamed in this version keep working in older reports (the old names are still read).
- `dataColors`: `mode` (`category` | `leaf` ★ | `single` | `gradient` | `diverging` ★ | `rules` ★ | `change` ★ | `highlight` ★), `single`, `fill`, `shade` (on), `gradMin`, `gradMax`, `divMid` (`0`), `rule1`, `rule2`, `ruleLow` (#C0392B), `ruleMid` (#B8BCC6), `ruleHigh` (#2E7D4F), `changeRange` (0.1–1000, 3), `lowerBetter`, `highlightNames`, `highlightColor`, `othersColor`.
- `layout`: `algorithm` (`squarify` | `binary` | `sliceDice` | `slice` | `dice` | `voronoi` ★), `shape` (153 shape IDs, default `circle`), `sort` (`valueDesc` | `valueAsc` | `nameAsc` | `nameDesc` | `data`), `stable` (on), `depth` (0–7, 0), `nodeGap` (0–12, 1), `groupGap` (0–24, 3), `tileRadius` (0–16, 0), `topN` ★, `topNCount` (1–500, 10), `othersLabel`.
- `groups`: `headers` (on), `headerSize` (7–24, 10), `headerBold` (on), `headerValue` (on), `headerFill` (`auto` | `neutral` | `none`), `headerColor`, `borders`, `borderWidth` (0.5–6, 1), `borderColor`, `tileBorder`.
- `labels`: `show` (on), `categoryLabels.show` (on), `showValue` (on), `percent` (`none` | `parent` ★ | `total` ★), `change` (on), `position` (`topLeft` | `center`), `autoSize` (on), `fontSize` (6–40, 10), `maxSize` (8–80, 26), `categoryLabels.wrap` (1–6, 2), `minTile` (0–200, 24), `color`, `categoryLabels.bold` (on), `units` (`auto` | `none` | `k` | `m` | `b`), `decimals` (-1–6, -1), `prefix`, `suffix`.
- `zoom`: `headerClick` (on), `doubleClick` (on), `breadcrumb` (on), `rootLabel`.
- `legend`: `show` (on), `position` (`top` | `bottom` | `right` | `left`), `align` (`left` | `center` | `right`), `showTitle`, `titleText`, `fontSize` (6–24, 9), `color`, `interactive` (on).
- `images`: `fit` (`contain` | `cover`), `size` (10–100, 55), `opacity` (5–100, 100), `round`.
- `smallMultiples`: `columns` (0–12, 0), `sameScale` (on), `titleSize` (7–24, 11), `gap` (0–40, 12).
- `play` (card « Lecture ★ » / "Playback ★", shown with the Play axis ★ field): `start` (`last` | `first`), `speed` (100–10000, 1000), `loop`, `autoPlay`, `transition` (on), `controls` (on), `position` (`bottom` | `top`), `ticks` (`auto` | `all` | `none`), `tickLabels` (on), `stepButtons` (on), `speedButton` (on), `showLabel` (on), `labelSize` (12–160, 44), `labelPosition` (`bottomRight` | `topRight` | `topLeft` | `bottomLeft` | `center`).
- `tooltip`: `show` (on), `path` (on), `shareParent` (on), `shareTotal` (on).
- `interaction`: `hover` (on), `dim` (5–80, 25).

## Editing a PBIP report (visual.json)

`visualType` is the visual GUID, `queryState` keys are the data role names, `objects` keys are the option IDs. Booleans `true` / `false`, numbers suffixed with `D`, strings and enumeration values in single quotes.

```json
{
  "visualType": "plumeTreemap7562F40DD0CD4981BD6A21FCA2485191",
  "query": {
    "queryState": {
      "category": { "projections": [
        { "field": { "Column": { "Expression": { "SourceRef": { "Entity": "Sales" } }, "Property": "Region" } }, "queryRef": "Sales.Region", "nativeQueryRef": "Region" },
        { "field": { "Column": { "Expression": { "SourceRef": { "Entity": "Sales" } }, "Property": "Category" } }, "queryRef": "Sales.Category", "nativeQueryRef": "Category" } ] },
      "values": { "projections": [ { "field": { "Measure": { "Expression": { "SourceRef": { "Entity": "Sales" } }, "Property": "Revenue" } }, "queryRef": "Sales.Revenue", "nativeQueryRef": "Revenue" } ] }
    }
  },
  "objects": {
    "labels":     [ { "properties": { "position": { "expr": { "Literal": { "Value": "'center'" } } } } } ],
    "dataColors": [ { "properties": { "mode": { "expr": { "Literal": { "Value": "'category'" } } } } } ],
    "layout":     [ { "properties": { "depth": { "expr": { "Literal": { "Value": "0D" } } } } } ]
  }
}
```

The custom visual package must also be embedded in the report (Power BI does this when the visual is imported from the `.pbiviz` file).

## Styles and theme JSON

- `style.preset` takes one of the 20 style IDs shared by every Plume visual: `none`, `minimal`, `blackWhite`, `press`, `vintage`, `earth`, `nordic`, `executive`, `accessible`, `pastel`, `bauhaus`, `climate`, `blueprint`, `unknownPleasures`, `dark`, `neon`, `terminal`, `infographic`, `cockpit`, `hologram`. The category colors come from the style's categorical palette (or Series 1 to 8 of the custom colors); gradients from its sequential and diverging palettes; the style's `fill` token (gradient, glass, hatch…) is applied to the tiles.
- `style.themeJson` (Theme JSON ★): a JSON theme as plain text (format v2 with optional `extends` and groups `colors`, `palettes`, `typography`, `shape`, `table`, `marks`, `effects`). Full reference: https://plumevisuals.com/ai/tutorials/en/themes-json.md.

## Common pitfalls

- The landing page stays: no field in Category (groups) or Details.
- Levels inverted: the fields are in the wrong order in Category (groups).
- All tiles the same size: Values is empty (rows counted).
- "… negative value(s) ignored": negative values have no area; use the `diverging` ★ coloring with a variance measure, or Waterfall Plume.
- A tile has no label: it is too small (`labels.minTile`, auto size); zoom into its group.
- Voronoi falls back to squarified: more than 1,200 cells shown; use Top N ★ or fewer levels (`layout.depth`).
- Watermark visible: Voronoi, the `change` or `highlight` coloring, Top N, a Comparison, Image or Small multiples field, a ★ style or a theme JSON, without a valid key.
- The visual makes no network request: data, images and license key stay in the report.

## Features that do NOT exist (do not suggest them)

Power BI's own drill-down buttons (the visual drills inside itself: zoom, breadcrumb, `layout.depth`), circle packing, a sparkline inside each tile, annotations, drag-and-drop to reorder tiles, images loaded from a URL, exporting the treemap as an image, negative areas.

## Data fields (wells)

Internal name = data role name (PBIP `queryState` key). Labels as shown in Power BI (English / French). ★ = premium.

| Internal name | Label (EN) | Label (FR) | Kind | Max fields | Description |
|---|---|---|---|---|---|
| `category` | Category (groups) | Catégorie (groupes) | column | 6 | 1 to 6 fields, from the largest groups to the smallest (e.g. Region, Country, City). |
| `details` | Details | Détails | column | 1 | Splits each tile into smaller tiles of the same color (like the Power BI treemap). |
| `values` | Values | Valeurs | measure | 1 | Measure that sizes the tiles (without it, rows are counted). Negative values are ignored. |
| `colorBy` | Color (measure) | Couleur (mesure) | measure | 1 | Measure that colors the tiles (gradient, diverging ★ or thresholds ★: Data colors card): margin rate, satisfaction… |
| `comparison` | Comparison ★ | Comparaison ★ | measure | 1 | Previous value (e.g. last year, yesterday's close): change ▲▼ in labels and tooltips, stock map coloring. |
| `image` | Image ★ | Image ★ | measure | 1 | Text measure or column with a base64 image (data:image/png;base64,…): logo or photo in each tile. Web addresses are never loaded. |
| `multiples` | Small multiples ★ | Petits multiples ★ | column | 1 | One treemap per value of this field, side by side. |
| `play` | Play axis ★ | Axe de lecture ★ | column | 1 | Premium: a date, a year or an ordered category: the treemap moves from one value to the next (play button), stable layout. |
| `tooltips` | Tooltips | Infobulles | measure | several |  |
| `format` | Dynamic format | Format dynamique | measure | several | Measures named card.setting (e.g. title.fontSize): drive any Format option with DAX |

Data view: categorical, categories = `category` + `details` + `multiples` + `play` (one row per combination), 30,000 rows per data window (more fetched automatically); measures = `values`, `colorBy`, `comparison`, `image`, `tooltips`, `format`.
Capabilities: supportsHighlight, supportsKeyboardFocus, supportsMultiVisualSelection, supportsLandingPage, supportsEmptyDataView.
Network access: none (no privileges requested, no external request).

## Format pane options (166)

Columns: option ID (`object.property`), labels EN / FR as shown in Power BI, control type, PBIP literal type, default value, allowed values, notes.

### Plume Studio License / Licence Plume Studio (`license`, Format pane)

| Option ID | Label (EN) | Label (FR) | Control | Type | Default | Allowed values | Notes |
|---|---|---|---|---|---|---|---|
| `license.buy` | Get a license | Obtenir une licence | info | text | `plumevisuals.com` |  |  |
| `license.key` | License key | Clé de licence | text | text | (empty) |  | Paste the key received after purchase on plumevisuals.com (starts with PLUM1.). Checked offline. |
| `license.showOwner` | Show license holder (edit mode) | Afficher le titulaire (mode édition) | toggle | bool | `true` | true / false |  |

### Style (`style`, Format pane)

**Style**

| Option ID | Label (EN) | Label (FR) | Control | Type | Default | Allowed values | Notes |
|---|---|---|---|---|---|---|---|
| `style.preset` | Style | Style | dropdown | enumeration | `none` | `none` None; `minimal` Minimal; `blackWhite` Black & White; `press` Newspaper ★; `vintage` Vintage (antique plate) ★; `earth` Earth ★; `nordic` Nordic ★; `executive` Executive ★; `accessible` Accessible (high legibility) ★; `pastel` Pastel ★; `bauhaus` Bauhaus (pop) ★; `climate` Climate ★; `blueprint` Blueprint ★; `unknownPleasures` Unknown Pleasures ★; `dark` Graphite (dark) ★; `neon` Neon ★; `terminal` Terminal (Matrix) ★; `infographic` Infographic ★; `cockpit` Cockpit (HUD) ★; `hologram` Hologram ★ | Complete look shared by all Plume visuals: colors, three palettes, fonts, frame, table header, marks and effects. Customize colors below. |
| `style.themeJson` | Theme JSON ★ | Thème JSON ★ | textarea | text | (empty) |  | Paste a JSON theme: see the 'JSON themes' tutorial on plumevisuals.com |
| `style.followTheme` | Follow report theme | Suivre le thème du rapport | toggle | bool | `false` | true / false | Text, background, accent and data colors come from the Power BI report theme. |
| `style.reverse` | Reverse gradients | Inverser les dégradés | toggle | bool | `false` | true / false |  |

**Custom colors / Couleurs personnalisées**

| Option ID | Label (EN) | Label (FR) | Control | Type | Default | Allowed values | Notes |
|---|---|---|---|---|---|---|---|
| `style.customColors` | Customize colors | Personnaliser les couleurs | toggle | bool | `false` | true / false | Start from the style and pick your own colors. A color left empty keeps the style's color. |
| `style.colorBackground` | Background | Fond | color | fill | (empty) | hex color | Visible when `style.customColors` = `true` |
| `style.colorText` | Text | Texte | color | fill | (empty) | hex color | Visible when `style.customColors` = `true` |
| `style.colorMuted` | Secondary text | Texte secondaire | color | fill | (empty) | hex color | Visible when `style.customColors` = `true` |
| `style.colorGrid` | Lines and grid | Traits et grille | color | fill | (empty) | hex color | Visible when `style.customColors` = `true` |
| `style.colorAccent` | Accent | Accent | color | fill | (empty) | hex color | Visible when `style.customColors` = `true` |
| `style.colorPositive` | Favorable | Favorable | color | fill | (empty) | hex color | Visible when `style.customColors` = `true` |
| `style.colorNegative` | Unfavorable | Défavorable | color | fill | (empty) | hex color | Visible when `style.customColors` = `true` |
| `style.series1` | Series 1 | Série 1 | color | fill | (empty) | hex color | Visible when `style.customColors` = `true` |
| `style.series2` | Series 2 | Série 2 | color | fill | (empty) | hex color | Visible when `style.customColors` = `true` |
| `style.series3` | Series 3 | Série 3 | color | fill | (empty) | hex color | Visible when `style.customColors` = `true` |
| `style.series4` | Series 4 | Série 4 | color | fill | (empty) | hex color | Visible when `style.customColors` = `true` |
| `style.series5` | Series 5 | Série 5 | color | fill | (empty) | hex color | Visible when `style.customColors` = `true` |
| `style.series6` | Series 6 | Série 6 | color | fill | (empty) | hex color | Visible when `style.customColors` = `true` |
| `style.series7` | Series 7 | Série 7 | color | fill | (empty) | hex color | Visible when `style.customColors` = `true` |
| `style.series8` | Series 8 | Série 8 | color | fill | (empty) | hex color | Visible when `style.customColors` = `true` |
| `style.palette` | Gradient palette | Palette du dégradé | dropdown | enumeration | `auto` | `auto` Style or theme palette; `crest` Plume (sequential); `crestDiverging` Plume (diverging); `viridis` Viridis ★; `magma` Magma ★; `inferno` Inferno ★; `cividis` Cividis (colorblind-safe) ★; `warmingStripes` Warming stripes ★; `rdYlBu` Red–Yellow–Blue ★; `brBG` Brown–Teal (drought) ★; `spectral` Spectral ★; `blues` Blues ★; `reds` Reds ★; `grays` Grays ★; `press` Press (ink and paper) ★; `nordic` Nordic ★; `earth` Earth (ochre to umber) ★; `pastel` Pastel ★; `okabeIto` Okabe-Ito (colorblind-safe) ★ | Visible when `style.customColors` = `true`. Gradient from the catalog (Viridis, Magma…). The start, middle and end colors below replace it. |
| `style.scaleLow` | Gradient: start | Dégradé : début | color | fill | (empty) | hex color | Visible when `style.customColors` = `true` |
| `style.scaleMid` | Gradient: middle (diverging) | Dégradé : milieu (écarts) | color | fill | (empty) | hex color | Visible when `style.customColors` = `true` |
| `style.scaleHigh` | Gradient: end | Dégradé : fin | color | fill | (empty) | hex color | Visible when `style.customColors` = `true` |

**Text / Texte**

| Option ID | Label (EN) | Label (FR) | Control | Type | Default | Allowed values | Notes |
|---|---|---|---|---|---|---|---|
| `style.fontFamily` | Font | Police | font | formatting | `Segoe UI, wf_segoe-ui_normal, helvetica, arial, sans-serif` |  | Used by every text of the visual (title, axes, labels, cells). |

**Animations**

| Option ID | Label (EN) | Label (FR) | Control | Type | Default | Allowed values | Notes |
|---|---|---|---|---|---|---|---|
| `style.animate` | Animations | Animations | toggle | bool | `true` | true / false | Smooth transitions when data changes. Automatically disabled when the system asks to reduce motion. |

### Layout / Disposition (`layout`, Format pane)

**Tiling / Algorithme**

| Option ID | Label (EN) | Label (FR) | Control | Type | Default | Allowed values | Notes |
|---|---|---|---|---|---|---|---|
| `layout.algorithm` | Tiling method | Méthode de pavage | dropdown | enumeration | `squarify` | `squarify` Squarified; `binary` Binary; `sliceDice` Alternating (columns, rows); `slice` Rows; `dice` Columns; `voronoi` Voronoi (cells) ★ | Squarified: near-square tiles (most readable). Voronoi ★: polygonal cells inside a shape (circle, map of France…). |
| `layout.shape` | Voronoi shape | Forme du Voronoï | dropdown | enumeration | `circle` | `circle` Circle; `square` Square; `roundedSquare` Rounded square; `rectangle` Rectangle; `triangle` Triangle; `diamond` Diamond; `hexagon` Hexagon; `star` Star; `heart` Heart; `ellipse` Ellipse ★; `pentagon` Pentagon ★; `octagon` Octagon ★; `rightTriangle` Right triangle ★; `parallelogram` Parallelogram ★; `trapezoid` Trapezoid ★; `ring` Ring ★; `semicircle` Semicircle ★; `arch` Arch ★; `capsule` Pill ★; `star6` Six-pointed star ★; `seal` Seal ★; `cross` Cross ★; `arrow` Arrow; `arrowUp` Arrow up ★; `arrowDown` Arrow down ★; `arrowLeft` Arrow left ★; `doubleArrow` Double arrow ★; `chevron` Chevron ★; `check` Check mark ★; `close` Close (X) ★; `plus` Plus ★; `minus` Minus ★; `warning` Warning ★; `info` Information ★; `playButton` Play button ★; `bubble` Speech bubble; `thought` Thought bubble ★; `flag` Flag ★; `bookmark` Bookmark ★; `tag` Tag ★; `bolt` Lightning bolt ★; `shield` Shield ★; `award` Award ★; `puzzle` Puzzle piece ★; `gear` Gear ★; `lock` Lock ★; `key` Key ★; `bell` Bell ★; `eye` Eye ★; `cloud` Cloud; `drop` Drop; `sun` Sun ★; `moon` Moon ★; `snowflake` Snowflake ★; `leaf` Leaf ★; `pine` Pine tree ★; `tree` Tree ★; `flower` Flower ★; `mountain` Mountain ★; `wave` Wave ★; `flame` Flame ★; `umbrella` Umbrella ★; `apple` Apple ★; `fish` Fish ★; `paw` Paw print ★; `rain` Rain ★; `sprout` Sprout ★; `person` Person; `man` Man ★; `woman` Woman ★; `child` Child ★; `people` Group of people ★; `bust` User bust ★; `house` House; `building` Office building ★; `factory` Factory ★; `castle` Castle ★; `shop` Shop ★; `bank` Bank ★; `hospital` Hospital ★; `book` Book ★; `envelope` Envelope ★; `phone` Phone ★; `laptop` Laptop ★; `monitor` Monitor ★; `gift` Gift ★; `clock` Clock ★; `calendar` Calendar ★; `pencil` Pencil ★; `lightbulb` Light bulb ★; `cup` Trophy ★; `crown` Crown ★; `trashCan` Trash can ★; `barrel` Barrel; `bottle` Bottle; `wineGlass` Wine glass; `glass` Glass; `mug` Mug ★; `jar` Jar ★; `bucket` Bucket ★; `battery` Battery; `batteryVertical` Vertical battery; `thermometer` Thermometer; `testTube` Test tube ★; `tank` Tank ★; `funnel` Funnel ★; `hourglass` Hourglass ★; `bag` Bag ★; `piggyBank` Piggy bank ★; `flask` Flask ★; `beaker` Beaker ★; `can` Can ★; `coffeeCup` Coffee cup ★; `vase` Vase ★; `milkCarton` Milk carton ★; `france` Metropolitan France ★; `africa` Africa ★; `australia` Australia ★; `southAmerica` South America ★; `pin` Map pin ★; `globe` Globe ★; `foldedMap` Folded map ★; `compass` Compass ★; `city` City skyline ★; `target` Target ★; `barChart` Bar chart ★; `pieChart` Pie chart ★; `trendUp` Trend up ★; `coin` Coin ★; `banknote` Banknote ★; `wallet` Wallet ★; `creditCard` Credit card ★; `cart` Shopping cart ★; `briefcase` Briefcase ★; `percent` Percent ★; `podium` Podium ★; `megaphone` Megaphone ★; `gem` Gem ★; `medal` Medal ★; `clipboard` Clipboard ★; `handshake` Handshake ★; `car` Car ★; `truck` Truck ★; `bus` Bus ★; `bicycle` Bicycle ★; `plane` Plane ★; `boat` Sailboat ★; `train` Train ★; `rocket` Rocket ★; `helicopter` Helicopter ★; `ship` Cargo ship ★; `fuel` Fuel pump ★; `scooter` Scooter ★ | Visible when `layout.algorithm` = `voronoi`. Outline the cells share (shapes without ★: circle, square, hexagon, heart…). |
| `layout.sort` | Tile order | Ordre des tuiles | dropdown | enumeration | `valueDesc` | `valueDesc` Value, descending; `valueAsc` Value, ascending; `nameAsc` Name (A → Z); `nameDesc` Name (Z → A); `data` Data order (Power BI sort) | The first tile is at the top left. "Data order" follows the model's sort-by-column (months, priorities…). |
| `layout.stable` | Stable layout while playing | Disposition stable pendant la lecture | toggle | bool | `true` | true / false | Play axis: tiles grow, shrink and slide, never jumping from one place to another. |
| `layout.depth` | Levels shown at once (0 = all) | Niveaux affichés à la fois (0 = tous) | number | integer | `0` | 0 to 7 | 1 = like the Power BI treemap: one level, double-click to drill down. 0 = the whole nested hierarchy. |

**Spacing and corners / Espacements et angles**

| Option ID | Label (EN) | Label (FR) | Control | Type | Default | Allowed values | Notes |
|---|---|---|---|---|---|---|---|
| `layout.nodeGap` | Space between tiles (px) | Espace entre les tuiles (px) | number | integer | `1` | 0 to 12 |  |
| `layout.groupGap` | Space between groups (px) | Espace entre les groupes (px) | number | integer | `3` | 0 to 24 |  |
| `layout.tileRadius` | Tile corner radius | Arrondi des tuiles | number | integer | `0` | 0 to 16 |  |

**Top N and "Others" / Top N et « Autres »**

| Option ID | Label (EN) | Label (FR) | Control | Type | Default | Allowed values | Notes |
|---|---|---|---|---|---|---|---|
| `layout.topN` | Top N + "Others" ★ | Top N + « Autres » ★ | toggle | bool | `false` | true / false | In each group, the N largest tiles; the rest is merged into a hatched "Others" tile. |
| `layout.topNCount` | Tiles kept per group | Nombre de tuiles gardées par groupe | number | integer | `10` | 1 to 500 | Visible when `layout.topN` = `true` |
| `layout.othersLabel` | "Others" label | Libellé de « Autres » | text | text | (empty) |  | Visible when `layout.topN` = `true` |

### Data colors / Couleurs des données (`dataColors`, Format pane)

Per-item card: Power BI shows it once per series, category, column or KPI (an "Apply settings to" list where relevant). In PBIP `visual.json`, each entry of `objects.dataColors` carries a `selector` (`metadata` = the field's queryRef, or `data` for a category value); an entry without a selector applies to all items.

| Option ID | Label (EN) | Label (FR) | Control | Type | Default | Allowed values | Notes |
|---|---|---|---|---|---|---|---|
| `dataColors.mode` | Coloring | Coloration | dropdown | enumeration | `category` | `category` One color per category (top level); `leaf` One color per tile (last level) ★; `single` Single color; `gradient` Gradient by a measure; `diverging` Diverging around a midpoint ★; `rules` Thresholds (3 colors) ★; `change` Stock map: change (Comparison field) ★; `highlight` Highlight ★ |  |
| `dataColors.single` | Color | Couleur | color | fill | (empty) | hex color |  |
| `dataColors.fill` | Color | Couleur | color | fill | (empty) | hex color |  |
| `dataColors.shade` | Shade tiles within a group | Nuancer les tuiles d'un groupe | toggle | bool | `true` | true / false | Smaller tiles of a group are slightly lighter, so neighboring tiles of the same color stand apart. |
| `dataColors.gradMin` | Start value (empty = minimum) | Valeur du début (vide = minimum) | text | text | (empty) |  |  |
| `dataColors.gradMax` | End value (empty = maximum) | Valeur de la fin (vide = maximum) | text | text | (empty) |  |  |
| `dataColors.divMid` | Midpoint value | Valeur du milieu | text | text | `0` |  |  |
| `dataColors.rule1` | Low threshold | Seuil bas | text | text | (empty) |  |  |
| `dataColors.rule2` | High threshold | Seuil haut | text | text | (empty) |  |  |
| `dataColors.ruleLow` | Below the low threshold | Sous le seuil bas | color | fill | `#C0392B` | hex color |  |
| `dataColors.ruleMid` | Between thresholds | Entre les seuils | color | fill | `#B8BCC6` | hex color |  |
| `dataColors.ruleHigh` | Above the high threshold | Au-dessus du seuil haut | color | fill | `#2E7D4F` | hex color |  |
| `dataColors.changeSource` | Change read from | Variation lue dans | dropdown | enumeration | `auto` | `auto` Automatic (Comparison field, else Color field); `comparison` Values compared with the Comparison field; `measure` Color field (change already computed) | Color field: a change measure (e.g. Change % = 0.034 or 3.4%) colors the tiles, whatever measure sizes them (market cap, sales…). |
| `dataColors.changeAuto` | Automatic change range | Plage de variation automatique | toggle | bool | `true` | true / false | The strongest color matches a round change (±1, 2, 3, 5, 10%…) reached by 90% of the tiles shown. Off: the value below. |
| `dataColors.changeRange` | Change for the strongest color (%) | Variation de la couleur la plus vive (%) | number | numeric | `3` | 0.1 to 1000 | Like stock market maps: at ±3% the tile takes the strongest favorable or unfavorable color; at 0%, gray. |
| `dataColors.lowerBetter` | A decrease is favorable | Une baisse est favorable | toggle | bool | `false` | true / false |  |
| `dataColors.highlightNames` | Highlighted categories | Catégories mises en avant | text | text | (empty) |  | Comma-separated names, at any level. Other tiles are grayed out. |
| `dataColors.highlightColor` | Highlight color (empty = accent) | Couleur mise en avant (vide = accent) | color | fill | (empty) | hex color |  |
| `dataColors.othersColor` | Other tiles color (empty = gray) | Couleur des autres tuiles (vide = gris) | color | fill | (empty) | hex color |  |

### Groups (headers and borders) / Groupes (en-têtes et bordures) (`groups`, Format pane)

**Headers / En-têtes**

| Option ID | Label (EN) | Label (FR) | Control | Type | Default | Allowed values | Notes |
|---|---|---|---|---|---|---|---|
| `groups.headers` | Group headers | En-têtes des groupes | toggle | bool | `true` | true / false |  |
| `groups.headerSize` | Text size | Taille du texte | number | formatting | `10` | 7 to 24 |  |
| `groups.headerBold` | Bold | Gras | toggle | bool | `true` | true / false |  |
| `groups.headerValue` | Group total | Total du groupe | toggle | bool | `true` | true / false |  |
| `groups.headerFill` | Header background | Fond de l'en-tête | dropdown | enumeration | `auto` | `auto` Group color; `neutral` Neutral; `none` None |  |
| `groups.headerColor` | Text color (empty = automatic) | Couleur du texte (vide = automatique) | color | fill | (empty) | hex color |  |

**Borders / Bordures**

| Option ID | Label (EN) | Label (FR) | Control | Type | Default | Allowed values | Notes |
|---|---|---|---|---|---|---|---|
| `groups.borders` | Border around groups | Bordure autour des groupes | toggle | bool | `false` | true / false |  |
| `groups.borderWidth` | Width | Épaisseur | number | numeric | `1` | 0.5 to 6 | Visible when `groups.borders` = `true` |
| `groups.borderColor` | Color (empty = secondary text) | Couleur (vide = texte secondaire) | color | fill | (empty) | hex color | Visible when `groups.borders` = `true` |
| `groups.tileBorder` | Gap color between tiles (empty = background) | Couleur des espaces entre tuiles (vide = fond) | color | fill | (empty) | hex color |  |

### Data labels / Étiquettes de données (`labels`, Format pane)

The card header toggle is `labels.show`.

**Content / Contenu**

| Option ID | Label (EN) | Label (FR) | Control | Type | Default | Allowed values | Notes |
|---|---|---|---|---|---|---|---|
| `labels.show` | Show | Afficher | toggle | bool | `true` | true / false | Values in the tiles. Names are set in « Category labels ». |
| `labels.showValue` | Value | Valeur | toggle | bool | `true` | true / false |  |
| `labels.percent` | Percentage | Pourcentage | dropdown | enumeration | `none` | `none` None; `parent` Share of the group ★; `total` Share of the total ★ |  |
| `labels.change` | Change ▲▼ (Comparison field) | Variation ▲▼ (champ Comparaison) | toggle | bool | `true` | true / false |  |
| `labels.position` | Position | Position | dropdown | enumeration | `topLeft` | `topLeft` Top left; `center` Center |  |

**Text / Texte**

| Option ID | Label (EN) | Label (FR) | Control | Type | Default | Allowed values | Notes |
|---|---|---|---|---|---|---|---|
| `labels.autoSize` | Auto size | Taille automatique | toggle | bool | `true` | true / false | Text grows with the tile (from the minimum to the maximum size) and never overflows. |
| `labels.fontSize` | Size (minimum) | Taille (minimale) | number | formatting | `10` | 6 to 40 |  |
| `labels.maxSize` | Maximum size | Taille maximale | number | formatting | `26` | 8 to 80 | Visible when `labels.autoSize` = `true` |
| `labels.minTile` | Hide in tiles narrower than (px) | Masquer dans les tuiles plus étroites que (px) | number | integer | `24` | 0 to 200 |  |
| `labels.color` | Color (empty = automatic) | Couleur (vide = automatique) | color | fill | (empty) | hex color | Automatic: white or dark depending on the tile color. |

**Numbers / Nombres**

| Option ID | Label (EN) | Label (FR) | Control | Type | Default | Allowed values | Notes |
|---|---|---|---|---|---|---|---|
| `labels.units` | Display units | Unités d'affichage | dropdown | enumeration | `auto` | `auto` Auto; `none` None; `k` Thousands; `m` Millions; `b` Billions |  |
| `labels.decimals` | Decimals (-1 = auto) | Décimales (-1 = auto) | number | integer | `-1` | -1 to 6 |  |
| `labels.prefix` | Prefix | Préfixe | text | text | (empty) |  |  |
| `labels.suffix` | Suffix (e.g. €) | Suffixe (ex. €) | text | text | (empty) |  |  |

### Category labels / Étiquettes des catégories (`categoryLabels`, Format pane)

The card header toggle is `categoryLabels.show`.

| Option ID | Label (EN) | Label (FR) | Control | Type | Default | Allowed values | Notes |
|---|---|---|---|---|---|---|---|
| `categoryLabels.show` | Show | Afficher | toggle | bool | `true` | true / false |  |
| `categoryLabels.bold` | Bold | Gras | toggle | bool | `true` | true / false |  |
| `categoryLabels.wrap` | Lines for long names | Lignes pour les noms longs | number | integer | `2` | 1 to 6 |  |
| `categoryLabels.color` | Color (empty = same as data labels) | Couleur (vide = comme les étiquettes de données) | color | fill | (empty) | hex color |  |

### Legend / Légende (`legend`, Format pane)

The card header toggle is `legend.show`.

| Option ID | Label (EN) | Label (FR) | Control | Type | Default | Allowed values | Notes |
|---|---|---|---|---|---|---|---|
| `legend.show` | Show | Afficher | toggle | bool | `true` | true / false | Shown when the chart has several series. |
| `legend.position` | Position | Position | dropdown | enumeration | `top` | `top` Top; `bottom` Bottom; `right` Right; `left` Left |  |
| `legend.align` | Alignment | Alignement | dropdown | enumeration | `left` | `left` Start; `center` Center; `right` End | Visible when `legend.position` = `top` or `bottom` |
| `legend.showTitle` | Legend title | Titre de la légende | toggle | bool | `false` | true / false |  |
| `legend.titleText` | Title text | Texte du titre | text | text | (empty) |  | Visible when `legend.showTitle` = `true` |
| `legend.fontSize` | Size | Taille | number | formatting | `9` | 6 to 24 |  |
| `legend.color` | Color (empty = secondary text) | Couleur (vide = texte secondaire) | color | fill | (empty) | hex color |  |
| `legend.interactive` | Click = select the series | Clic = sélectionner la série | toggle | bool | `true` | true / false |  |

### Zoom (`zoom`, Format pane)

| Option ID | Label (EN) | Label (FR) | Control | Type | Default | Allowed values | Notes |
|---|---|---|---|---|---|---|---|
| `zoom.headerClick` | Click a header: zoom into the group | Clic sur un en-tête : zoomer dans le groupe | toggle | bool | `true` | true / false | Ctrl + click on the header: select the whole group (cross-filter). |
| `zoom.doubleClick` | Double-click a tile: drill down one level | Double-clic sur une tuile : descendre d'un niveau | toggle | bool | `true` | true / false |  |
| `zoom.breadcrumb` | Breadcrumb | Fil d'Ariane | toggle | bool | `true` | true / false |  |
| `zoom.rootLabel` | Top level label | Libellé du niveau supérieur | text | text | (empty) |  |  |

### Images ★ (`images`, Format pane)

This card controls premium features (★): they work without a license key but show the watermark while in use.

| Option ID | Label (EN) | Label (FR) | Control | Type | Default | Allowed values | Notes |
|---|---|---|---|---|---|---|---|
| `images.fit` | Fit | Ajustement | dropdown | enumeration | `contain` | `contain` Whole (logo); `cover` Fill the tile (photo) |  |
| `images.size` | Size (% of the tile) | Taille (% de la tuile) | number | integer | `55` | 10 to 100 | Visible when `images.fit` = `contain` |
| `images.opacity` | Opacity (%) | Opacité (%) | number | integer | `100` | 5 to 100 |  |
| `images.round` | Round image | Image ronde | toggle | bool | `false` | true / false | Visible when `images.fit` = `contain` |

### Small multiples ★ / Petits multiples ★ (`smallMultiples`, Format pane)

This card controls premium features (★): they work without a license key but show the watermark while in use.

| Option ID | Label (EN) | Label (FR) | Control | Type | Default | Allowed values | Notes |
|---|---|---|---|---|---|---|---|
| `smallMultiples.columns` | Columns (0 = automatic) | Colonnes (0 = automatique) | number | integer | `0` | 0 to 12 |  |
| `smallMultiples.sameScale` | Comparable areas across panels | Surfaces comparables entre panneaux | toggle | bool | `true` | true / false | Each panel's area is proportional to its total: a panel half the size weighs half as much. |
| `smallMultiples.titleSize` | Title size | Taille des titres | number | formatting | `11` | 7 to 24 |  |
| `smallMultiples.gap` | Space between panels (px) | Espace entre les panneaux (px) | number | integer | `12` | 0 to 40 |  |

### Playback ★ / Lecture ★ (`play`, Format pane)

This card controls premium features (★): they work without a license key but show the watermark while in use.

| Option ID | Label (EN) | Label (FR) | Control | Type | Default | Allowed values | Notes |
|---|---|---|---|---|---|---|---|
| `play.start` | Frame shown on opening | Image affichée à l'ouverture | dropdown | enumeration | `last` | `last` The last one (most recent); `first` The first one |  |
| `play.speed` | Duration of a frame (ms) | Durée d'une image (ms) | number | integer | `1000` | 100 to 10000 | At speed ×1; the speed button of the play bar multiplies it (×0.5 to ×4) for the session. |
| `play.loop` | Loop | Lecture en boucle | toggle | bool | `false` | true / false |  |
| `play.autoPlay` | Play automatically on opening | Lecture automatique à l'ouverture | toggle | bool | `false` | true / false | Once, from the first frame. Not when animations are reduced (Style › Animations or the system) nor on a dashboard tile. |
| `play.transition` | Animated transitions | Transitions animées | toggle | bool | `true` | true / false | Values, positions and colors move smoothly from one frame to the next. |
| `play.controls` | Play bar | Barre de lecture | toggle | bool | `true` | true / false |  |
| `play.position` | Bar position | Position de la barre | dropdown | enumeration | `bottom` | `bottom` Bottom; `top` Top | Visible when `play.controls` = `true` |
| `play.ticks` | Tick marks | Graduations | dropdown | enumeration | `auto` | `auto` Automatic; `all` Every frame; `none` None | Visible when `play.controls` = `true` |
| `play.tickLabels` | Tick labels | Étiquettes des graduations | toggle | bool | `true` | true / false | Visible when `play.controls` = `true` |
| `play.stepButtons` | Start and end buttons | Boutons début et fin | toggle | bool | `true` | true / false | Visible when `play.controls` = `true` |
| `play.speedButton` | Speed button | Bouton de vitesse | toggle | bool | `true` | true / false | Visible when `play.controls` = `true` |
| `play.showLabel` | Current value in large type | Valeur en cours en grand | toggle | bool | `true` | true / false |  |
| `play.labelSize` | Large value size | Taille de la valeur en grand | number | formatting | `44` | 12 to 160 | Visible when `play.showLabel` = `true` |
| `play.labelPosition` | Large value position | Position de la valeur en grand | dropdown | enumeration | `bottomRight` | `bottomRight` Bottom right; `topRight` Top right; `topLeft` Top left; `bottomLeft` Bottom left; `center` Center | Visible when `play.showLabel` = `true` |

### Interactions (`interaction`, Format pane)

| Option ID | Label (EN) | Label (FR) | Control | Type | Default | Allowed values | Notes |
|---|---|---|---|---|---|---|---|
| `interaction.hover` | Highlight on hover | Mettre en avant au survol | toggle | bool | `true` | true / false |  |
| `interaction.dim` | Dimmed items opacity (%) | Opacité des éléments estompés (%) | number | integer | `25` | 5 to 80 |  |

### Tooltips / Infobulles (`tooltip`, Format pane)

The card header toggle is `tooltip.show`.

| Option ID | Label (EN) | Label (FR) | Control | Type | Default | Allowed values | Notes |
|---|---|---|---|---|---|---|---|
| `tooltip.show` | Show | Afficher | toggle | bool | `true` | true / false | Tooltip on hover (with the fields of the "Tooltips" well and report page tooltips). |
| `tooltip.path` | Full path (every level) | Chemin complet (tous les niveaux) | toggle | bool | `true` | true / false |  |
| `tooltip.shareParent` | Share of the group | Part du groupe | toggle | bool | `true` | true / false |  |
| `tooltip.shareTotal` | Share of the total | Part du total | toggle | bool | `true` | true / false |  |

### Title / Titre (`title`, Format pane)

The card header toggle is `title.show`.

**Title / Titre**

| Option ID | Label (EN) | Label (FR) | Control | Type | Default | Allowed values | Notes |
|---|---|---|---|---|---|---|---|
| `title.show` | Show | Afficher | toggle | bool | `true` | true / false |  |
| `title.text` | Text | Texte | text | text | (empty) |  | Leave empty for an automatic title built from the fields. |
| `title.fontSize` | Size | Taille | number | formatting | `14` | 7 to 40 |  |
| `title.bold` | Bold | Gras | toggle | bool | `true` | true / false |  |
| `title.italic` | Italic | Italique | toggle | bool | `false` | true / false |  |
| `title.underline` | Underline | Souligné | toggle | bool | `false` | true / false |  |
| `title.color` | Color (empty = text) | Couleur (vide = texte) | color | fill | (empty) | hex color |  |
| `title.bgColor` | Background color | Couleur d'arrière-plan | color | fill | (empty) | hex color |  |
| `title.align` | Horizontal alignment | Alignement horizontal | dropdown | enumeration | `left` | `left` Left; `center` Center; `right` Right |  |
| `title.wrap` | Text wrap | Retour automatique à la ligne | toggle | bool | `true` | true / false |  |

**Subtitle / Sous-titre**

| Option ID | Label (EN) | Label (FR) | Control | Type | Default | Allowed values | Notes |
|---|---|---|---|---|---|---|---|
| `title.subtitle` | Subtitle | Sous-titre | text | text | (empty) |  | Several lines allowed: type \n to go to the next line. |
| `title.subFontSize` | Size | Taille | number | formatting | `11` | 7 to 30 | Visible when `title.subtitle` =  |
| `title.subColor` | Color (empty = secondary text) | Couleur (vide = texte secondaire) | color | fill | (empty) | hex color | Visible when `title.subtitle` =  |
| `title.subItalic` | Italic | Italique | toggle | bool | `false` | true / false | Visible when `title.subtitle` =  |

**Divider / Séparateur**

| Option ID | Label (EN) | Label (FR) | Control | Type | Default | Allowed values | Notes |
|---|---|---|---|---|---|---|---|
| `title.divider` | Show divider | Afficher le séparateur | toggle | bool | `false` | true / false |  |
| `title.dividerColor` | Color (empty = lines) | Couleur (vide = traits) | color | fill | (empty) | hex color | Visible when `title.divider` = `true` |
| `title.dividerStyle` | Line style | Style de trait | dropdown | enumeration | `solid` | `solid` Solid; `dashed` Dashed; `dotted` Dotted | Visible when `title.divider` = `true` |
| `title.dividerWidth` | Width | Épaisseur | number | integer | `1` | 1 to 6 | Visible when `title.divider` = `true` |

**Spacing / Espacement**

| Option ID | Label (EN) | Label (FR) | Control | Type | Default | Allowed values | Notes |
|---|---|---|---|---|---|---|---|
| `title.spaceBelow` | Space below the title (px) | Espace sous le titre (px) | number | integer | `4` | 0 to 40 |  |

### Source note / Note de source (`source`, Format pane)

The card header toggle is `source.show`.

| Option ID | Label (EN) | Label (FR) | Control | Type | Default | Allowed values | Notes |
|---|---|---|---|---|---|---|---|
| `source.show` | Show | Afficher | toggle | bool | `false` | true / false |  |
| `source.text` | Text | Texte | text | text | (empty) |  |  |
| `source.fontSize` | Size | Taille | number | formatting | `9` | 6 to 20 |  |
| `source.italic` | Italic | Italique | toggle | bool | `false` | true / false |  |
| `source.color` | Color (empty = secondary text) | Couleur (vide = texte secondaire) | color | fill | (empty) | hex color |  |
| `source.align` | Alignment | Alignement | dropdown | enumeration | `left` | `left` Left; `center` Center; `right` Right |  |

### Frame / Cadre (`container`, Format pane)

**Background / Arrière-plan**

| Option ID | Label (EN) | Label (FR) | Control | Type | Default | Allowed values | Notes |
|---|---|---|---|---|---|---|---|
| `container.bgShow` | Background | Arrière-plan | toggle | bool | `false` | true / false |  |
| `container.bgColor` | Color | Couleur | color | fill | `#FFFFFF` | hex color | Visible when `container.bgShow` = `true` |
| `container.bgColor2` | Gradient end (optional) | Fin du dégradé (optionnel) | color | fill | (empty) | hex color | Visible when `container.bgShow` = `true` |
| `container.bgTransparency` | Transparency (%) | Transparence (%) | slider | numeric | `0` | 0 to 100 | Visible when `container.bgShow` = `true` |

**Border / Bordure**

| Option ID | Label (EN) | Label (FR) | Control | Type | Default | Allowed values | Notes |
|---|---|---|---|---|---|---|---|
| `container.border` | Border | Bordure | toggle | bool | `false` | true / false |  |
| `container.borderColor` | Color (empty = lines) | Couleur (vide = traits) | color | fill | (empty) | hex color | Visible when `container.border` = `true` |
| `container.borderWidth` | Width | Épaisseur | number | integer | `1` | 0 to 6 | Visible when `container.border` = `true` |
| `container.radius` | Rounded corners | Coins arrondis | number | integer | `8` | 0 to 24 |  |

**Shadow / Ombre**

| Option ID | Label (EN) | Label (FR) | Control | Type | Default | Allowed values | Notes |
|---|---|---|---|---|---|---|---|
| `container.shadow` | Shadow | Ombre | toggle | bool | `false` | true / false |  |
| `container.shadowColor` | Color (empty = soft) | Couleur (vide = douce) | color | fill | (empty) | hex color | Visible when `container.shadow` = `true` |
| `container.shadowSize` | Blur (px) | Flou (px) | number | integer | `12` | 0 to 40 | Visible when `container.shadow` = `true` |

**Spacing / Marges**

| Option ID | Label (EN) | Label (FR) | Control | Type | Default | Allowed values | Notes |
|---|---|---|---|---|---|---|---|
| `container.padding` | Inner padding | Marge intérieure | number | integer | `8` | 0 to 40 |  |

### Language and numbers / Langue et nombres (`texts`, Format pane)

| Option ID | Label (EN) | Label (FR) | Control | Type | Default | Allowed values | Notes |
|---|---|---|---|---|---|---|---|
| `texts.language` | Interface language | Langue de l'interface | dropdown | enumeration | `auto` | `auto` Same as Power BI; `fr` French; `en` English |  |
| `texts.numberLocale` | Number format locale (e.g. en-GB) | Format des nombres (ex. fr-FR) | text | text | (empty) |  | Thousands and decimal separators. Empty: same as Power BI. |