Images intégrées pour Power BI Image Plume
Vos images en base64, enfin bien affichées : même au-delà de 32 766 caractères, placées, dimensionnées, découpées en cercle ou en forme, et qui filtrent le rapport au clic.
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 ».
Image Plume affiche les images enregistrées dans votre modèle : une colonne ou une mesure en base64 ou data URI (PNG, JPEG, GIF, WebP, BMP, SVG), ou une image collée dans le volet Format. Power BI coupe un texte à 32 766 caractères : découpez les images longues en lignes, ajoutez l'index du morceau, le visuel les recolle, une image par produit, lieu ou personne. Aucune adresse web n'est chargée : les images s'affichent hors ligne, en PDF et dans le service. Position en 9 points, six tailles (ajuster, remplir, étirer, origine, fixe, proportion), coins arrondis, cercle et 22 formes gratuites avec contour, opacité, luminosité, contraste, niveaux de gris, galerie qui filtre au clic. En premium : diaporama par date (axe de lecture), ombre portée, saturation, flou, rotation et miroirs, 131 autres formes et votre SVG comme masque, carrousel, curseur avant / après, calques, image choisie selon une valeur (feux tricolores, logos conditionnels), filtres sépia, vintage, duotone aux couleurs du style, loupe.
Cas d'usage
- Photos de produits, logos de clients ou de magasins qui suivent les filtres
- Portraits ronds d'une équipe, trombinoscope qui filtre le rapport
- Feu tricolore ou pictogramme d'état choisi selon un score, sans DAX
- Avant / après travaux, plans et photos au fil des années
GratuitInclus gratuitement
- Base64 brut ou data URI d'une colonne ou d'une mesure ; image collée dans le volet (logo sans champ, ou repli)
- Images de plus de 32 766 caractères : champ « Index du morceau », le visuel recolle les morceaux (une image par clé)
- Position en 9 points et décalage ; ajuster, remplir et rogner, étirer, taille d'origine, taille fixe, proportion
- Coins arrondis, ellipse ou cercle, 22 formes gratuites ; contour qui suit la forme
- Opacité, luminosité, contraste, niveaux de gris
- Galerie avec légendes, clic = filtre croisé, surbrillance, infobulles
- Adresses web refusées avec un message clair : rien n'est chargé, tout s'affiche hors ligne et en PDF
- Lien ouvert au clic (https), survol « Plus lumineuse » ; le clic filtre aussi sans clé de l'image
- Formats dynamiques : bouton fx sur les couleurs et les textes, tout réglage piloté en DAX
PremiumFonctions premium
- Diaporama par date ou par année avec l'axe de lecture (lecteur commun Plume : lecture, curseur, vitesse, fondu)
- Ombre portée qui suit la forme, saturation, flou, rotation et miroirs
- 131 autres formes de masque (cartes, récipients, objets, transports) et votre propre SVG
- Carrousel avec flèches, points et défilement automatique ; curseur avant / après ; calques superposés
- Image selon la valeur : choisir l'image par seuils ou estomper sous un seuil, sans DAX
- Filtres sépia, vintage, chaud, froid, duotone aux couleurs du style, négatif, teinte ; loupe au survol
- Réglages par calque : afficher ou masquer chaque calque, opacité propre
- 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 lectureAfficher des images base64 dans Power BI, au-delà de 32 766 caractèresPrise en main d'Image Plume : préparer une table d'images base64, découper les images longues, insérer le visuel, choisir taille, position et masque rond.
- Cas pratiquesIntermédiaire6 min de lectureImage Plume : 10 recettes (logos, galeries, diaporamas, avant / après)Logo par défaut, image du produit choisi, mesure DAX, diaporama, formes, avant / après, feu selon un score, carrousel, filtres et découpe SVG.
- Champs et réglagesIntermédiaire21 min de lectureImage Plume : tous les champs et réglages expliquésChaque champ et chaque réglage du volet Format d'Image Plume : disposition, position et taille, masque, contour, réglages, légende, seuils, interactions.
- Bases communesBien démarrer avec les visuels PlumeInstallation, licence, styles et réglages communs à tous les visuels.
Champs à glisser dans le visuel
| Champ | Contenu | |
|---|---|---|
| Image (base64) | Colonne ou mesure en base64 ou data URI ; avec l'index, un morceau par ligne | Obligatoire |
| Clé de l'image (catégorie) | Une image par valeur : galerie, carrousel, filtre au clic | Facultatif |
| Index du morceau | Ordre des morceaux d'une image découpée au-delà de 32 766 caractères | Facultatif |
| Légende | Texte affiché avec l'image et lu par les lecteurs d'écran | Facultatif |
| Valeur (seuils) | Choisit l'image selon des seuils (feux tricolores, logos conditionnels) | FacultatifPremium |
| Axe de lecture | Année, mois : diaporama avec fondu | 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 Image 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/image.md)# Image 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 Image 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/image (French: https://plumevisuals.com/fr/visuels/image)
- Summary: Your base64 images, finally shown well: even beyond 32,766 characters, placed, sized, clipped into circles or shapes, and filtering the report on click.
- Power BI visual GUID (`visualType`): `plumeImageF765EB2CC018408786BADCD7A1C0464F`
- 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
Image Plume (identifier `image`) is a Power BI custom visual (version 1.1.0.0, installed from its `.pbiviz` file; not yet on AppSource) that shows **images stored in the report as base64 text or data URIs**. It never loads a web address.
**New in version 1.1.0.0 (30/10/2026):** Free native-parity additions: cross-filtering without an "Image key" field, **link opened on click** (web URL action), "Brighter" hover state.
- **Sources**: a column or a measure in the `image` role (raw base64, `data:image/png|jpeg|gif|webp|bmp;base64,…`, `data:image/svg+xml` or SVG markup), or an image pasted in **Format › Pasted image and fallback** (`fallback.pasted`), shown when no field is set (a logo) or as a fallback for empty images (`fallback.whenEmpty` = `fallback`).
- **Images over 32,766 characters** (the limit of Power BI column texts): split them into rows (one chunk per row) and drop the chunk number in **Chunk index** (`chunkIndex`): the visual sorts the chunks numerically (2 before 10), keeps a repeated index once, joins them, one image per **Image key**, and reports missing indexes in edit mode. A DAX measure with `CONCATENATEX` works too (a measure is not limited to 32,766 characters).
- **Web addresses refused**: `http(s)://`, `//`, `www.`, `file:`, `ftp:`, `blob:`, `C:\…`, `\\server` are never loaded (Microsoft certification); a message explains it in edit mode ("Embedded images only: web addresses are never loaded (convert the image to base64)"). SVGs are cleaned (whitelist: scripts, `foreignObject`, external links, event handlers, `<text>` and `<image>` removed) and re-encoded.
- **Displays** (`layout.mode`): `single` (first or last row, a highlighted image first), `grid` (gallery: automatic or fixed columns, spacing, cell shape, maximum number of images, vertical scrolling), `carousel` ★ (arrows, dots, auto-advance with pause, fade or slide), `compare` ★ (before / after slider: first two images), `stack` ★ (layers: the first image opaque, the others at `layout.layerOpacity`).
- **Position and size**: 9-point `position.align` + `offsetX` / `offsetY`, `padding`; `sizeMode` `fit` (whole image), `fill` (frame full, cropped; the position picks the visible part), `stretch`, `original` (pixels), `fixed` (`width` × `height`, `keepRatio`), `percent` (share of the frame); premium `rotate` ★ `90` | `180` | `270` (default `0`), `flipH` ★, `flipV` ★.
- **Masks** (`mask.kind`): `rounded` (`radius` px), `ellipse` (`circle` = perfect circle), `shape` (153 shapes of the Plume library, 22 free), `svg` ★ (`mask.svg`: markup, SVG data URI or a path "d"); `fit` `contain` | `stretch`, `scale` (10–100 %). The outline and the drop shadow ★ follow the mask.
- **Adjustments**: opacity, brightness, contrast, grayscale; ★ saturation (0–300 %), ★ blur, ★ sepia, vintage, warm, cool, duotone (style colors or `duoDark` / `duoLight`), negative, hue.
- **Image by value ★** (`conditional`): with the `value` role, `pick` shows the 1st image below `t1`, the 2nd between `t1` and `t2`, the 3rd from `t2` (traffic lights, conditional logos, no DAX); `fade` greys images below `t1` and rings images from `t2` (in a gallery).
- **Play axis ★** (`play` role, premium since the 22/10/2026 rebalancing: watermark as soon as the field holds data): slideshow, one image (or one gallery) per date / year with the shared Plume player (play, slider, speed, loop, cross-fade).
- Selection and cross-filtering by **Image key**, highlighting from other visuals, tooltips (key, caption, value, Tooltips measures, image size in pixels), magnifier ★ on hover.
## 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 Image Plume: every source (column, measure, pasted image, chunks), single image and grid, every position and size option (without rotation and flips), masks `rounded`, `ellipse` and the 22 free shapes (`circle`, `square`, `roundedSquare`, `rectangle`, `triangle`, `diamond`, `hexagon`, `star`, `heart`, `cloud`, `drop`, `bubble`, `arrow`, `person`, `house`, `barrel`, `bottle`, `glass`, `wineGlass`, `thermometer`, `battery`, `batteryVertical`), outline, opacity, brightness, contrast, grayscale, captions, selection, tooltips, "Slight zoom" hover.
- Premium features of Image Plume: `layout.mode` = `carousel`, `compare` or `stack` (with at least two images); `mask.kind` = `svg`; any other `mask.shape` (131 shapes); `adjust.preset` = `sepia`, `vintage`, `warm`, `cool`, `duotone`, `invert`; `adjust.hue` ≠ 0; `conditional.show` with the Value field; `interaction.hover` = `loupe`; and since 22/10/2026: a filled **Play axis** field, `outline.shadow`, `adjust.saturation` ≠ 100, `adjust.blur` > 0, `position.rotate` ≠ `0`, `position.flipH`, `position.flipV`.
- 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 `image` or the whole catalog. In edit mode, a wrong key shows "Invalid license key", "License expired (date)" or "This key does not cover this visual".
- Licenses last one year (one-time payment, no automatic renewal). Prices: 39 € personal, 99 € SME, 299 € enterprise per year, or the catalog pack.
## Expected data shape
One row per image, or one row per chunk of an image.
| Image key (`category`) | Chunk index (`chunkIndex`) | Image (`image`) | Caption (`label`) |
|---|---|---|---|
| Arcachon | 1 | `iVBORw0KGgo…` (30,000 characters) | Bay and stilt huts |
| Arcachon | 2 | `…` | Bay and stilt huts |
| Sarlat | 1 | `iVBORw0KGgo…` | Medieval town |
- **Image (base64)** (`image`, « Image (base64) », one column **or** measure, required unless an image is pasted in the pane): the image text. As a column it is used as is (no aggregation).
- **Image key (category)** (`category`, « Clé de l'image (catégorie) », one column): one image per value; selection and cross-filtering.
- **Chunk index** (`chunkIndex`, « Index du morceau », one column of numbers): order of the chunks.
- **Caption** (`label`, « Légende », one column or measure): text with the image; in a grid or carousel, the key is shown when it is empty.
- **Value (thresholds) ★** (`value`, « Valeur (seuils) ★ », one measure) for Image by value.
- **Play axis** (`play`, « Axe de lecture », one column), **Tooltips** (`tooltips`), **Dynamic format** (`format`).
- Volume: windows of 30,000 rows, more fetched with `fetchMoreData`; only displayed images are decoded (at most `layout.maxImages`, default 100, max 500).
## Power Query and DAX recipes
```m
// A folder of images → one row per 30,000-character chunk (Name, Chunk index, Chunk)
let
Source = Folder.Files("C:\Images"),
Bin = Table.AddColumn(Source, "B64", each Binary.ToText([Content], BinaryEncoding.Base64), type text),
Chunks = Table.AddColumn(Bin, "Chunks", each let t = [B64], n = Number.RoundUp(Text.Length(t) / 30000)
in Table.FromColumns({ {1..n}, List.Transform({0..n - 1}, (i) => Text.Middle(t, i * 30000, 30000)) }, { "Chunk index", "Chunk" })),
Rows = Table.ExpandTableColumn(Table.SelectColumns(Chunks, { "Name", "Chunks" }), "Chunks", { "Chunk index", "Chunk" })
in
Rows
```
```dax
// One image per filter context, joined in DAX (alternative to the Chunk index field)
Full image = "data:image/png;base64," & CONCATENATEX ( Images, Images[Chunk], "", Images[Chunk index], ASC )
// Default logo when nothing is selected: return BLANK and set fallback.whenEmpty = fallback with a pasted logo
Logo shown = IF ( HASONEVALUE ( Companies[Company] ), SELECTEDVALUE ( Companies[Logo] ), BLANK () )
```
## Interactions with the report
- Click an image (with an Image key): select and cross-filter; Ctrl + click for several; click the background to clear. Other images fade (`interaction.dim`, 30 %). Highlighting from other visuals fades non-highlighted images (single mode: the highlighted image is shown).
- Context menu everywhere (images, captions, carousel controls, slider, empty area, landing page).
- Keyboard: Tab to the visual; arrows move between images (grid), change image (carousel), move the before / after slider (Shift = 10 %, Home, End) or the play axis; Enter selects; Esc clears. Screen readers: role img with the alternative text (`fallback.alt`, else caption, else key), slider role for the before / after handle, announcements in French and English.
- Nothing is saved with persistProperties: carousel position, slider and magnifier are session state.
## Dynamic formats
- **fx button** on colors and texts (e.g. `outline.color`, `caption.color`, `fallback.pasted`).
- **"Dynamic format" well** (`format`): measures renamed `card.setting` (e.g. `adjust.brightness`, `mask.kind`, `title.text`) drive any setting. Driving a ★ setting by DAX still shows the watermark without a key.
```dax
// renamed title.text
Featured title = "Featured: " & SELECTEDVALUE ( Places[Place], "Nouvelle-Aquitaine" )
// renamed adjust.brightness
Brightness by filter = IF ( HASONEVALUE ( Places[Place] ), 100, 90 )
```
## Format pane: option IDs
- Card order: `license`, `style`, `layout`, `position`, `mask`, `outline`, `adjust`, `caption`, `conditional`, `interaction`, `fallback`, `play` (only with a Play axis field), then `title`, `source`, `container`, `texts`. Format pane in version 1.1.0.0 (30/10/2026), top to bottom: `license`, `style`, `layout`, `layers`, `position`, `mask`, `outline`, `adjust`, `caption`, `conditional`, `fallback`, `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).
- `layout`: `mode` (`single` | `grid` | `carousel` ★ | `compare` ★ | `stack` ★), `pick` (`first` | `last`), `columns` (0 = auto, 0–24), `gap` (0–60, 8), `cellRatio` (`auto` | `square` | `landscape` | `wide` | `portrait`), `maxImages` (1–500, 100), `interval` (1,000–30,000 ms, 4,000), `autoAdvance`, `effect` (`fade` | `slide` | `none`), `arrows`, `dots`, `split` (0–100, 50), `compareLabels`, `layerOpacity` (0–100, 60).
- `position`: `align` (`topLeft` | `top` | `topRight` | `left` | `center` | `right` | `bottomLeft` | `bottom` | `bottomRight`), `sizeMode` (`fit` | `fill` | `stretch` | `original` | `fixed` | `percent`), `width`, `height` (160), `keepRatio`, `percent` (80), `offsetX`, `offsetY`, `padding`, `rotate` (`0` | `90` ★ | `180` ★ | `270` ★), `flipH` ★, `flipV` ★.
- `mask`: `kind` (`none` | `rounded` | `ellipse` | `shape` | `svg` ★), `radius` (16), `circle` (on), `shape` (153 shape IDs, default `hexagon`), `svg` ★, `fit` (`contain` | `stretch`), `scale` (10–100, 100).
- `outline`: `show`, `width` (2), `color` (empty = accent), `shadow` ★, `shadowColor`, `shadowOpacity` (30), `shadowBlur` (10), `shadowOffset` (4).
- `adjust`: `opacity`, `brightness`, `contrast`, `saturation` ★ (100), `blur` ★ (0), `preset` (`none` | `grayscale` | `sepia` ★ | `vintage` ★ | `warm` ★ | `cool` ★ | `duotone` ★ | `invert` ★), `duoDark`, `duoLight`, `hue` ★ (−180–180).
- `caption`: `show`, `position` (`below` | `above` | `overlayBottom` | `overlayTop`), `fontSize` (12), `bold`, `color`, `align`, `lines` (2), `band`.
- `conditional` ★: `show`, `mode` (`pick` | `fade`), `t1`, `t2`. `interaction`: `select`, `dim` (30), `hover` (`none` | `lift` | `loupe` ★), `loupeZoom` (250), `loupeSize` (140). `fallback`: `pasted`, `whenEmpty` (`placeholder` | `fallback` | `hide`), `alt`.
- `play` ★ (card "Playback ★"): shared player (`start`, `speed`, `loop`, `autoPlay`, `transition`, `controls`, `position`, `ticks`, `tickLabels`, `stepButtons`, `speedButton`, `showLabel`, `labelSize`, `labelPosition`).
## Editing a PBIP report (visual.json)
```json
{
"visualType": "plumeImageF765EB2CC018408786BADCD7A1C0464F",
"query": {
"queryState": {
"category": { "projections": [ { "field": { "Column": { "Expression": { "SourceRef": { "Entity": "Places" } }, "Property": "Place" } }, "queryRef": "Places.Place", "nativeQueryRef": "Place" } ] },
"chunkIndex": { "projections": [ { "field": { "Column": { "Expression": { "SourceRef": { "Entity": "Places" } }, "Property": "Chunk index" } }, "queryRef": "Places.Chunk index", "nativeQueryRef": "Chunk index" } ] },
"image": { "projections": [ { "field": { "Column": { "Expression": { "SourceRef": { "Entity": "Places" } }, "Property": "Image" } }, "queryRef": "Places.Image", "nativeQueryRef": "Image" } ] }
}
},
"objects": {
"layout": [ { "properties": { "mode": { "expr": { "Literal": { "Value": "'grid'" } } } } } ],
"position": [ { "properties": { "sizeMode": { "expr": { "Literal": { "Value": "'fill'" } } } } } ],
"mask": [ { "properties": { "kind": { "expr": { "Literal": { "Value": "'ellipse'" } } } } } ]
}
}
```
## Common pitfalls
- Image cut or a gray placeholder: text truncated at 32,766 characters; split into chunks and add Chunk index.
- "Embedded images only…": the column holds web addresses; convert to base64.
- All chunks mixed into one image: several images without an Image key.
- One image instead of a gallery: `layout.mode` is `single`.
- Watermark visible: a filled play axis, drop shadow, saturation or blur, rotation or flips, carousel, before / after or layers with two images or more, a ★ shape or SVG mask, a ★ filter or hue, Image by value with the Value field, magnifier, a ★ style or a theme JSON, without a valid key.
- Text inside an SVG used as a mask or as an image is removed by the cleaning (draw logos with shapes).
## Features that do NOT exist (do not suggest them)
Loading images from a URL, SharePoint or OneLake; opening a web link or a report page on click; interactive cropping saved in the report; per-layer settings (each layer has the same position, size and mask); playback control of animated GIFs; exporting or downloading the 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 |
|---|---|---|---|---|---|
| `image` | Image (base64) | Image (base64) | GroupingOrMeasure | 1 | Column or measure with base64 text or a data URI (PNG, JPEG, GIF, WebP, BMP, SVG). With “Chunk index”: one piece of the image per row. |
| `category` | Image key (category) | Clé de l'image (catégorie) | column | 1 | One image per value (product, person, site): gallery, carousel, selection and cross-filtering. |
| `chunkIndex` | Chunk index | Index du morceau | column | 1 | Order of the pieces of an image split into rows (beyond the 32,766-character limit of Power BI texts): the visual joins them back. |
| `label` | Caption | Légende | GroupingOrMeasure | 1 | Text shown with the image (and read by screen readers). |
| `value` | Value (thresholds) ★ | Valeur (seuils) ★ | measure | 1 | Number compared with the thresholds of “Image by value ★”: picks the image (traffic lights, conditional logos) or fades the images below the threshold. |
| `play` | Play axis ★ | Axe de lecture ★ | column | 1 | A date, a year or an ordered category: the visual moves from one value to the next (play button) |
| `tooltips` | Tooltips | Infobulles | measure | several | |
| `format` | Dynamic format | Format dynamique | measure | several | Measures named card.setting (e.g. title.fontSize): drive any Format option with DAX |
Data view: categorical, categories = `category` + `play` + `chunkIndex` + `image` + `label` (one row per combination), 30,000 rows per data window (more fetched automatically); measures = `image`, `label`, `value`, `tooltips`, `format`.
Capabilities: supportsHighlight, supportsKeyboardFocus, supportsMultiVisualSelection, supportsLandingPage, supportsEmptyDataView.
Network access: none (no privileges requested, no external request).
## Format pane options (156)
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)
| Option ID | Label (EN) | Label (FR) | Control | Type | Default | Allowed values | Notes |
|---|---|---|---|---|---|---|---|
| `layout.mode` | Display | Affichage | dropdown | enumeration | `single` | `single` Single image; `grid` Grid (gallery); `carousel` Carousel ★; `compare` Before / after (slider) ★; `stack` Stacked layers ★ | One image (the first row, or the highlighted one), a gallery grid, a carousel, a before / after slider or stacked layers. |
| `layout.pick` | Image shown | Image affichée | dropdown | enumeration | `first` | `first` The first one; `last` The last one | Visible when `layout.mode` = `single`. With several rows: the first or the last one (a highlighted or selected image comes first). |
| `layout.columns` | Columns (0 = automatic) | Colonnes (0 = automatique) | number | integer | `0` | 0 to 24 | Visible when `layout.mode` = `grid` |
| `layout.gap` | Spacing (px) | Espacement (px) | number | integer | `8` | 0 to 60 | Visible when `layout.mode` = `grid` |
| `layout.cellRatio` | Cell shape | Format des cases | dropdown | enumeration | `auto` | `auto` Automatic (fill the visual); `square` Square; `landscape` Landscape 4:3; `wide` Wide 16:9; `portrait` Portrait 3:4 | Visible when `layout.mode` = `grid` |
| `layout.maxImages` | Maximum number of images | Nombre maximal d'images | number | integer | `100` | 1 to 500 | Visible when `layout.mode` = `grid` or `carousel` or `stack` |
| `layout.interval` | Duration of an image (ms) | Durée d'une image (ms) | number | integer | `4000` | 1000 to 30000 | Visible when `layout.mode` = `carousel` |
| `layout.autoAdvance` | Auto-advance | Défilement automatique | toggle | bool | `true` | true / false | Visible when `layout.mode` = `carousel`. Pauses on hover and keyboard focus; the pause button stops it. Never on a dashboard tile. |
| `layout.effect` | Transition | Transition | dropdown | enumeration | `fade` | `fade` Fade; `slide` Slide; `none` None | Visible when `layout.mode` = `carousel` |
| `layout.arrows` | Arrows | Flèches | toggle | bool | `true` | true / false | Visible when `layout.mode` = `carousel` |
| `layout.dots` | Navigation dots | Points de navigation | toggle | bool | `true` | true / false | Visible when `layout.mode` = `carousel` |
| `layout.split` | Initial slider position (%) | Position du curseur au départ (%) | number | integer | `50` | 0 to 100 | Visible when `layout.mode` = `compare` |
| `layout.compareLabels` | Before / after labels | Libellés avant / après | toggle | bool | `true` | true / false | Visible when `layout.mode` = `compare` |
| `layout.layerOpacity` | Opacity of upper layers (%) | Opacité des calques du dessus (%) | number | integer | `60` | 0 to 100 | Visible when `layout.mode` = `stack` |
### Per-layer settings ★ / Réglages par calque ★ (`layers`, Format pane)
This card controls premium features (★): they work without a license key but show the watermark while in use.
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.layers` 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 |
|---|---|---|---|---|---|---|---|
| `layers.show` | Show the layer | Afficher le calque | toggle | bool | `true` | true / false | |
| `layers.opacity` | Layer opacity (%, -1 = shared) | Opacité du calque (%, -1 = commune) | number | integer | `-1` | -1 to 100 | -1: the opacity of upper layers set in Layout. The first layer stays opaque unless you set it here. |
### Position and size / Position et taille (`position`, Format pane)
| Option ID | Label (EN) | Label (FR) | Control | Type | Default | Allowed values | Notes |
|---|---|---|---|---|---|---|---|
| `position.align` | Position | Position | dropdown | enumeration | `center` | `topLeft` Top left; `top` Top; `topRight` Top right; `left` Left; `center` Center; `right` Right; `bottomLeft` Bottom left; `bottom` Bottom; `bottomRight` Bottom right | Where the image sits in its frame; with “Fill”, the part of the image that stays visible. |
| `position.sizeMode` | Size | Taille | dropdown | enumeration | `fit` | `fit` Fit (whole image); `fill` Fill (crop); `stretch` Stretch; `original` Original size; `fixed` Fixed size (px); `percent` Share of the frame (%) | |
| `position.width` | Width (px) | Largeur (px) | number | integer | `160` | 1 to 4000 | Visible when `position.sizeMode` = `fixed` |
| `position.height` | Height (px) | Hauteur (px) | number | integer | `160` | 1 to 4000 | Visible when `position.sizeMode` = `fixed` |
| `position.keepRatio` | Keep proportions | Garder les proportions | toggle | bool | `true` | true / false | Visible when `position.sizeMode` = `fixed` |
| `position.percent` | Share (%) | Proportion (%) | number | integer | `80` | 1 to 100 | Visible when `position.sizeMode` = `percent` |
| `position.offsetX` | Horizontal offset (px) | Décalage horizontal (px) | number | integer | `0` | -2000 to 2000 | |
| `position.offsetY` | Vertical offset (px) | Décalage vertical (px) | number | integer | `0` | -2000 to 2000 | |
| `position.padding` | Margin around the image (px) | Marge autour de l'image (px) | number | integer | `0` | 0 to 200 | |
| `position.rotate` | Rotation | Rotation | dropdown | enumeration | `0` | `0` None; `90` 90° (clockwise) ★; `180` 180° ★; `270` 90° (counterclockwise) ★ | |
| `position.flipH` | Flip horizontally ★ | Miroir horizontal ★ | toggle | bool | `false` | true / false | |
| `position.flipV` | Flip vertically ★ | Miroir vertical ★ | toggle | bool | `false` | true / false | |
### Mask (clipping) / Masque (découpe) (`mask`, Format pane)
| Option ID | Label (EN) | Label (FR) | Control | Type | Default | Allowed values | Notes |
|---|---|---|---|---|---|---|---|
| `mask.kind` | Clip the image | Découper l'image | dropdown | enumeration | `none` | `none` No; `rounded` Rounded corners; `ellipse` Ellipse or circle; `shape` Shape from the library; `svg` Custom SVG ★ | Rounded corners, ellipse or circle, one of the 153 shapes of the library (22 free) or your own SVG ★. |
| `mask.radius` | Corner radius (px) | Rayon des angles (px) | number | integer | `16` | 0 to 1000 | Visible when `mask.kind` = `rounded` |
| `mask.circle` | Perfect circle | Cercle parfait | toggle | bool | `true` | true / false | Visible when `mask.kind` = `ellipse`. Off: an ellipse that fills the frame of the image. |
| `mask.shape` | Shape | Forme | dropdown | enumeration | `hexagon` | `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 ★ | 153 shapes in 9 families; 22 of them are free, the others ★. |
| `mask.svg` | Clipping SVG ★ | SVG de la découpe ★ | textarea | text | (empty) | | Visible when `mask.kind` = `svg`. Paste an SVG (markup, data URI or a path “d”): its filled shapes cut the image. Cleaned, nothing is ever loaded. |
| `mask.fit` | Shape fit | Ajustement de la forme | dropdown | enumeration | `contain` | `contain` Keep proportions; `stretch` Fill the frame (distorted) | Visible when `mask.kind` = `shape` or `svg` |
| `mask.scale` | Shape size (%) | Taille de la forme (%) | number | integer | `100` | 10 to 100 | Visible when `mask.kind` = `ellipse` or `shape` or `svg` |
### Outline and shadow / Contour et ombre (`outline`, Format pane)
| Option ID | Label (EN) | Label (FR) | Control | Type | Default | Allowed values | Notes |
|---|---|---|---|---|---|---|---|
| `outline.show` | Outline | Contour | toggle | bool | `false` | true / false | Follows the mask. |
| `outline.width` | Width (px) | Épaisseur (px) | number | integer | `2` | 1 to 30 | Visible when `outline.show` = `true` |
| `outline.color` | Color (empty = accent) | Couleur (vide = accent) | color | fill | (empty) | hex color | Visible when `outline.show` = `true` |
| `outline.shadow` | Drop shadow ★ | Ombre portée ★ | toggle | bool | `false` | true / false | Follows the mask and the transparent parts of the image. |
| `outline.shadowColor` | Shadow color | Couleur de l'ombre | color | fill | `#000000` | hex color | Visible when `outline.shadow` = `true` |
| `outline.shadowOpacity` | Shadow opacity (%) | Opacité de l'ombre (%) | number | integer | `30` | 0 to 100 | Visible when `outline.shadow` = `true` |
| `outline.shadowBlur` | Shadow blur (px) | Flou de l'ombre (px) | number | integer | `10` | 0 to 60 | Visible when `outline.shadow` = `true` |
| `outline.shadowOffset` | Shadow offset (px) | Décalage de l'ombre (px) | number | integer | `4` | 0 to 40 | Visible when `outline.shadow` = `true` |
### Image adjustments / Réglages de l'image (`adjust`, Format pane)
| Option ID | Label (EN) | Label (FR) | Control | Type | Default | Allowed values | Notes |
|---|---|---|---|---|---|---|---|
| `adjust.opacity` | Opacity (%) | Opacité (%) | number | integer | `100` | 0 to 100 | |
| `adjust.brightness` | Brightness (%) | Luminosité (%) | number | integer | `100` | 0 to 300 | |
| `adjust.contrast` | Contrast (%) | Contraste (%) | number | integer | `100` | 0 to 300 | |
| `adjust.saturation` | Saturation (%) ★ | Saturation (%) ★ | number | integer | `100` | 0 to 300 | |
| `adjust.blur` | Blur (px) ★ | Flou (px) ★ | number | integer | `0` | 0 to 40 | |
| `adjust.preset` | Filter | Filtre | dropdown | enumeration | `none` | `none` None; `grayscale` Grayscale; `sepia` Sepia ★; `vintage` Vintage ★; `warm` Warm ★; `cool` Cool ★; `duotone` Duotone (style colors) ★; `invert` Negative ★ | |
| `adjust.duoDark` | Duotone: shadows (empty = style) | Duotone : ombres (vide = style) | color | fill | (empty) | hex color | Visible when `adjust.preset` = `duotone` |
| `adjust.duoLight` | Duotone: highlights (empty = style) | Duotone : lumières (vide = style) | color | fill | (empty) | hex color | Visible when `adjust.preset` = `duotone` |
| `adjust.hue` | Hue (degrees) ★ | Teinte (degrés) ★ | number | integer | `0` | -180 to 180 | |
### Caption / Légende de l'image (`caption`, Format pane)
The card header toggle is `caption.show`.
| Option ID | Label (EN) | Label (FR) | Control | Type | Default | Allowed values | Notes |
|---|---|---|---|---|---|---|---|
| `caption.show` | Show | Afficher | toggle | bool | `true` | true / false | Text of the “Caption” field; in a gallery or a carousel, the image key when the field is empty. |
| `caption.position` | Position | Position | dropdown | enumeration | `below` | `below` Below the image; `above` Above the image; `overlayBottom` On the image, bottom; `overlayTop` On the image, top | |
| `caption.fontSize` | Size | Taille | number | formatting | `12` | 6 to 40 | |
| `caption.bold` | Bold | Gras | toggle | bool | `false` | true / false | |
| `caption.color` | Color (empty = text) | Couleur (vide = texte) | color | fill | (empty) | hex color | |
| `caption.align` | Alignment | Alignement | dropdown | enumeration | `center` | `left` Left; `center` Center; `right` Right | |
| `caption.lines` | Maximum lines | Lignes au plus | number | integer | `2` | 1 to 6 | |
| `caption.band` | Band behind the text (on the image) | Bandeau sous le texte (sur l'image) | toggle | bool | `true` | true / false | |
### Image by value ★ / Image selon la valeur ★ (`conditional`, 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 `conditional.show`.
| Option ID | Label (EN) | Label (FR) | Control | Type | Default | Allowed values | Notes |
|---|---|---|---|---|---|---|---|
| `conditional.show` | Enable ★ | Activer ★ | toggle | bool | `false` | true / false | Needs the “Value (thresholds)” field. No DAX needed: traffic lights, conditional logos, status pictures. |
| `conditional.mode` | Effect | Effet | dropdown | enumeration | `pick` | `pick` Pick the image (1st, 2nd or 3rd row) by threshold; `fade` Fade below threshold 1, ring above threshold 2 | |
| `conditional.t1` | Threshold 1 | Seuil 1 | number | numeric | `0` | | |
| `conditional.t2` | Threshold 2 (ignored unless above threshold 1) | Seuil 2 (ignoré s'il n'est pas au-dessus du seuil 1) | number | numeric | `0` | | |
### Pasted image and fallback / Image collée et repli (`fallback`, Format pane)
| Option ID | Label (EN) | Label (FR) | Control | Type | Default | Allowed values | Notes |
|---|---|---|---|---|---|---|---|
| `fallback.pasted` | Pasted image (base64, data URI or SVG) | Image collée (base64, data URI ou SVG) | textarea | text | (empty) | | Shown without any field (a logo), or when an image of the data is empty. Web addresses are refused. |
| `fallback.whenEmpty` | Empty or unreadable image | Image vide ou illisible | dropdown | enumeration | `placeholder` | `placeholder` Discreet placeholder; `fallback` Pasted image; `hide` Nothing | |
| `fallback.alt` | Alternative text (accessibility) | Texte de remplacement (accessibilité) | text | text | (empty) | | Read by screen readers. Empty: the caption, then the image key. |
### 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 | `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 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 | `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` |
**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 | `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.select` | Click = filter the report | Clic = filtrer le rapport | toggle | bool | `true` | true / false | A click selects the image and filters the other visuals (Ctrl + click: several). Identity: the “Image key” field, otherwise the “Caption” or “Image” column. |
| `interaction.link` | Link opened on click (https://…) | Lien ouvert au clic (https://…) | text | text | (empty) | | Like the Web URL action of the native Image visual: Power BI asks before opening it. With a link, Ctrl + click still selects. Can come from a measure (fx). |
| `interaction.dim` | Opacity of unselected images (%) | Opacité des images non sélectionnées (%) | number | integer | `30` | 5 to 90 | |
| `interaction.hover` | Hover | Survol | dropdown | enumeration | `lift` | `none` No effect; `lift` Slight zoom; `brighten` Brighter; `loupe` Magnifier ★ | |
| `interaction.loupeZoom` | Magnifier zoom (%) | Grossissement de la loupe (%) | number | integer | `250` | 150 to 800 | Visible when `interaction.hover` = `loupe` |
| `interaction.loupeSize` | Magnifier diameter (px) | Diamètre de la loupe (px) | number | integer | `140` | 60 to 400 | Visible when `interaction.hover` = `loupe` |
### 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. |