Aller au contenu
Plume Visuals
← Retour
Gamme de base

Nuage de mots pour Power BI Word Cloud Plume

Un nuage de mots lisible et toujours le même : thèmes, avis clients ou réponses ouvertes, dans la forme et la police de votre choix.

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 ».

Word Cloud Plume range les mots au centre d'une forme, les plus gros d'abord, sans chevauchement et toujours de la même façon pour les mêmes données. Il découpe lui-même les commentaires en mots, retire les mots vides français et anglais et les élisions (l', d', qu'…), regroupe majuscules et accents, et compte les occurrences ou suit votre mesure. Formes (ovale, rectangle, cœur, nuage, étoile…), 55 polices Windows et Office, mots horizontaux, verticaux ou en angle, espacement réglable : aucun mot n'est perdu en silence, le visuel signale ceux qui ne tiennent pas. Un clic sur un mot filtre la page sur les lignes qui le contiennent. En premium : expressions de deux ou trois mots, couleur selon une mesure (le sentiment moyen des avis), mots en hausse ou en baisse par rapport à une autre période, 131 autres formes et votre SVG, répétitions qui remplissent la forme, nuage qui évolue mois par mois.

Cas d'usage

  • Avis clients et réponses à une question ouverte, découpés en mots et sans mots vides
  • Motifs de réclamation ou titres de tickets les plus fréquents, colorés selon le sentiment
  • Thèmes en hausse et en baisse par rapport à l'an dernier
  • Mots-clés de l'année, mois par mois, avec l'axe de lecture

GratuitInclus gratuitement

  • Une colonne de mots ou de textes longs, découpés automatiquement ; taille selon une mesure ou le nombre d'occurrences
  • Mots vides français et anglais intégrés, élisions, casse, longueur minimale, N premiers, mots exclus (volet ou mesure)
  • Ovale et rectangle qui remplissent le visuel, 22 formes gratuites (cœur, nuage, étoile, maison…)
  • Tout horizontal, horizontal et vertical, diagonales, d'un angle à l'autre ou angles libres
  • 55 polices Windows et Office, graisse, italique, tailles minimale et maximale, échelle linéaire ou racine carrée, espacement
  • Placement dense et déterministe ; les mots qui ne tiennent pas sont signalés, jamais perdus en silence
  • Palette, couleur unique, couleur par mot ; clic = filtre croisé, menu contextuel, clavier
  • Caractères spéciaux gardés (#, @, émojis, montants) ; tailles gardées sous un filtre (poids de la taille maximale)
  • Formats dynamiques : bouton fx sur les couleurs et les textes, tout réglage piloté en DAX

PremiumFonctions premium

  • Expressions de deux ou trois mots (« service client », « délai de livraison »)
  • Couleur selon une mesure, par exemple le sentiment moyen des avis qui emploient le mot
  • Comparaison de deux périodes : mots en hausse ▲, en baisse ▼, nouveaux ✦
  • 131 autres formes (France, ampoule, arbre…) et votre SVG, collé ou fourni par une mesure
  • Répétitions qui remplissent la forme
  • Axe de lecture : un nuage par mois, les mots communs glissent vers leur nouvelle place
  • Pluriels regroupés, une fois par commentaire, échelles logarithmique et par rang, dégradé selon la taille, silhouette en fond
  • 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ébutant7 min de lectureUn nuage de mots lisible dans Power BI, même avec des commentairesPrise en main de Word Cloud Plume : faire un nuage de thèmes ou d'avis clients, retirer les mots vides français, choisir une forme, une police, l'orientation et filtrer la page d'un clic.
  2. Cas pratiquesIntermédiaire6 min de lectureWord Cloud Plume : expressions, sentiment, comparaison et formesRecettes de Word Cloud Plume : mots vides venant des données, expressions de deux mots, couleur selon le sentiment, mots en hausse, forme SVG, nuage mois par mois.
  3. Champs et réglagesIntermédiaire14 min de lectureWord Cloud Plume : tous les champs et tous les réglagesRéférence complète de Word Cloud Plume : champs (mots, taille, couleur, comparaison, mots exclus, forme SVG, axe de lecture) et chaque réglage du volet Format avec ses choix.
  4. Bases communesBien démarrer avec les visuels PlumeInstallation, licence, styles et réglages communs à tous les visuels.

Champs à glisser dans le visuel

ChampContenu
Mots ou texteColonne de mots, de libellés ou de commentaires (découpés automatiquement)Obligatoire
TailleMesure qui donne la taille ; sinon le nombre d'occurrencesFacultatif
CouleurCouleur en texte, ou nombre pour un dégradé ★ (sentiment)Facultatif
ComparaisonMême mesure sur une période précédente : hausse, baisse, nouveaux motsFacultatifPremium
Mots exclusMesure texte (CONCATENATEX) des mots à retirerFacultatif
Forme (SVG)Mesure qui renvoie un SVG : la forme du nuageFacultatifPremium
Axe de lectureDate ou catégorie ordonnée : un nuage par valeurFacultatifPremium
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 Word Cloud 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/word-cloud.md)
# Word Cloud 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 Word Cloud 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/word-cloud (French: https://plumevisuals.com/fr/visuels/word-cloud)
- Summary: A readable word cloud that is always the same: topics, customer reviews or open answers, in the shape and font of your choice.
- Power BI visual GUID (`visualType`): `plumeWordCloudEF71B057859746CE8A28DD8261953560`
- 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

Word Cloud Plume (identifier `word-cloud`) is a Power BI custom visual (version 1.1.0.0, installed from its `.pbiviz` file; not yet on AppSource) that draws **word clouds**. Power BI Desktop has no native word cloud; Microsoft's free Word Cloud visual has English stop words only, no shapes and no font choice.

**New in version 1.1.0.0 (30/10/2026):** Format pane reorganized (`compare` → `comparison`); free "Keep special characters (#, @, emojis)" and a maximum-size weight to keep sizes under filters (`wordFont.weightMax`).

- **Words or long texts**: one column (`words` role). Short labels are kept whole; long texts (comments, survey answers) are **split into words automatically** (`words.split` = `auto`: when at least 20% of the values have 4 words or more, or 3 words on average), or always (`on`) / never (`off`).
- **Text cleaning built in**: French and English stop words (`words.stopWords` = `auto` | `fr` | `en` | `none`), French elisions removed (l', d', qu'… → `words.elision`), numbers ignored, minimum length (3 letters), case and accents merged (the most frequent form is shown; with split text a lowercase form wins over a sentence-initial capital), optional plural merging ★ (`words.mergePlurals`), excluded words from the pane (`words.customStop`) or from a text measure (`exclude` role, e.g. `CONCATENATEX`).
- **Size** = the `weight` measure, otherwise the number of occurrences (`words.countMode` = `occurrences` | `rows` ★: once per row). Empty, zero or negative sizes remove the word. Top N (`words.maxWords`, 150) and minimum weight.
- **Layout**: words placed largest first along an Archimedean or rectangular spiral from the center of the shape, collision test on a bitmap of the shape (like d3-cloud, written for Plume), adjustable spacing, **deterministic** (same data → same cloud; `layout.seed` gives another arrangement). A word that does not fit is retried in the other orientation, then smaller down to the minimum size; words that still do not fit are **counted** ("n word(s) not placed" note in edit mode, with the list in its tooltip), never dropped silently. 500 words are laid out in under a second in the test harness.
- **Shapes**: an oval (default) and a rectangle that fill the visual, plus the 153 shapes of the Plume shape library (22 free: circle, square, rounded square, rectangle, triangle, diamond, hexagon, star, heart, cloud, drop, bubble, arrow, person, house, barrel, bottle, glass, wine glass, thermometer, battery, vertical battery), a custom SVG ★ pasted in the pane or returned by the `shapeSvg` measure (sanitized: no script, no image, no web link; only its geometry is used); keep proportions or stretch; optional silhouette ★.
- **Orientation**: all horizontal, horizontal and vertical (share of rotated words, reading direction), all vertical, diagonals ±45°, N even steps from one angle to another, free angles between two limits. A word always keeps the same orientation.
- **Fonts**: the style font or one of 55 fonts installed with Windows or Microsoft Office (no web font), with fallback stacks; weight (regular, semibold, bold, bold for the largest words), italic; minimum / maximum size; size scale linear, square root (default), logarithmic ★ or by rank ★; "Fill the shape" adapts the largest size.
- **Colors**: style palette (in size order or fixed per word), single color, ★ gradient by size, one color per word (categories), colors given as text by the `colorBy` field; ★ gradient by a numeric `colorBy` measure (the weighted average of the rows using the word, e.g. review sentiment; sequential or diverging around 0); ★ change versus the `compare` measure.
- ★ **Phrases**: two-word, words + two-word, or three-word phrases (`words.ngrams`); a stop word never starts or ends a phrase and phrases never cross punctuation.
- ★ **Comparison**: with a `compare` measure (same measure for an earlier period), words get ▲ (rising), ▼ (falling), ✦ (new) written small after the word, favorable / unfavorable / gray colors, "a decrease is favorable", negligible change threshold, a clickable legend and the change in % in the tooltip.
- ★ **Repeated words** (`layout.repeat`): smaller copies fill the room left in the shape (texture), decorative only.
- ★ **Play axis** (`play` role, premium since the rebalancing of 22/10/2026): one cloud per value (month, year) with the shared Plume play bar; common words keep a reference position and glide to their new place, the others fade in or out.

## Free vs premium (★)

- Every feature works without a key and nothing is ever blocked. Free features never show a watermark, and a freshly inserted visual uses only free settings.
- 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 Word Cloud Plume: splitting, stop words, elisions, case, exclusions, top N; the oval, the rectangle and the 22 free shapes; every orientation; every font; sizes (linear or square-root scale), spacing, spiral, layout variant, intro animation; palette, single color, per-word colors, text colors from `colorBy`; selection, tooltips, keyboard.
- Premium features of Word Cloud Plume: `words.ngrams` other than `1` (when the text is split); `dataColors.mode` = `field` with a numeric Color field (also chosen automatically when the mode is left on `palette`); the `compare` role (`dataColors.mode` = `change`); `shape.shape` other than `oval`, `rect` and the 22 free shapes; `shape.shape` = `custom` with an SVG, or the `shapeSvg` role; `layout.repeat`; since the rebalancing of 22/10/2026: the `play` role (as soon as it holds data), `dataColors.mode` = `weight`, `wordFont.sizeScale` = `log` or `rank`, `words.mergePlurals`, `words.countMode` = `rows` (when the text is split), `shape.silhouette`.
- 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 `word-cloud` 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, key accepted for 30 more days, reminders 30 and 7 days before the end). Prices: 39 € personal, 99 € SME, 299 € enterprise per year, or the catalog pack (199 € / 399 € / 1,199 € per year; tiers by number of users: personal 1–10, SME 11–200, enterprise more than 200).

## Expected data shape

Either one row per word with a measure, or one row per text.

| Words or text (`words`) | Size (`weight`) | Color (`colorBy`) | Comparison (`compare`) |
|---|---|---|---|
| delivery | 980 | | 784 |
| customer service | 790 | | 963 |
| "Fast delivery, careful packaging" | 1 | 0.82 | |

- **Words or text** (`words`, « Mots ou texte », one column, required): words, labels or long texts. Numbers and dates are written with the column format.
- **Size** (`weight`, « Taille », one measure): the size; with split text, each word receives the row value for each occurrence. Power BI groups identical texts into one row: use a count measure (`COUNTROWS`) so that identical comments count.
- **Color** (`colorBy`, « Couleur », one measure): a color as text (`#RRGGBB`, `red`) applied as is, or a number for a gradient ★.
- **Comparison ★** (`compare`, « Comparaison »), **Excluded words** (`exclude`, « Mots exclus », text measure), **Shape (SVG) ★** (`shapeSvg`, « Forme (SVG) »), **Play axis ★** (`play`, « Axe de lecture ★ », one column, premium), **Tooltips** (`tooltips`), **Dynamic format** (`format`).
- Volume of data: windows of 30,000 rows, more fetched with `fetchMoreData` up to 100,000 rows; 100,004 comments are split and drawn in a few seconds (2 to 4 s measured in the test harness).

## DAX recipes

```dax
// Size: count the reviews behind each text (identical texts are grouped by Power BI)
Number of reviews = COUNTROWS ( Reviews )
// Color ★: average sentiment (−1 to 1) of the reviews that use the word
Average sentiment = AVERAGE ( Reviews[Sentiment] )
// Comparison ★: the same measure one year earlier
Mentions last year = CALCULATE ( [Number of mentions], SAMEPERIODLASTYEAR ( 'Date'[Date] ) )
// Excluded words: from a table
Excluded word list = CONCATENATEX ( 'Excluded words', 'Excluded words'[Word], ";" )
```

## Interactions with the report

- Click a word: cross-filter on every row that contains it (up to 5,000 rows per word); Ctrl for several; click the background to clear; a click on a legend group of the comparison selects its words. Context menu everywhere (word, background, landing page).
- Hover: the hovered word stands out (`interaction.hover`); Power BI tooltip with the word, size, occurrences, comparison and change, color value, Tooltips measures; report-page tooltips are supported. No cross-highlighting from other visuals (the visual is filtered instead).
- Keyboard: Tab to the cloud, arrows from the largest word to the smallest, Enter selects, Esc clears; the cloud is labeled with its five largest words for screen readers. High contrast, French and English.

## Dynamic formats

- **fx button** (Power BI conditional formatting) on colors and texts of the Format pane (e.g. `title.text`, `shape.svg`).
- **"Dynamic format" well** (`format`): measures renamed `card.setting` (e.g. `wordFont.maxSize`, `layout.orientation`, `shape.shape`) drive any setting and win over the fixed value. Driving a ★ setting by DAX still shows the watermark without a key.

## Format pane: option IDs

- Card order: `license`, `style`, `dataColors`, `words`, `wordFont`, `shape`, `layout`, `comparison` (with the Comparison field), `legend` (with a gradient or the comparison), `play` (« Lecture ★ », with the Play axis field), `interaction`, then `title`, `source`, `container`, `texts`. Format pane in version 1.1.0.0 (30/10/2026), top to bottom: `license`, `style`, `layout`, `dataColors`, `words`, `wordFont`, `shape`, `legend`, `comparison`, `play`, `interaction`, `tooltip`, `title`, `source`, `container`, `texts`. Settings moved or renamed in this version keep working in older reports (the old names are still read).
- `dataColors`: `mode` (`palette` | `single` | `weight` ★ | `field` ★ | `change` ★), `single`, `gradient` (`sequential` | `diverging`), `byRank` (true), `fill` per word (category selector).
- `words`: `split` (`auto` | `on` | `off`), `ngrams` (`1` | `2` ★ | `12` ★ | `3` ★), `countMode` (`occurrences` | `rows` ★), `minLength` (1–20, 3), `removeNumbers` (true), `elision` (true), `mergePlurals` ★ (false), `textCase` (`auto` | `lower` | `upper` | `title`), `stopWords` (`auto` | `fr` | `en` | `none`), `customStop` (text), `maxWords` (1–1000, 150), `minWeight` (0).
- `wordFont`: `font` (`auto` or a font name such as `Segoe UI`, `Calibri`, `Georgia`, `Bahnschrift SemiCondensed`, `Segoe Print`, `Impact`), `fontWeight` (`normal` | `semibold` | `bold` | `bySize`), `italic`, `minSize` (6–80, 11), `maxSize` (8–300, 64), `sizeScale` (`linear` | `sqrt` | `log` ★ | `rank` ★).
- `shape`: `shape` (`oval` | `rect` | `custom` ★ | a library shape ID such as `heart`, `cloud`, `star`, `france` ★, `tree` ★), `svg` (text), `fit` (`contain` | `stretch`), `silhouette` ★, `silhouetteColor`, `silhouetteOpacity` (5–100, 40), `margin` (0–80, 4).
- `layout`: `orientation` (`horizontal` | `hv` | `vertical` | `diagonal` | `range` | `random`), `rotatedShare` (0–100, 25), `verticalDir` (`up` | `down`), `angleFrom` (−90–90, −60), `angleTo` (60), `steps` (2–19, 5), `spacing` (0–30 px, 2), `fit` (`auto` | `shrink` | `none`), `spiral` (`archimedean` | `rectangular`), `seed` (1–999, 1), `repeat` ★, `repeatOpacity` (10–100, 55), `repeatMax` (50–3000, 900), `intro` (`grow` | `fade` | `none`).
- `comparison`: `arrows` (true), `lowerIsBetter`, `neutral` (0–100 %, 5), `risingColor`, `fallingColor`, `newWords` (true).
- `legend`: `show`, `position` (`bottom`), `align` (`center`), `showTitle`, `titleText`, `fontSize` (9), `color`, `interactive`.
- `play`: `start` (`last` | `first`), `speed` (100–10000 ms, 1000), `loop`, `autoPlay`, `transition`, `controls`, `position`, `ticks`, `tickLabels`, `stepButtons`, `speedButton`, `showLabel`, `labelSize` (44), `labelPosition`.
- `interaction`: `hover`, `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": "plumeWordCloudEF71B057859746CE8A28DD8261953560",
  "query": {
    "queryState": {
      "words":  { "projections": [ { "field": { "Column":  { "Expression": { "SourceRef": { "Entity": "Reviews" } }, "Property": "Comment" } }, "queryRef": "Reviews.Comment", "nativeQueryRef": "Comment" } ] },
      "weight": { "projections": [ { "field": { "Measure": { "Expression": { "SourceRef": { "Entity": "Reviews" } }, "Property": "Number of reviews" } }, "queryRef": "Reviews.Number of reviews", "nativeQueryRef": "Number of reviews" } ] }
    }
  },
  "objects": {
    "shape":    [ { "properties": { "shape": { "expr": { "Literal": { "Value": "'heart'" } } }, "silhouette": { "expr": { "Literal": { "Value": "true" } } } } } ],
    "layout":   [ { "properties": { "orientation": { "expr": { "Literal": { "Value": "'horizontal'" } } }, "spacing": { "expr": { "Literal": { "Value": "1D" } } } } } ],
    "wordFont": [ { "properties": { "font": { "expr": { "Literal": { "Value": "'Georgia'" } } } } } ]
  }
}
```

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 style gives the palette and the font ("Style font"); `minimal`, `unknownPleasures`, `terminal` and `blueprint` lay words out horizontally when the orientation is left by default.
- `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

- Every word has the same size: no Size measure and each word appears once.
- A whole comment shows as one word: texts are short; set `words.split` = `on`.
- Identical comments count once: Power BI groups identical values; put `COUNTROWS` in Size.
- "n word(s) not placed": the shape is too small; enlarge the visual, lower `wordFont.minSize`, `layout.spacing` or `words.maxWords`, or use a wider shape / `shape.fit` = `stretch`.
- Words in an unexpected font on a Mac or in a browser: the chosen Windows or Office font is missing there; the fallback stack is used.
- Pale words with a diverging gradient: tints too light are darkened automatically; choose `sequential` for stronger colors.
- "SVG shape: …" message: the pasted SVG is unreadable or has no filled shape; the oval is used meanwhile.
- Watermark visible: phrases, a ★ shape or custom SVG, a numeric Color field, the Comparison field, repeated words, a ★ style or a theme JSON, without a valid key.
- The visual makes no network request: data, SVG and license key stay in the report.

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

Images loaded from a web address as a shape (only pasted or measure SVG), web fonts, automatic sentiment analysis or language detection (sentiment comes from a measure), lemmatization beyond simple plurals, lasso selection, cross-highlighting (the cloud is filtered instead), editing words by hand in the visual, exporting the cloud as an image.

## 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 |
|---|---|---|---|---|---|
| `words` | Words or text | Mots ou texte | column | 1 | A column of words or labels, or long texts (comments, answers) that the visual splits into words |
| `weight` | Size | Taille | measure | 1 | A measure that sizes the words; without it, the number of occurrences |
| `colorBy` | Color | Couleur | measure | 1 | A color (#RRGGBB, red…) per word, or a number for a gradient ★ |
| `compare` | Comparison ★ | Comparaison ★ | measure | 1 | The same measure for an earlier period: words on the rise or falling, new words ★ |
| `exclude` | Excluded words | Mots exclus | measure | 1 | A text measure listing words to remove, separated by ; , or new lines (e.g. CONCATENATEX) |
| `shapeSvg` | Shape (SVG) ★ | Forme (SVG) ★ | measure | 1 | A measure that returns an SVG: the words fill this shape (cleaned, no web link) |
| `play` | Play axis ★ | Axe de lecture ★ | column | 1 | A date, a year or an ordered category: one cloud per value, common words glide to their new place |
| `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 = `words` + `play` (one row per combination), 30,000 rows per data window (more fetched automatically); measures = `weight`, `colorBy`, `compare`, `exclude`, `shapeSvg`, `tooltips`, `format`.
Capabilities: supportsKeyboardFocus, supportsMultiVisualSelection, supportsLandingPage, supportsEmptyDataView.
Network access: none (no privileges requested, no external request).

## Format pane options (145)

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)

