Streamgraph pour Power BI Stream Plume
Comment la composition d'un total évolue dans le temps : des flux qui coulent, nommés là où ils sont les plus épais.
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 ».
Stream Plume dessine un streamgraph : chaque catégorie (canal, produit, source d'énergie) est un flux dont l'épaisseur suit sa valeur, et les flux coulent autour d'un axe central sans bord droit pour mieux montrer les tendances. Les plus gros sont au centre, les bords lissés ne se croisent jamais, le nom de chaque flux est écrit dans le flux, là où il est le plus épais, sans chevauchement. Survolez un flux pour le mettre en avant, cliquez pour filtrer la page. Flux centrés, 100 % et aires empilées en un réglage ; petits multiples à échelle commune ; échelle de grandeur à la place d'un axe sans zéro. En premium : mise en avant automatique des plus fortes hausses ou baisses, Top N et « Autres », valeurs de début et de fin, période de référence et écarts, événements par liste ou par mesure, navigateur et lecture animée avec classement.
Cas d'usage
- Chiffre d'affaires par canal ou par gamme, mois par mois
- Mix énergétique, parts de marché, répartition du budget sur plusieurs années
- Tickets de support par catégorie, visites par source de trafic
- Avant / après : écart de chaque flux à une période de référence
GratuitInclus gratuitement
- Flux ondulants (streamgraph), centrés, 100 % ou aires empilées ; les plus gros au centre, par total, par nom ou ordre personnalisé
- Bords lissés qui ne se croisent jamais ou droits ; hachures pour l'impression
- Nom de chaque flux écrit dans le flux, taille selon l'épaisseur, sans chevauchement ; valeur ou total en option
- Survol qui met un flux en avant, infobulle détaillée (part, rang, évolution), sélection croisée, surbrillance
- Axe de dates, d'années ou de catégories ; échelle de grandeur ; axe Y pour les aires empilées et le 100 %
- Petits multiples à échelle commune ; révélation de gauche à droite au chargement ; 30 000 lignes et plus
- Lignes de référence (volet Analyse), quadrillage, exploration de l'axe de temps
- Formats dynamiques : bouton fx sur les couleurs et les textes, tout réglage piloté en DAX
PremiumFonctions premium
- Mise en avant : plus fortes hausses ou baisses, plus gros ou flux nommés ; dégradé du style
- Top N et « Autres », valeurs de début et de fin avec l'évolution, dégradé vers le présent
- Période de référence : écart de chaque flux dans l'infobulle et les étiquettes
- Annotations comme dans Line Plume : liste ou mesure DAX, ancrées sur un flux, périodes ombrées, déplacées à la souris
- Lecture animée (curseur ▶) avec classement à chaque date ; navigateur (mini-graphique et fenêtre)
- Ordre par date du pic, bords en escalier, étiquettes « nom et part du total »
- 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.
- Prise en mainDébutant7 min de lectureUn streamgraph dans Power BI : voir la composition changerPrise en main de Stream Plume : préparer une table mensuelle par canal, insérer le visuel, lire les flux, changer de disposition et filtrer la page d'un clic.
- Cas pratiquesIntermédiaire6 min de lectureStream Plume : 10 cas pratiques pour lire une compositionPas à pas : parts en 100 %, total de chaque flux, ordre imposé, petits multiples, plus fortes hausses, Top N, période de référence, événements, navigateur, lecture.
- Champs et réglagesIntermédiaire23 min de lectureStream Plume : tous les champs et réglages expliquésChaque zone de champ et chaque réglage du volet Format et du volet Analyse de Stream Plume : à quoi il sert, ses valeurs possibles et sa valeur par défaut.
- Bases communesBien démarrer avec les visuels PlumeInstallation, licence, styles et réglages communs à tous les visuels.
Champs à glisser dans le visuel
| Champ | Contenu | |
|---|---|---|
| Axe de temps | Date, année ou catégorie ordonnée (pas la hiérarchie automatique) | Obligatoire |
| Flux (légende) | Un flux par valeur : canal, produit, source | Facultatif |
| Valeurs | Une mesure avec la légende, ou plusieurs mesures (une par flux) | Obligatoire |
| Petits multiples | Un panneau par valeur (région, pays) | Facultatif |
| Annotations (texte) | Mesure texte : une annotation là où elle n'est pas vide | FacultatifPremium |
| Infobulles | Mesures supplémentaires | Facultatif |
| Format dynamique | Mesures renommées carte.réglage (ex. title.text) : le volet Format piloté en DAX | Facultatif |
Il vous manque une fonction ? Nous adaptons nos visuels ou en créons sur mesure. Demander un visuel sur mesure
Un bug dans Stream 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/stream-graph.md)# Stream 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 Stream 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/stream-graph (French: https://plumevisuals.com/fr/visuels/stream-graph)
- Summary: How the make-up of a total changes over time: flowing streams, named where they are thickest.
- Power BI visual GUID (`visualType`): `plumeStreamGraphBD58E5BDB1F84D8B9E68756C1DFFB2D4`
- 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
Stream Plume (identifier `stream-graph`) is a Power BI custom visual (version 1.1.0.0, installed from its `.pbiviz` file; not yet on AppSource) that draws **streamgraphs**: stacked areas flowing around a central axis, to show how the make-up of a total changes over time. Power BI Desktop has no native streamgraph (only stacked areas on zero); Microsoft's free Stream Graph visual has per-point labels and fixed tooltips.
**New in version 1.1.0.0 (30/10/2026):** Format pane reorganized (new **Gridlines** card, `events` → `annotations`, `reference` → `refPeriod`); free reference lines (Analytics pane), annotations like Line Plume (anchored on a stream), playback on the shared player (`play.speed` per frame, autoplay); `play.duration` is no longer read.
- **Four layouts** (`streams.offset`): `wiggle` (flowing streams, Byron and Wattenberg's weighted-wiggle baseline, then straightened so the chart does not drift), `silhouette` (symmetric around a straight line), `expand` (each date = 100%), `zero` (classic stacked areas with a Y axis).
- **Stream order** (`streams.order`, bottom to top): `insideOut` (largest in the middle, default), `total`, `peak` ★ (by peak date), `name`, `data`, `custom` (`streams.customOrder` = names separated by `;`; others follow); `streams.reverse`.
- **Smooth edges that never cross** (`streams.curve` = `smooth`, a clamped B-spline like d3.curveBasis), `linear` or `step` ★.
- **Stream names written inside the streams**, where they are thickest, sized by thickness (`streamLabels.autoSize`, `fontSize` min 10, `maxSize` 15), never overlapping; a stream too thin keeps no label. Content: name, name and value, name and total, name and share, name and change vs. the reference period ★.
- **Size scale**: flowing and centered streams have no zero, so a vertical "↕ 200 k€" marker replaces the Y axis (`yAxis.scaleBar`); `zero` and `expand` show a real Y axis.
- Hover a stream: the others fade; tooltip with value, share, rank, change vs. previous point, total at the date, Tooltips measures (or every stream at the date with `tooltip.tipAll`). Click = select the stream (Ctrl for several), legend click too, cross-highlighting drawn as the highlighted part of each stream.
- **Small multiples** (`multiples` role): one panel per value, shared scale (same thickness for the same value) free, independent scale ★.
- **Time**: a left-to-right reveal when shown and when the data changes (`streams.reveal`), edges glide when only values change; "Reduce motion" respected. ★ playback cursor (`play.controls`, premium since the 22/10/2026 rebalancing; the reveal on loading stays free), with a ★ live ranking; ★ navigator.
## 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 and `style.themeJson` ("Theme JSON ★") are **premium**.
- Free in Stream Plume: the four layouts, the orders `insideOut`, `total`, `name`, `data`, `custom`, smooth and straight edges, solid and **hatch** fills, opacity and separator, labels (name, value, total), size scale, Y axis, legend, small multiples with a shared scale, reveal animation, tooltips, selection, highlighting, keyboard.
- Premium features of Stream Plume:
- `dataColors.mode` = `gradient` (style gradient by size) or `highlight` (`highlightWhat` = `risers` | `fallers` | `top` | `names`, `highlightN`, `highlightNames`, `highlightColor`, `othersColor`);
- `streams.fill` = `gradient` (gradient toward the present); `streams.topN` (Top N + "Others": `n`, `othersLabel`, `othersColor`);
- `edgeValues.show` (start and end values, `side`, `content` = `value` | `share` | `valueChange` | `nameValue`);
- `streamLabels.content` = `nameChange`;
- `refPeriod.show` (Analytics pane: `from`, `to`, `label`, `shade`, `color`, `opacity`, `tooltip`);
- `events` (Analytics pane: `list`) and the `events` role (text measure);
- `navigator.show` (`height`, `from`, `to`); `play.ranking` (ranking at the cursor date, `rankCount`; counts only when `play.controls` is on);
- `smallMultiples.scale` = `independent`;
- since the 22/10/2026 rebalancing: `play.controls` (playback cursor, card « Lecture ★ » / « Playback ★ », at least two axis positions); `streams.order` = `peak` (at least two streams); `streams.curve` = `step` (at least two positions); `streamLabels.content` = `nameShare` (labels shown).
- The watermark is decided on ★ features **really applied**: a highlight that finds no stream, a Top N that groups nothing, a reference period outside the axis or an empty event list show no watermark.
- 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.
- Accepted keys: only keys starting with `PLUM1.` shown in the buyer's account on plumevisuals.com, checked offline (Ed25519 signature), covering `stream-graph` or the whole catalog. Licenses last one year (one-time payment). Prices: 39 € personal, 99 € SME, 299 € enterprise per year, or the catalog pack.
## Expected data shape
One row per date and per category, with a measure for the amount.
| Time axis (`axis`) | Streams (`series`) | Values (`values`) |
|---|---|---|
| 2025-01-01 | Web | 61,000 |
| 2025-01-01 | Stores | 42,000 |
| 2025-02-01 | Web | 66,000 |
- **Time axis** (`axis`, « Axe de temps », one column, required): a date **column** (not the automatic date hierarchy) gives a continuous time axis; an integer column between 1000 and 3000 is read as years; text gives a category axis in data order (`xAxis.type` = `categorical` forces it).
- **Streams (legend)** (`series`, « Flux (légende) », one column): one stream per value, with exactly one measure in Values. Without it, each measure in Values is a stream.
- **Values** (`values`, « Valeurs »): the thickness. Negative values count as zero (warning in edit mode); missing values count as zero.
- **Small multiples** (`multiples`), **Events (text) ★** (`events`, text measure: a marker wherever it is not empty), **Tooltips** (`tooltips`), **Dynamic format** (`format`).
- Data view: categorical mapping with Small multiples, Time axis and Streams as **categories** (one row per point), so the 30,000-row window applies to every point; more rows are fetched with `fetchMoreData` up to 100,000. Beyond one point per 1.5 pixels, neighboring dates are averaged into groups (tooltip "start – end"). 100,004 rows render in under 4 s.
## DAX recipes
```dax
Revenue = SUM ( Sales[Amount] )
// Events (text) ★: a marker on September 2023
Event = IF ( MAX ( Sales[Month] ) = DATE ( 2023, 9, 1 ), "Marketplaces launch" )
// Dynamic format, renamed title.text: a title computed on the whole selection
Sales title = "Revenue by channel: " & FORMAT ( CALCULATE ( [Revenue], ALLSELECTED () ), "$#,0" )
```
## List syntax
- `streams.customOrder`: `Stores; Web` (bottom to top, case and accents ignored).
- `dataColors.highlightNames`: `Web; Export`.
- `annotations.list` ★: one line per event, `x | text | #RRGGBB` (color optional), `x1..x2 | text` for a shaded period; x = date (`2020-03-17`, `2020-03`, `2020`, `17/03/2020`), number or category as displayed; `#` or `//` lines are comments.
- `refPeriod.from` / `refPeriod.to`, `navigator.from` / `navigator.to`: same formats; an empty `refPeriod.to` = the same period (`2019` = the 12 months of 2019).
## Interactions with the report
- Click a stream: cross-filter on that stream value (identity of the Streams value alone); Ctrl for several; click "Others" = all grouped streams; click an empty area clears. Legend click selects, legend hover brings the stream forward.
- Context menu everywhere (on a stream: the point = small multiple + date + stream; elsewhere: the visual).
- Keyboard: Tab to the chart, ← → dates, ↑ ↓ streams, Enter selects, Esc clears (and stops playback). ARIA labels and screen reader announcements in French and English.
- Navigator ★: drag the window or its handles, wheel zoom on the chart, double-click to reset; the window is per session (not saved). Playback ★: ▶ / Pause button at the top right, Esc stops; steps instead of a smooth glide when motion is reduced.
- The visual never calls `persistProperties`.
## Format pane: option IDs
- Card order: `license`, `style`, `dataColors`, `streams`, `streamLabels`, `edgeValues`, `xAxis`, `yAxis`, `legend`, `smallMultiples`, `navigator`, `play`, `interaction`, then `title`, `source`, `container`, `texts`; Analytics pane: `reference`, `annotations`. Format pane in version 1.1.0.0 (30/10/2026), top to bottom: `license`, `style`, `dataColors`, `streams`, `streamLabels`, `edgeValues`, `xAxis`, `yAxis`, `gridlines`, `legend`, `annotations`, `navigator`, `smallMultiples`, `play`, `interaction`, `tooltip`, `title`, `source`, `container`, `texts`; Analytics pane: `refPeriod`, `reference`. Settings moved or renamed in this version keep working in older reports (the old names are still read).
- `streams`: `offset` (`wiggle` | `silhouette` | `expand` | `zero`), `order` (`insideOut` | `total` | `peak` ★ | `name` | `data` | `custom`), `customOrder`, `reverse`, `curve` (`smooth` | `linear` | `step` ★), `fill` (`solid` | `gradient` ★ | `hatch`), `opacity` (10–100, 92), `outline`, `outlineWidth` (0.8), `reveal`, `topN` ★, `n` (8), `othersLabel`, `othersColor`.
- `streamLabels`: `show`, `content` (`name` | `nameValue` | `nameTotal` | `nameShare` ★ | `nameChange` ★), `placement` (`thickest` | `end` | `start`), `autoSize`, `fontSize` (10), `maxSize` (15), `color`, `bold`, `halo`, `hideLegend`, `units`, `decimals`, `prefix`, `suffix`.
- `edgeValues` ★: `show`, `side` (`both` | `end` | `start`), `content`, `fontSize` (9), `colorBy` (`series` | `text`), `units`, `decimals`, `prefix`, `suffix`.
- `xAxis`: `show`, `fontSize`, `color`, `labelMode`, `maxSize`, `line`, `type` (`auto` | `continuous` | `categorical`), `dateFormat`, `showTitle`, `titleText`, `gridlines.vShow` (on), `gridlines.vStyle`.
- `yAxis`: `show`, `scaleBar`, `position`, `fontSize`, `color`, `units`, `decimals`, `prefix`, `suffix`, `line`, `min`, `max`, `ticks`, `showTitle`, `titleText`, `gridlines.hShow`, `gridlines.hStyle`, `gridlines.hColor`, `gridlines.zeroLine`.
- `smallMultiples`: `columns` (0 = auto), `gap` (14), `scale` (`shared` | `independent` ★), `border`, `titleShow`, `titleSize`, `titleColor`, `titleTotal`.
- `navigator` ★: `show`, `height` (38), `from`, `to`. `play` (shared player): `controls` ★, `speed` (duration of one frame in ms; replaces the former `duration` of a whole run, which is no longer read), `loop`, `autoPlay`, `start`, `ranking` ★ (off), `rankCount` (5).
- `interaction`: `hover`, `dim` (25), `crosshair`, `tooltip.tipAll`. `reference` ★ and `events` ★: see above.
## Editing a PBIP report (visual.json)
`visualType` is the visual GUID, `queryState` keys are the data role names, `objects` keys are the option IDs.
```json
{
"visualType": "plumeStreamGraphBD58E5BDB1F84D8B9E68756C1DFFB2D4",
"query": {
"queryState": {
"axis": { "projections": [ { "field": { "Column": { "Expression": { "SourceRef": { "Entity": "Sales" } }, "Property": "Month" } }, "queryRef": "Sales.Month", "nativeQueryRef": "Month" } ] },
"series": { "projections": [ { "field": { "Column": { "Expression": { "SourceRef": { "Entity": "Sales" } }, "Property": "Channel" } }, "queryRef": "Sales.Channel", "nativeQueryRef": "Channel" } ] },
"values": { "projections": [ { "field": { "Measure": { "Expression": { "SourceRef": { "Entity": "Sales" } }, "Property": "Revenue" } }, "queryRef": "Sales.Revenue", "nativeQueryRef": "Revenue" } ] }
}
},
"objects": {
"streams": [ { "properties": { "offset": { "expr": { "Literal": { "Value": "'silhouette'" } } } } } ],
"streamLabels": [ { "properties": { "content": { "expr": { "Literal": { "Value": "'nameTotal'" } } }, "hideLegend": { "expr": { "Literal": { "Value": "true" } } } } } ]
}
}
```
## Styles and theme JSON
- `style.preset` takes one of the 20 style IDs shared by every Plume visual. `minimal` hides the vertical grid and the legend (names stay in the streams); `blackWhite` uses hatching; a style with `fill` = `hatch` or `outlined` changes the fill when it was left at its default.
- `style.themeJson` (Theme JSON ★): see https://plumevisuals.com/ai/tutorials/en/themes-json.md.
## Common pitfalls
- One wide stream, or one stream per year: the date hierarchy is used instead of the date column.
- No Y axis: expected for `wiggle` and `silhouette` (no zero); read the size scale or use `zero` / `expand`.
- A stream has no label: it is too thin everywhere; lower `streamLabels.fontSize`.
- "Negative values counted as zero": a stream cannot be negative; use Waterfall Plume or Bar Plume for changes.
- Watermark visible: a ★ feature really applied (see above), a ★ style or a theme JSON, without a valid key.
- The visual makes no network request: data and license key stay in the report.
## Features that do NOT exist (do not suggest them)
Negative streams or diverging streams, a saved navigator window or playback position, streams scrolled vertically in small multiples, image textures, exporting the chart as an image, a separate Play axis field (the time axis itself is played: `play.controls`), speed buttons on a play bar.
## 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 |
|---|---|---|---|---|---|
| `axis` | Time axis | Axe de temps | column | 4 | Date, year, number or ordered category (months, quarters…) along which the streams flow. |
| `series` | Streams (legend) | Flux (légende) | column | 1 | One stream per value of this field. Without it, each measure in Values is a stream. |
| `values` | Values | Valeurs | measure | several | |
| `multiples` | Small multiples | Petits multiples | column | 1 | |
| `events` | Annotations (text) ★ | Annotations (texte) ★ | measure | 1 | Optional text measure: a vertical marker with its text wherever it is not empty. |
| `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 = `multiples` + `axis` + `series` (one row per combination), 30,000 rows per data window (more fetched automatically); measures = `values`, `events`, `tooltips`, `format`.
Capabilities: supportsHighlight, supportsKeyboardFocus, supportsMultiVisualSelection, supportsLandingPage, supportsEmptyDataView.
Network access: none (no privileges requested, no external request).
## Format pane options (249)
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. |
### 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 | `auto` | `auto` Palette (one color per stream); `gradient` Style gradient (largest to smallest) ★; `highlight` Highlight streams ★ | |
| `dataColors.single` | Color | Couleur | color | fill | (empty) | hex color | |
| `dataColors.fill` | Color | Couleur | color | fill | (empty) | hex color | |
| `dataColors.highlightWhat` | Highlighted streams | Flux mis en avant | dropdown | enumeration | `risers` | `risers` Biggest risers; `fallers` Biggest fallers; `top` Largest; `names` Named streams | Risers and fallers: from the first to the last point shown (or since the reference period when it is shown). |
| `dataColors.highlightN` | Number of streams | Nombre de flux | number | integer | `2` | 1 to 20 | |
| `dataColors.highlightNames` | Stream names (separated by ;) | Noms des flux (séparés par ;) | text | text | (empty) | | |
| `dataColors.highlightColor` | Highlight color (empty = stream color) | Couleur mise en avant (vide = celle du flux) | color | fill | (empty) | hex color | |
| `dataColors.othersColor` | Other streams color (empty = style gray) | Couleur des autres flux (vide = gris du style) | color | fill | (empty) | hex color | |
### Streams / Flux (`streams`, Format pane)
**Layout / Disposition**
| Option ID | Label (EN) | Label (FR) | Control | Type | Default | Allowed values | Notes |
|---|---|---|---|---|---|---|---|
| `streams.offset` | Layout | Disposition | dropdown | enumeration | `wiggle` | `wiggle` Flowing streams (streamgraph); `silhouette` Centered on the axis; `expand` 100% (shares of the total); `zero` Stacked areas (from zero) | Flowing streams: the baseline follows the streams to minimize slopes (Byron and Wattenberg streamgraph). Centered: symmetric around a line. 100%: each date adds up to 100%. Stacked areas: from zero, with a Y axis. |
| `streams.order` | Stream order | Ordre des flux | dropdown | enumeration | `insideOut` | `insideOut` Largest in the middle; `total` By total (largest at the bottom); `peak` By peak date ★; `name` By name (A → Z, bottom to top); `data` Data order; `custom` Custom order | |
| `streams.customOrder` | Bottom-to-top order (names separated by ;) | Ordre de bas en haut (noms séparés par ;) | text | text | (empty) | | Visible when `streams.order` = `custom`. Streams not listed follow, in "Largest in the middle" order. |
| `streams.reverse` | Reverse the order | Inverser l'ordre | toggle | bool | `false` | true / false | |
| `streams.curve` | Edge shape | Forme des bords | dropdown | enumeration | `smooth` | `smooth` Smooth; `linear` Straight; `step` Step ★ | |
**Look / Apparence**
| Option ID | Label (EN) | Label (FR) | Control | Type | Default | Allowed values | Notes |
|---|---|---|---|---|---|---|---|
| `streams.fill` | Fill | Remplissage | dropdown | enumeration | `solid` | `solid` Solid; `gradient` Gradient toward the present ★; `hatch` Hatching (print, color blindness) | |
| `streams.opacity` | Opacity (%) | Opacité (%) | number | integer | `92` | 10 to 100 | |
| `streams.outline` | Separator between streams | Liseré entre les flux | toggle | bool | `true` | true / false | |
| `streams.outlineWidth` | Separator width | Épaisseur du liseré | number | numeric | `0.8` | 0.2 to 4 | Visible when `streams.outline` = `true` |
| `streams.reveal` | Left-to-right reveal | Révélation de gauche à droite | toggle | bool | `true` | true / false | Streams draw along time when shown and when the data changes (never when the system asks to reduce motion). |
**Top N and "Others" ★ / Top N et « Autres » ★**
| Option ID | Label (EN) | Label (FR) | Control | Type | Default | Allowed values | Notes |
|---|---|---|---|---|---|---|---|
| `streams.topN` | Show | Afficher | toggle | bool | `false` | true / false | Keeps the N largest streams (total over the period) and groups the rest into an "Others" stream. |
| `streams.n` | N | N | number | integer | `8` | 1 to 50 | |
| `streams.othersLabel` | "Others" label | Libellé « Autres » | text | text | (empty) | | |
| `streams.othersColor` | "Others" color (empty = gray) | Couleur de « Autres » (vide = gris) | color | fill | (empty) | hex color | |
### Stream labels / Étiquettes des flux (`streamLabels`, Format pane)
The card header toggle is `streamLabels.show`.
**Labels / Étiquettes**
| Option ID | Label (EN) | Label (FR) | Control | Type | Default | Allowed values | Notes |
|---|---|---|---|---|---|---|---|
| `streamLabels.show` | Show | Afficher | toggle | bool | `true` | true / false | Writes each stream's name inside the stream, where it is thickest, without overlap; a stream that is too thin stays unlabeled (its name is in the legend and the tooltip). |
| `streamLabels.content` | Content | Contenu | dropdown | enumeration | `name` | `name` Name; `nameValue` Name and value at that point; `nameTotal` Name and total; `nameShare` Name and share of the total ★; `nameChange` Name and change vs. the reference period ★ | |
| `streamLabels.placement` | Position | Position | dropdown | enumeration | `thickest` | `thickest` Where the stream is thickest; `end` Near the end; `start` Near the start | |
| `streamLabels.autoSize` | Size follows stream thickness | Taille selon l'épaisseur du flux | toggle | bool | `true` | true / false | |
| `streamLabels.fontSize` | Size (minimum when automatic) | Taille (minimale si automatique) | number | formatting | `10` | 6 to 24 | |
| `streamLabels.maxSize` | Maximum size | Taille maximale | number | formatting | `15` | 6 to 40 | Visible when `streamLabels.autoSize` = `true` |
| `streamLabels.color` | Color (empty = automatic) | Couleur (vide = automatique) | color | fill | (empty) | hex color | Automatic: white or dark depending on the stream color. |
| `streamLabels.bold` | Bold | Gras | toggle | bool | `true` | true / false | |
| `streamLabels.halo` | Text halo | Halo autour du texte | toggle | bool | `false` | true / false | |
| `streamLabels.hideLegend` | Hide the legend | Masquer la légende | toggle | bool | `false` | true / false | Streams are named in the chart: the legend can go. |
**Numbers / Nombres**
| Option ID | Label (EN) | Label (FR) | Control | Type | Default | Allowed values | Notes |
|---|---|---|---|---|---|---|---|
| `streamLabels.units` | Display units | Unités d'affichage | dropdown | enumeration | `auto` | `auto` Auto; `none` None; `k` Thousands; `m` Millions; `b` Billions | |
| `streamLabels.decimals` | Decimals (-1 = auto) | Décimales (-1 = auto) | number | integer | `-1` | -1 to 6 | |
| `streamLabels.prefix` | Prefix | Préfixe | text | text | (empty) | | |
| `streamLabels.suffix` | Suffix (e.g. €) | Suffixe (ex. €) | text | text | (empty) | | |
### Edge values ★ / Valeurs aux bords ★ (`edgeValues`, Format pane)
This card controls premium features (★): they work without a license key but show the watermark while in use.
The card header toggle is `edgeValues.show`.
| Option ID | Label (EN) | Label (FR) | Control | Type | Default | Allowed values | Notes |
|---|---|---|---|---|---|---|---|
| `edgeValues.show` | Show | Afficher | toggle | bool | `false` | true / false | Value of each stream at the first and last point, facing the stream, on both sides of the chart (without overlap). |
| `edgeValues.side` | Sides | Côtés | dropdown | enumeration | `both` | `both` Start and end; `end` End; `start` Start | |
| `edgeValues.content` | Content | Contenu | dropdown | enumeration | `valueChange` | `value` Value; `share` Share of the total at that date; `valueChange` Value, and change at the end; `nameValue` Name and value | |
| `edgeValues.fontSize` | Text size | Taille du texte | number | formatting | `9` | 6 to 20 | |
| `edgeValues.colorBy` | Color | Couleur | dropdown | enumeration | `series` | `series` Stream color; `text` Text | |
| `edgeValues.units` | Display units | Unités d'affichage | dropdown | enumeration | `auto` | `auto` Auto; `none` None; `k` Thousands; `m` Millions; `b` Billions | |
| `edgeValues.decimals` | Decimals (-1 = auto) | Décimales (-1 = auto) | number | integer | `-1` | -1 to 6 | |
| `edgeValues.prefix` | Prefix | Préfixe | text | text | (empty) | | |
| `edgeValues.suffix` | Suffix (e.g. €) | Suffixe (ex. €) | text | text | (empty) | | |
### Time axis / Axe de temps (`xAxis`, Format pane)
The card header toggle is `xAxis.show`.
**Values / Valeurs**
| Option ID | Label (EN) | Label (FR) | Control | Type | Default | Allowed values | Notes |
|---|---|---|---|---|---|---|---|
| `xAxis.show` | Show | Afficher | toggle | bool | `true` | true / false | |
| `xAxis.fontSize` | Size | Taille | number | formatting | `9` | 6 to 24 | |
| `xAxis.color` | Color (empty = secondary text) | Couleur (vide = texte secondaire) | color | fill | (empty) | hex color | |
| `xAxis.labelMode` | Long labels | Étiquettes longues | dropdown | enumeration | `auto` | `auto` Automatic; `wrap` Two lines; `rotate45` Tilted (45°); `rotate90` Vertical; `truncate` Truncated (…) | |
| `xAxis.maxSize` | Maximum room (% of the visual) | Place maximale (% du visuel) | number | integer | `30` | 10 to 60 | |
| `xAxis.line` | Axis line | Trait de l'axe | toggle | bool | `true` | true / false | |
| `xAxis.type` | Axis type | Type d'axe | dropdown | enumeration | `auto` | `auto` Automatic; `continuous` Continuous; `categorical` Categorical | Continuous: dates and numbers are spaced by their real gap. |
| `xAxis.dateFormat` | Date format | Format des dates | text | text | (empty) | | |
**Axis title / Titre de l'axe**
| Option ID | Label (EN) | Label (FR) | Control | Type | Default | Allowed values | Notes |
|---|---|---|---|---|---|---|---|
| `xAxis.showTitle` | Show | Afficher | toggle | bool | `false` | true / false | |
| `xAxis.titleText` | Text | Texte | text | text | (empty) | | Visible when `xAxis.showTitle` = `true` |
### Y axis / Axe Y (`yAxis`, Format pane)
The card header toggle is `yAxis.show`.
**Values / Valeurs**
| Option ID | Label (EN) | Label (FR) | Control | Type | Default | Allowed values | Notes |
|---|---|---|---|---|---|---|---|
| `yAxis.show` | Show | Afficher | toggle | bool | `true` | true / false | |
| `yAxis.scaleBar` | Size scale (flowing and centered streams) | Échelle de grandeur (flux ondulants et centrés) | toggle | bool | `true` | true / false | Flowing and centered streams have no zero: instead of the axis, a vertical marker shows the thickness of a round value (e.g. ↕ 100k). |
| `yAxis.position` | Position | Position | dropdown | enumeration | `left` | `left` Left; `right` Right | |
| `yAxis.fontSize` | Size | Taille | number | formatting | `9` | 6 to 24 | |
| `yAxis.color` | Color (empty = secondary text) | Couleur (vide = texte secondaire) | color | fill | (empty) | hex color | |
| `yAxis.units` | Display units | Unités d'affichage | dropdown | enumeration | `auto` | `auto` Auto; `none` None; `k` Thousands; `m` Millions; `b` Billions | |
| `yAxis.decimals` | Decimals (-1 = auto) | Décimales (-1 = auto) | number | integer | `-1` | -1 to 6 | |
| `yAxis.prefix` | Prefix | Préfixe | text | text | (empty) | | |
| `yAxis.suffix` | Suffix (e.g. €) | Suffixe (ex. €) | text | text | (empty) | | |
| `yAxis.line` | Axis line | Trait de l'axe | toggle | bool | `false` | true / false | |
**Range / Échelle**
| Option ID | Label (EN) | Label (FR) | Control | Type | Default | Allowed values | Notes |
|---|---|---|---|---|---|---|---|
| `yAxis.min` | Minimum | Minimum | text | text | (empty) | | Stacked areas only (flowing, centered and 100% streams have their own scale). |
| `yAxis.max` | Maximum | Maximum | text | text | (empty) | | |
| `yAxis.ticks` | Number of ticks (approx.) | Nombre de graduations (environ) | number | integer | `5` | 2 to 20 | |
**Axis title / Titre de l'axe**
| Option ID | Label (EN) | Label (FR) | Control | Type | Default | Allowed values | Notes |
|---|---|---|---|---|---|---|---|
| `yAxis.showTitle` | Show | Afficher | toggle | bool | `false` | true / false | |
| `yAxis.titleText` | Text | Texte | text | text | (empty) | | Visible when `yAxis.showTitle` = `true` |
### Gridlines / Quadrillage (`gridlines`, Format pane)
**Horizontal**
| Option ID | Label (EN) | Label (FR) | Control | Type | Default | Allowed values | Notes |
|---|---|---|---|---|---|---|---|
| `gridlines.hShow` | Show | Afficher | toggle | bool | `true` | true / false | |
| `gridlines.hColor` | Color (empty = style grid) | Couleur (vide = grille du style) | color | fill | (empty) | hex color | |
| `gridlines.hWidth` | Width | Épaisseur | number | numeric | `1` | 0.5 to 6 | |
| `gridlines.hStyle` | Line style | Style de trait | dropdown | enumeration | `solid` | `solid` Solid; `dashed` Dashed; `dotted` Dotted | |
| `gridlines.zeroLine` | Zero line | Ligne du zéro | toggle | bool | `true` | true / false | |
**Vertical**
| Option ID | Label (EN) | Label (FR) | Control | Type | Default | Allowed values | Notes |
|---|---|---|---|---|---|---|---|
| `gridlines.vShow` | Show | Afficher | toggle | bool | `true` | true / false | |
| `gridlines.vColor` | Color (empty = style grid) | Couleur (vide = grille du style) | color | fill | (empty) | hex color | |
| `gridlines.vWidth` | Width | Épaisseur | number | numeric | `1` | 0.5 to 6 | |
| `gridlines.vStyle` | Line style | Style de trait | dropdown | enumeration | `solid` | `solid` Solid; `dashed` Dashed; `dotted` Dotted | |
### 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 | |
### Annotations ★ (`annotations`, Format pane)
This card controls premium features (★): they work without a license key but show the watermark while in use.
The card header toggle is `annotations.show`.
**Content / Contenu**
| Option ID | Label (EN) | Label (FR) | Control | Type | Default | Allowed values | Notes |
|---|---|---|---|---|---|---|---|
| `annotations.show` | Show | Afficher | toggle | bool | `true` | true / false | |
| `annotations.list` | Annotations (one per line) | Annotations (une par ligne) | textarea | text | (empty) | | "x \| text": vertical marker on the date; "x \| stream \| text": attached to the stream's layer; "x1..x2 \| text": shaded period. x = date (2024-03-15, 2024-03, 2024), number or category as displayed. Optional color #RRGGBB last ("… \| #C0392B"). "\n" starts a new line. The measure in the "Annotations (text)" field adds its own. |
| `annotations.content` | Displayed content | Contenu affiché | dropdown | enumeration | `text` | `text` Text; `textX` Text and date; `textValue` Text and value (stream) | |
| `annotations.editOnChart` | Edit on the chart (edit mode) | Modifier sur le graphique (mode édition) | toggle | bool | `true` | true / false | In edit mode, annotations can be dragged, edited with a double-click and removed with × (single panel). |
**Look / Apparence**
| Option ID | Label (EN) | Label (FR) | Control | Type | Default | Allowed values | Notes |
|---|---|---|---|---|---|---|---|
| `annotations.style` | Style | Style | dropdown | enumeration | `plain` | `bubble` Bubble; `filled` Filled label; `plain` Text only | |
| `annotations.color` | Color (empty = secondary text or stream) | Couleur (vide = texte secondaire ou flux) | color | fill | (empty) | hex color | |
| `annotations.fontSize` | Size | Taille | number | formatting | `9` | 6 to 24 | |
| `annotations.bold` | Bold | Gras | toggle | bool | `true` | true / false | |
| `annotations.maxWidth` | Maximum width (px) | Largeur maximale (px) | number | integer | `160` | 60 to 400 | |
**Marker and connector / Repère et trait**
| Option ID | Label (EN) | Label (FR) | Control | Type | Default | Allowed values | Notes |
|---|---|---|---|---|---|---|---|
| `annotations.anchor` | Vertical marker text | Texte des repères verticaux | dropdown | enumeration | `top` | `top` Top; `bottom` Bottom; `none` None (line only) | |
| `annotations.lineStyle` | Line style | Style de trait | dropdown | enumeration | `dashed` | `solid` Solid; `dashed` Dashed; `dotted` Dotted | |
| `annotations.width` | Width | Épaisseur | number | numeric | `1` | 0.5 to 6 | |
| `annotations.bandOpacity` | Periods opacity (%) | Opacité des périodes (%) | number | integer | `10` | 2 to 60 | |
| `annotations.marker` | Marker on the stream | Repère sur le flux | toggle | bool | `true` | true / false | |
| `annotations.connector` | Connector | Trait vers le flux | dropdown | enumeration | `line` | `line` Line; `none` None | |
| `annotations.position` | Default position | Position par défaut | dropdown | enumeration | `auto` | `auto` Automatic (no overlap); `above` Above; `below` Below; `right` Right; `left` Left | |
| `annotations.distance` | Distance from the point (px) | Distance au point (px) | number | integer | `18` | 6 to 160 | |
### Navigator ★ / Navigateur ★ (`navigator`, Format pane)
This card controls premium features (★): they work without a license key but show the watermark while in use.
The card header toggle is `navigator.show`.
| Option ID | Label (EN) | Label (FR) | Control | Type | Default | Allowed values | Notes |
|---|---|---|---|---|---|---|---|
| `navigator.show` | Show | Afficher | toggle | bool | `false` | true / false | Mini chart under the streams: drag the window or its edges to zoom into a period, double-click to see everything again. The mouse wheel also zooms the chart. |
| `navigator.height` | Height (px) | Hauteur (px) | number | integer | `38` | 20 to 120 | |
| `navigator.from` | Window start when opened | Début de la fenêtre à l'ouverture | text | text | (empty) | | Date, year, number or category (e.g. 2024-01). Empty: from the start. |
| `navigator.to` | Window end when opened | Fin de la fenêtre à l'ouverture | text | text | (empty) | | |
### Small multiples / Petits multiples (`smallMultiples`, Format pane)
**Grid / Grille**
| 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.gap` | Spacing (px) | Espacement (px) | number | integer | `14` | 0 to 60 | |
| `smallMultiples.scale` | Stream scale | Échelle des flux | dropdown | enumeration | `shared` | `shared` Shared by all panels; `independent` Independent per panel ★ | Shared: the same value has the same thickness in every panel. |
| `smallMultiples.border` | Panel border | Cadre des panneaux | toggle | bool | `false` | true / false | |
**Titles / Titres**
| Option ID | Label (EN) | Label (FR) | Control | Type | Default | Allowed values | Notes |
|---|---|---|---|---|---|---|---|
| `smallMultiples.titleShow` | Title of each panel | Titre de chaque panneau | toggle | bool | `true` | true / false | |
| `smallMultiples.titleSize` | Text size | Taille du texte | number | formatting | `10` | 6 to 24 | Visible when `smallMultiples.titleShow` = `true` |
| `smallMultiples.titleColor` | Color (empty = text) | Couleur (vide = texte) | color | fill | (empty) | hex color | Visible when `smallMultiples.titleShow` = `true` |
| `smallMultiples.titleTotal` | Total in the title | Total dans le titre | toggle | bool | `false` | true / false | Visible when `smallMultiples.titleShow` = `true` |
### Playback ★ / Lecture ★ (`play`, Format pane)
This card controls premium features (★): they work without a license key but show the watermark while in use.
**Playback / Lecture**
| 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 | `400` | 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 bar / Barre de lecture**
| Option ID | Label (EN) | Label (FR) | Control | Type | Default | Allowed values | Notes |
|---|---|---|---|---|---|---|---|
| `play.controls` | Play bar | Barre de lecture | toggle | bool | `false` | true / false | ▶ button, graduated slider, start / end and speed: a cursor travels through time and veils what comes next. The left-to-right reveal on loading (Streams card) stays free. |
| `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` |
**Large value / Valeur en grand**
| Option ID | Label (EN) | Label (FR) | Control | Type | Default | Allowed values | Notes |
|---|---|---|---|---|---|---|---|
| `play.showLabel` | Current value in large type | Valeur en cours en grand | toggle | bool | `false` | 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` |
**More settings / Autres réglages**
| Option ID | Label (EN) | Label (FR) | Control | Type | Default | Allowed values | Notes |
|---|---|---|---|---|---|---|---|
| `play.ranking` | Ranking at the cursor date ★ | Classement à la date du curseur ★ | toggle | bool | `false` | true / false | Box with the top streams (value and share) at the cursor date, updated during playback. |
| `play.rankCount` | Streams in the ranking | Flux dans le classement | number | integer | `5` | 1 to 20 | Visible when `play.ranking` = `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 | |
| `interaction.crosshair` | Vertical guide on hover | Repère vertical au survol | toggle | bool | `true` | true / false | |
### Reference period ★ / Période de référence ★ (`refPeriod`, Analytics pane)
This card controls premium features (★): they work without a license key but show the watermark while in use.
The card header toggle is `refPeriod.show`.
| Option ID | Label (EN) | Label (FR) | Control | Type | Default | Allowed values | Notes |
|---|---|---|---|---|---|---|---|
| `refPeriod.show` | Show | Afficher | toggle | bool | `false` | true / false | Shades a period (e.g. 2019 or 2020-01..2020-06) and compares each stream to its average over that period: change in the tooltip, in the labels and for highlighted streams. |
| `refPeriod.from` | Start (date, year, number or category) | Début (date, année, nombre ou catégorie) | text | text | (empty) | | |
| `refPeriod.to` | End (empty = same period) | Fin (vide = même période) | text | text | (empty) | | |
| `refPeriod.label` | Label | Libellé | text | text | (empty) | | |
| `refPeriod.shade` | Shade the period | Ombrer la période | toggle | bool | `true` | true / false | |
| `refPeriod.color` | Color (empty = accent) | Couleur (vide = accent) | color | fill | (empty) | hex color | |
| `refPeriod.opacity` | Opacity (%) | Opacité (%) | number | integer | `10` | 2 to 60 | |
| `refPeriod.tooltip` | Change in the tooltip | Écart dans l'infobulle | toggle | bool | `true` | true / false | |
### Reference lines / Lignes de référence (`reference`, Analytics pane)
**Line 1 / Ligne 1**
| Option ID | Label (EN) | Label (FR) | Control | Type | Default | Allowed values | Notes |
|---|---|---|---|---|---|---|---|
| `reference.show1` | Show | Afficher | toggle | bool | `false` | true / false | |
| `reference.kind1` | Value | Valeur | dropdown | enumeration | `average` | `constant` Constant; `average` Average; `median` Median; `min` Minimum; `max` Maximum; `percentile` Percentile | |
| `reference.value1` | Constant value | Valeur constante | number | numeric | `0` | | Visible when `reference.kind1` = `constant` |
| `reference.pct1` | Percentile | Centile | number | integer | `90` | 1 to 99 | Visible when `reference.kind1` = `percentile` |
| `reference.label1` | Label | Libellé | text | text | (empty) | | |
| `reference.showValue1` | Show the value | Afficher la valeur | toggle | bool | `true` | true / false | |
| `reference.color1` | Color (empty = accent) | Couleur (vide = accent) | color | fill | (empty) | hex color | |
| `reference.style1` | Line style | Style de trait | dropdown | enumeration | `dashed` | `solid` Solid; `dashed` Dashed; `dotted` Dotted | |
| `reference.width1` | Width | Épaisseur | number | numeric | `1.5` | 0.5 to 6 | |
| `reference.labelPos1` | Label position | Position du libellé | dropdown | enumeration | `end` | `end` End; `start` Start; `none` None | |
**Line 2 / Ligne 2**
| Option ID | Label (EN) | Label (FR) | Control | Type | Default | Allowed values | Notes |
|---|---|---|---|---|---|---|---|
| `reference.show2` | Show | Afficher | toggle | bool | `false` | true / false | |
| `reference.kind2` | Value | Valeur | dropdown | enumeration | `constant` | `constant` Constant; `average` Average; `median` Median; `min` Minimum; `max` Maximum; `percentile` Percentile | |
| `reference.value2` | Constant value | Valeur constante | number | numeric | `0` | | Visible when `reference.kind2` = `constant` |
| `reference.pct2` | Percentile | Centile | number | integer | `90` | 1 to 99 | Visible when `reference.kind2` = `percentile` |
| `reference.label2` | Label | Libellé | text | text | (empty) | | |
| `reference.showValue2` | Show the value | Afficher la valeur | toggle | bool | `true` | true / false | |
| `reference.color2` | Color (empty = accent) | Couleur (vide = accent) | color | fill | (empty) | hex color | |
| `reference.style2` | Line style | Style de trait | dropdown | enumeration | `dashed` | `solid` Solid; `dashed` Dashed; `dotted` Dotted | |
| `reference.width2` | Width | Épaisseur | number | numeric | `1.5` | 0.5 to 6 | |
| `reference.labelPos2` | Label position | Position du libellé | dropdown | enumeration | `end` | `end` End; `start` Start; `none` None | |
**Line 3 / Ligne 3**
| Option ID | Label (EN) | Label (FR) | Control | Type | Default | Allowed values | Notes |
|---|---|---|---|---|---|---|---|
| `reference.show3` | Show | Afficher | toggle | bool | `false` | true / false | |
| `reference.kind3` | Value | Valeur | dropdown | enumeration | `median` | `constant` Constant; `average` Average; `median` Median; `min` Minimum; `max` Maximum; `percentile` Percentile | |
| `reference.value3` | Constant value | Valeur constante | number | numeric | `0` | | Visible when `reference.kind3` = `constant` |
| `reference.pct3` | Percentile | Centile | number | integer | `90` | 1 to 99 | Visible when `reference.kind3` = `percentile` |
| `reference.label3` | Label | Libellé | text | text | (empty) | | |
| `reference.showValue3` | Show the value | Afficher la valeur | toggle | bool | `true` | true / false | |
| `reference.color3` | Color (empty = accent) | Couleur (vide = accent) | color | fill | (empty) | hex color | |
| `reference.style3` | Line style | Style de trait | dropdown | enumeration | `dashed` | `solid` Solid; `dashed` Dashed; `dotted` Dotted | |
| `reference.width3` | Width | Épaisseur | number | numeric | `1.5` | 0.5 to 6 | |
| `reference.labelPos3` | Label position | Position du libellé | dropdown | enumeration | `end` | `end` End; `start` Start; `none` None | |
**Reference band / Bande de référence**
| Option ID | Label (EN) | Label (FR) | Control | Type | Default | Allowed values | Notes |
|---|---|---|---|---|---|---|---|
| `reference.band` | Show | Afficher | toggle | bool | `false` | true / false | |
| `reference.bandFrom` | From | De | number | numeric | `0` | | |
| `reference.bandTo` | To | À | number | numeric | `0` | | |
| `reference.bandLabel` | Label | Libellé | text | text | (empty) | | |
| `reference.bandColor` | Color (empty = accent) | Couleur (vide = accent) | color | fill | (empty) | hex color | |
| `reference.bandOpacity` | Opacity (%) | Opacité (%) | number | integer | `12` | 2 to 60 | |
### 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.tipAll` | Every stream at that date | Tous les flux de la date | toggle | bool | `false` | true / false | Otherwise the tooltip details the hovered stream: value, share, rank, change. |
### 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)
- `annotState`: `annotState.offsets` (text), internal state saved by the visual in edit mode (column widths, positions of dragged annotations); leave it alone.
- `events`: `events.show` (bool), `events.list` (text), `events.color` (fill), `events.fontSize` (formatting), `events.labelPos` (enumeration), `events.style` (enumeration), `events.width` (numeric), `events.bandOpacity` (integer).