**Orientation**

| Option ID | Label (EN) | Label (FR) | Control | Type | Default | Allowed values | Notes |
|---|---|---|---|---|---|---|---|
| `layout.orientation` | Word orientation | Orientation des mots | dropdown | enumeration | `hv` | `horizontal` All horizontal; `hv` Horizontal and vertical; `vertical` All vertical; `diagonal` Horizontal and diagonals (±45°); `range` From one angle to another (even steps); `random` Free angles between two limits |  |
| `layout.rotatedShare` | Share of rotated words (%) | Part des mots tournés (%) | number | integer | `25` | 0 to 100 | Visible when `layout.orientation` = `hv` or `diagonal` |
| `layout.verticalDir` | Direction of vertical words | Sens des mots verticaux | dropdown | enumeration | `up` | `up` Bottom to top; `down` Top to bottom | Visible when `layout.orientation` = `hv` or `vertical` |
| `layout.angleFrom` | Start angle (°) | Angle de départ (°) | number | integer | `-60` | -90 to 90 | Visible when `layout.orientation` = `range` or `random` |
| `layout.angleTo` | End angle (°) | Angle d'arrivée (°) | number | integer | `60` | -90 to 90 | Visible when `layout.orientation` = `range` or `random` |
| `layout.steps` | Number of orientations | Nombre d'orientations | number | integer | `5` | 2 to 19 | Visible when `layout.orientation` = `range` |

**Placement**

| Option ID | Label (EN) | Label (FR) | Control | Type | Default | Allowed values | Notes |
|---|---|---|---|---|---|---|---|
| `layout.spacing` | Spacing between words (px) | Espacement entre les mots (px) | number | integer | `2` | 0 to 30 |  |
| `layout.fit` | Size fitting | Ajustement des tailles | dropdown | enumeration | `auto` | `auto` Fill the shape (shrink or enlarge); `shrink` Shrink only when needed; `none` Fixed sizes | Fill the shape: the words grow until they fill the shape (never below the minimum size); when the shape is small for every word, the least frequent ones are left out rather than shrinking everything. |
| `layout.spiral` | Placement spiral | Spirale de placement | dropdown | enumeration | `archimedean` | `archimedean` Round (cloud); `rectangular` Rectangular (block) |  |
| `layout.seed` | Layout variant | Variante de disposition | number | integer | `1` | 1 to 999 | The layout is always the same for the same data; change this number to try another arrangement. |

**Fill ★ / Remplissage ★**

| Option ID | Label (EN) | Label (FR) | Control | Type | Default | Allowed values | Notes |
|---|---|---|---|---|---|---|---|
| `layout.repeat` | Fill the shape with repeated words ★ | Remplir la forme avec des répétitions ★ | toggle | bool | `false` | true / false | Once every word is placed, smaller copies fill the remaining space so that the shape reads clearly (texture). |
| `layout.repeatOpacity` | Repeated words opacity (%) | Opacité des répétitions (%) | number | integer | `55` | 10 to 100 |  |
| `layout.repeatMax` | Maximum number of repetitions | Nombre maximal de répétitions | number | integer | `900` | 50 to 3000 |  |

**Animation**

| Option ID | Label (EN) | Label (FR) | Control | Type | Default | Allowed values | Notes |
|---|---|---|---|---|---|---|---|
| `layout.intro` | Words appear | Apparition des mots | dropdown | enumeration | `grow` | `grow` From the center; `fade` Fade; `none` None | When the data changes. Never when animations are reduced (Style › Animations or the system). |

### 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 | `palette` | `palette` Palette (one color per word); `single` Single color; `weight` Gradient by size ★; `field` Gradient by the “Color” field ★; `change` Change (“Comparison” field) ★ |  |
| `dataColors.single` | Color | Couleur | color | fill | (empty) | hex color |  |
| `dataColors.fill` | Color | Couleur | color | fill | (empty) | hex color |  |
| `dataColors.gradient` | Gradient | Dégradé | dropdown | enumeration | `sequential` | `sequential` Sequential (style palette); `diverging` Diverging (around the middle) |  |
| `dataColors.byRank` | Colors in size order | Couleurs dans l'ordre des tailles | toggle | bool | `true` | true / false | Palette: the largest word takes the first color, the next one the second… Off: each word keeps its color whatever its size. |

### Words / Mots (`words`, Format pane)

**Text splitting / Découpage du texte**

| Option ID | Label (EN) | Label (FR) | Control | Type | Default | Allowed values | Notes |
|---|---|---|---|---|---|---|---|
| `words.split` | Split text into words | Découper le texte en mots | dropdown | enumeration | `auto` | `auto` Automatic (long texts); `on` Yes; `off` No (one value = one word or phrase) | Automatic: values of several words (comments, titles) are split into words; short labels are kept whole. |
| `words.ngrams` | Phrases | Expressions | dropdown | enumeration | `1` | `1` Single words; `2` Two-word phrases ★; `12` Words and two-word phrases ★; `3` Three-word phrases ★ | Phrases (“customer service”, “delivery time”) are counted like words; stop words never start or end a phrase. |
| `words.countMode` | Count | Compter | dropdown | enumeration | `occurrences` | `occurrences` Every occurrence; `rows` Once per row (answer, comment) ★ | Once per row: a word repeated in the same comment counts once (share of answers that use it). |
| `words.minLength` | Minimum length (letters) | Longueur minimale (lettres) | number | integer | `3` | 1 to 20 |  |
| `words.removeNumbers` | Ignore numbers | Ignorer les nombres | toggle | bool | `true` | true / false |  |
| `words.specialChars` | Keep special characters (#, @, emojis) | Garder les caractères spéciaux (#, @, émojis) | toggle | bool | `false` | true / false | Hashtags (#sale), mentions (@store), amounts ($20, 20€) and emojis are kept as words. |
| `words.elision` | Remove French elisions (l', d', qu'…) | Retirer les élisions (l', d', qu'…) | toggle | bool | `true` | true / false |  |
| `words.mergePlurals` | Merge singular and plural ★ | Regrouper singulier et pluriel ★ | toggle | bool | `false` | true / false | “order” and “orders” become one word (the most frequent form is shown). |

**Case / Casse**

| Option ID | Label (EN) | Label (FR) | Control | Type | Default | Allowed values | Notes |
|---|---|---|---|---|---|---|---|
| `words.textCase` | Word case | Casse des mots | dropdown | enumeration | `auto` | `auto` Most frequent form; `lower` lowercase; `upper` UPPERCASE; `title` Capitalized | Words are always grouped regardless of case (“Delivery” and “delivery” are one word). |

**Stop words / Mots vides**

| Option ID | Label (EN) | Label (FR) | Control | Type | Default | Allowed values | Notes |
|---|---|---|---|---|---|---|---|
| `words.stopWords` | Built-in stop words | Mots vides intégrés | dropdown | enumeration | `auto` | `auto` French and English; `fr` French; `en` English; `none` None | Common words without meaning of their own (the, and, le, de, pour…) are removed when the text is split. |
| `words.customStop` | Other words to exclude | Autres mots à exclure | textarea | text | (empty) |  | Case and accents ignored. The “Excluded words” field does the same with a text measure. |

**Number of words / Nombre de mots**

| Option ID | Label (EN) | Label (FR) | Control | Type | Default | Allowed values | Notes |
|---|---|---|---|---|---|---|---|
| `words.maxWords` | Maximum number of words (top N) | Nombre maximal de mots (N premiers) | number | integer | `150` | 1 to 1000 |  |
| `words.minWeight` | Minimum weight (0 = all) | Poids minimal (0 = tous) | number | numeric | `0` | 0 to … | Words whose weight (or number of occurrences) is below this value are not shown. |

### Word text / Texte des mots (`wordFont`, Format pane)

| Option ID | Label (EN) | Label (FR) | Control | Type | Default | Allowed values | Notes |
|---|---|---|---|---|---|---|---|
| `wordFont.font` | Font | Police | dropdown | enumeration | `auto` | `auto` Style font; `Segoe UI` Segoe UI; `Segoe UI Light` Segoe UI Light; `Segoe UI Semilight` Segoe UI Semilight; `Segoe UI Semibold` Segoe UI Semibold; `Segoe UI Black` Segoe UI Black; `Arial` Arial; `Arial Narrow` Arial Narrow · Office; `Aptos` Aptos · Office; `Bahnschrift` Bahnschrift; `Bahnschrift SemiCondensed` Bahnschrift SemiCondensed; `Bahnschrift Condensed` Bahnschrift Condensed; `Calibri` Calibri; `Calibri Light` Calibri Light; `Candara` Candara; `Century Gothic` Century Gothic · Office; `Corbel` Corbel; `Ebrima` Ebrima; `Franklin Gothic Medium` Franklin Gothic Medium; `Gadugi` Gadugi; `Gill Sans MT` Gill Sans MT · Office; `Leelawadee UI` Leelawadee UI; `Lucida Sans Unicode` Lucida Sans Unicode; `Microsoft Sans Serif` Microsoft Sans Serif; `Nirmala UI` Nirmala UI; `Tahoma` Tahoma; `Trebuchet MS` Trebuchet MS; `Tw Cen MT` Tw Cen MT · Office; `Verdana` Verdana; `Book Antiqua` Book Antiqua (serif) · Office; `Bookman Old Style` Bookman Old Style (serif) · Office; `Cambria` Cambria (serif); `Constantia` Constantia (serif); `Garamond` Garamond (serif) · Office; `Georgia` Georgia (serif); `Palatino Linotype` Palatino Linotype (serif); `Rockwell` Rockwell (serif) · Office; `Sitka Text` Sitka Text (serif); `Sitka Heading` Sitka Heading (serif); `Sylfaen` Sylfaen (serif); `Times New Roman` Times New Roman (serif); `Cascadia Code` Cascadia Code (monospace); `Cascadia Mono` Cascadia Mono (monospace); `Consolas` Consolas (monospace); `Courier New` Courier New (monospace); `Lucida Console` Lucida Console (monospace); `Comic Sans MS` Comic Sans MS (handwriting); `Gabriola` Gabriola (handwriting); `Ink Free` Ink Free (handwriting); `MV Boli` MV Boli (handwriting); `Segoe Print` Segoe Print (handwriting); `Segoe Script` Segoe Script (handwriting); `Bradley Hand ITC` Bradley Hand ITC (handwriting) · Office; `Lucida Handwriting` Lucida Handwriting (handwriting) · Office; `Arial Black` Arial Black (display); `Impact` Impact (display) | Fonts installed with Windows or Microsoft Office (no web font); a similar font is used when one is missing. |
| `wordFont.fontWeight` | Weight | Graisse | dropdown | enumeration | `semibold` | `normal` Regular; `semibold` Semibold; `bold` Bold; `bySize` Bold for the largest words |  |
| `wordFont.italic` | Italic | Italique | toggle | bool | `false` | true / false |  |
| `wordFont.minSize` | Minimum size (px) | Taille minimale (px) | number | formatting | `11` | 6 to 80 |  |
| `wordFont.maxSize` | Maximum size (px) | Taille maximale (px) | number | formatting | `64` | 8 to 300 |  |
| `wordFont.sizeScale` | Size by weight | Taille selon le poids | dropdown | enumeration | `sqrt` | `linear` Linear; `sqrt` Square root (balanced); `log` Logarithmic (compressed) ★; `rank` By rank ★ | Weight = the “Size” measure, or the number of occurrences without it. |
| `wordFont.weightMax` | Weight at the maximum size (empty = automatic) | Poids de la taille maximale (vide = automatique) | text | text | (empty) |  | Keeps the sizes when another visual filters the cloud: a measure named wordFont.weightMax in “Dynamic format”, e.g. CALCULATE ( MAXX ( VALUES ( Topics[Topic] ), [Mentions] ), ALL ( Topics ) ) (ALL or REMOVEFILTERS ignores the filter; ALLSELECTED follows it), with Layout › Size fitting › Fixed sizes. |

### Shape / Forme (`shape`, Format pane)

| Option ID | Label (EN) | Label (FR) | Control | Type | Default | Allowed values | Notes |
|---|---|---|---|---|---|---|---|
| `shape.shape` | Shape | Forme | dropdown | enumeration | `oval` | `oval` Oval (fills the visual); `rect` Rectangle (fills the visual); `custom` Custom SVG ★; `circle` Basic · Circle; `square` Basic · Square; `roundedSquare` Basic · Rounded square; `rectangle` Basic · Rectangle; `triangle` Basic · Triangle; `diamond` Basic · Diamond; `hexagon` Basic · Hexagon; `star` Basic · Star; `heart` Basic · Heart; `ellipse` Basic · Ellipse ★; `pentagon` Basic · Pentagon ★; `octagon` Basic · Octagon ★; `rightTriangle` Basic · Right triangle ★; `parallelogram` Basic · Parallelogram ★; `trapezoid` Basic · Trapezoid ★; `ring` Basic · Ring ★; `semicircle` Basic · Semicircle ★; `arch` Basic · Arch ★; `capsule` Basic · Pill ★; `star6` Basic · Six-pointed star ★; `seal` Basic · Seal ★; `cross` Basic · Cross ★; `arrow` Arrows and symbols · Arrow; `arrowUp` Arrows and symbols · Arrow up ★; `arrowDown` Arrows and symbols · Arrow down ★; `arrowLeft` Arrows and symbols · Arrow left ★; `doubleArrow` Arrows and symbols · Double arrow ★; `chevron` Arrows and symbols · Chevron ★; `check` Arrows and symbols · Check mark ★; `close` Arrows and symbols · Close (X) ★; `plus` Arrows and symbols · Plus ★; `minus` Arrows and symbols · Minus ★; `warning` Arrows and symbols · Warning ★; `info` Arrows and symbols · Information ★; `playButton` Arrows and symbols · Play button ★; `bubble` Arrows and symbols · Speech bubble; `thought` Arrows and symbols · Thought bubble ★; `flag` Arrows and symbols · Flag ★; `bookmark` Arrows and symbols · Bookmark ★; `tag` Arrows and symbols · Tag ★; `bolt` Arrows and symbols · Lightning bolt ★; `shield` Arrows and symbols · Shield ★; `award` Arrows and symbols · Award ★; `puzzle` Arrows and symbols · Puzzle piece ★; `gear` Arrows and symbols · Gear ★; `lock` Arrows and symbols · Lock ★; `key` Arrows and symbols · Key ★; `bell` Arrows and symbols · Bell ★; `eye` Arrows and symbols · Eye ★; `cloud` Nature and weather · Cloud; `drop` Nature and weather · Drop; `sun` Nature and weather · Sun ★; `moon` Nature and weather · Moon ★; `snowflake` Nature and weather · Snowflake ★; `leaf` Nature and weather · Leaf ★; `pine` Nature and weather · Pine tree ★; `tree` Nature and weather · Tree ★; `flower` Nature and weather · Flower ★; `mountain` Nature and weather · Mountain ★; `wave` Nature and weather · Wave ★; `flame` Nature and weather · Flame ★; `umbrella` Nature and weather · Umbrella ★; `apple` Nature and weather · Apple ★; `fish` Nature and weather · Fish ★; `paw` Nature and weather · Paw print ★; `rain` Nature and weather · Rain ★; `sprout` Nature and weather · Sprout ★; `person` People · Person; `man` People · Man ★; `woman` People · Woman ★; `child` People · Child ★; `people` People · Group of people ★; `bust` People · User bust ★; `house` Objects and buildings · House; `building` Objects and buildings · Office building ★; `factory` Objects and buildings · Factory ★; `castle` Objects and buildings · Castle ★; `shop` Objects and buildings · Shop ★; `bank` Objects and buildings · Bank ★; `hospital` Objects and buildings · Hospital ★; `book` Objects and buildings · Book ★; `envelope` Objects and buildings · Envelope ★; `phone` Objects and buildings · Phone ★; `laptop` Objects and buildings · Laptop ★; `monitor` Objects and buildings · Monitor ★; `gift` Objects and buildings · Gift ★; `clock` Objects and buildings · Clock ★; `calendar` Objects and buildings · Calendar ★; `pencil` Objects and buildings · Pencil ★; `lightbulb` Objects and buildings · Light bulb ★; `cup` Objects and buildings · Trophy ★; `crown` Objects and buildings · Crown ★; `trashCan` Objects and buildings · Trash can ★; `barrel` Containers and gauges · Barrel; `bottle` Containers and gauges · Bottle; `wineGlass` Containers and gauges · Wine glass; `glass` Containers and gauges · Glass; `mug` Containers and gauges · Mug ★; `jar` Containers and gauges · Jar ★; `bucket` Containers and gauges · Bucket ★; `battery` Containers and gauges · Battery; `batteryVertical` Containers and gauges · Vertical battery; `thermometer` Containers and gauges · Thermometer; `testTube` Containers and gauges · Test tube ★; `tank` Containers and gauges · Tank ★; `funnel` Containers and gauges · Funnel ★; `hourglass` Containers and gauges · Hourglass ★; `bag` Containers and gauges · Bag ★; `piggyBank` Containers and gauges · Piggy bank ★; `flask` Containers and gauges · Flask ★; `beaker` Containers and gauges · Beaker ★; `can` Containers and gauges · Can ★; `coffeeCup` Containers and gauges · Coffee cup ★; `vase` Containers and gauges · Vase ★; `milkCarton` Containers and gauges · Milk carton ★; `france` Maps and places · Metropolitan France ★; `africa` Maps and places · Africa ★; `australia` Maps and places · Australia ★; `southAmerica` Maps and places · South America ★; `pin` Maps and places · Map pin ★; `globe` Maps and places · Globe ★; `foldedMap` Maps and places · Folded map ★; `compass` Maps and places · Compass ★; `city` Maps and places · City skyline ★; `target` Business · Target ★; `barChart` Business · Bar chart ★; `pieChart` Business · Pie chart ★; `trendUp` Business · Trend up ★; `coin` Business · Coin ★; `banknote` Business · Banknote ★; `wallet` Business · Wallet ★; `creditCard` Business · Credit card ★; `cart` Business · Shopping cart ★; `briefcase` Business · Briefcase ★; `percent` Business · Percent ★; `podium` Business · Podium ★; `megaphone` Business · Megaphone ★; `gem` Business · Gem ★; `medal` Business · Medal ★; `clipboard` Business · Clipboard ★; `handshake` Business · Handshake ★; `car` Transport · Car ★; `truck` Transport · Truck ★; `bus` Transport · Bus ★; `bicycle` Transport · Bicycle ★; `plane` Transport · Plane ★; `boat` Transport · Sailboat ★; `train` Transport · Train ★; `rocket` Transport · Rocket ★; `helicopter` Transport · Helicopter ★; `ship` Transport · Cargo ship ★; `fuel` Transport · Fuel pump ★; `scooter` Transport · Scooter ★ | The words fill this shape. ★ shapes and the custom SVG show the premium watermark without a license. |
| `shape.svg` | Shape SVG | SVG de la forme | textarea | text | (empty) |  | Visible when `shape.shape` = `custom`. Paste an SVG (or a path “d”); it is cleaned (no script, no web link). The “Shape (SVG)” field does the same with a measure. |
| `shape.fit` | Proportions | Proportions | dropdown | enumeration | `contain` | `contain` Keep proportions; `stretch` Stretch to fill the visual | Visible when `shape.shape` = `custom` or `circle` or `square` or `roundedSquare` or `rectangle` or `triangle` or `diamond` or `hexagon` or `star` or `heart` or `ellipse` or `pentagon` or `octagon` or `rightTriangle` or `parallelogram` or `trapezoid` or `ring` or `semicircle` or `arch` or `capsule` or `star6` or `seal` or `cross` or `arrow` or `arrowUp` or `arrowDown` or `arrowLeft` or `doubleArrow` or `chevron` or `check` or `close` or `plus` or `minus` or `warning` or `info` or `playButton` or `bubble` or `thought` or `flag` or `bookmark` or `tag` or `bolt` or `shield` or `award` or `puzzle` or `gear` or `lock` or `key` or `bell` or `eye` or `cloud` or `drop` or `sun` or `moon` or `snowflake` or `leaf` or `pine` or `tree` or `flower` or `mountain` or `wave` or `flame` or `umbrella` or `apple` or `fish` or `paw` or `rain` or `sprout` or `person` or `man` or `woman` or `child` or `people` or `bust` or `house` or `building` or `factory` or `castle` or `shop` or `bank` or `hospital` or `book` or `envelope` or `phone` or `laptop` or `monitor` or `gift` or `clock` or `calendar` or `pencil` or `lightbulb` or `cup` or `crown` or `trashCan` or `barrel` or `bottle` or `wineGlass` or `glass` or `mug` or `jar` or `bucket` or `battery` or `batteryVertical` or `thermometer` or `testTube` or `tank` or `funnel` or `hourglass` or `bag` or `piggyBank` or `flask` or `beaker` or `can` or `coffeeCup` or `vase` or `milkCarton` or `france` or `africa` or `australia` or `southAmerica` or `pin` or `globe` or `foldedMap` or `compass` or `city` or `target` or `barChart` or `pieChart` or `trendUp` or `coin` or `banknote` or `wallet` or `creditCard` or `cart` or `briefcase` or `percent` or `podium` or `megaphone` or `gem` or `medal` or `clipboard` or `handshake` or `car` or `truck` or `bus` or `bicycle` or `plane` or `boat` or `train` or `rocket` or `helicopter` or `ship` or `fuel` or `scooter`. Keep proportions: a heart stays a heart (it fills the height of a wide visual). Stretch: the shape covers the whole visual. |
| `shape.silhouette` | Silhouette in the background ★ | Silhouette en fond ★ | toggle | bool | `false` | true / false |  |
| `shape.silhouetteColor` | Silhouette color (empty = grid) | Couleur de la silhouette (vide = grille) | color | fill | (empty) | hex color | Visible when `shape.silhouette` = `true` |
| `shape.silhouetteOpacity` | Silhouette opacity (%) | Opacité de la silhouette (%) | number | integer | `40` | 5 to 100 | Visible when `shape.silhouette` = `true` |
| `shape.margin` | Margin around the shape (px) | Marge autour de la forme (px) | number | integer | `4` | 0 to 80 |  |

### 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 | `bottom` | `top` Top; `bottom` Bottom; `right` Right; `left` Left |  |
| `legend.align` | Alignment | Alignement | dropdown | enumeration | `center` | `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 |  |

### Comparison ★ / Comparaison ★ (`comparison`, 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 |
|---|---|---|---|---|---|---|---|
| `comparison.arrows` | ▲▼ arrows in the cloud | Flèches ▲▼ dans le nuage | toggle | bool | `true` | true / false | The direction is also written in the tooltip: the meaning never relies on color alone. |
| `comparison.lowerIsBetter` | A decrease is favorable | Une baisse est favorable | toggle | bool | `false` | true / false |  |
| `comparison.neutral` | Negligible change (± %) | Variation négligeable (± %) | number | integer | `5` | 0 to 100 |  |
| `comparison.risingColor` | Favorable color (empty = style) | Couleur favorable (vide = style) | color | fill | (empty) | hex color |  |
| `comparison.fallingColor` | Unfavorable color (empty = style) | Couleur défavorable (vide = style) | color | fill | (empty) | hex color |  |
| `comparison.newWords` | Mark new words (✦) | Marquer les nouveaux mots (✦) | toggle | bool | `true` | true / false |  |

### 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). |

### 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. |

### Other objects (not in the Format pane cards above)

- `compare`: `compare.arrows` (bool), `compare.lowerIsBetter` (bool), `compare.neutral` (integer), `compare.risingColor` (fill), `compare.fallingColor` (fill), `compare.newWords` (bool).