Shape gauge for Power BI Shape Gauge Plume
A drop, a barrel or your logo fills up with color to show a percentage: value and target, one shape per category, your logo.
Interactive demo
The real Power BI visual, running in your browser with the sample report's fictitious data. Switch scenario, style or year: the visual updates as it does in Power BI. Premium ★ features are shown here without the watermark; in Power BI, without a license, they show “Plume Visuals · Premium preview”.
Power BI has no shape gauge: the native gauge is an arc, and the old “Liquid Fill Gauge” is no longer in the gallery. Shape Gauge Plume fills any shape up to the level of a percentage: value divided by the target, or position between a minimum and a maximum. The surface waves, the percentage is written in two tones, the target is drawn in the shape, and one shape per category arranges itself in a grid. Containers (barrel, bottle, wine glass, thermometer, battery…) only fill their inside. With premium: 131 more shapes, your SVG logo in its original colors, circular and radial fill, the play axis (the shape fills up year after year), threshold colors, gradients, the “exact area” mode (a quarter of the surface means 25%), tick marks, stacked layers, comparison with last year and pictograms.
Use cases
- Sales target achievement, by region or by team
- Level of a tank, a stock or a warehouse (barrel, tank, jar)
- Fundraising or budget spent on a thermometer, with the goal
- Customer satisfaction or service rate, with the company logo filled up
FreeIncluded for free
- 22 free shapes: drop, circle, heart, person, house, barrel, bottle, glasses, thermometer, batteries…
- Vertical or horizontal fill in both directions, wavy surface, animated fill
- Value / target, or minimum and maximum; visible overflow above 100%
- Single color (also driven by DAX) or one color per category
- Two-tone label (percentage, value, value / target), target mark
- One shape per category in a grid, sorted by value or name
- Minimum and maximum labels; text always kept inside the shape
- Dynamic formats: fx button on colors and texts, any option driven by DAX
PremiumPremium features
- 131 more shapes, including 15 more containers that only fill their inside (tank, beaker, test tube, hourglass…)
- Your SVG pasted or returned by a measure, sanitized; logo in its original colors
- Play axis: the shape fills up year after year
- Circular fill (start angle, direction) and radial fill; “exact area” for irregular shapes; tick marks
- Threshold colors (unfavorable, middle, favorable), gradients, color by percentage, patterns
- Stacked layers, comparison with the previous period (ghost level, change in points), pictograms
- Moving wave and bubbles; catalog-wide styles, palettes, theme JSON
Usable without a key to try them, with a watermark.
Tutorials
Start with Getting started, then pick from the how-to guides. The Fields and settings page describes every option of the Format pane.
- Getting startedBeginner6 min readA drop, barrel or logo gauge that fills up in Power BIGetting started with Shape Gauge Plume: a value and its target, a shape that fills up with color, one shape per region, a horizontal fill.
- How-to guidesIntermediate6 min readShape Gauge Plume: 12 use casesStep by step: a barrel filled with burgundy, a fundraising thermometer, your logo filled up, one shape per product, circular fill, the player, thresholds, layers and pictograms.
- Fields and settingsIntermediate18 min readShape Gauge Plume: every field and setting explainedEvery field well and every Format pane setting of Shape Gauge Plume: shape, fill, colors, label, scale, target, layout and player, with their default values.
- BasicsGetting started with Plume visualsInstallation, license, styles and the settings shared by every visual.
Fields to drop into the visual
| Field | Content | |
|---|---|---|
| Category (one shape each) | One shape per value (region, product, team) | Optional |
| Play axis | Year or date: the shape fills up frame after frame | OptionalPremium |
| Value | The measure that fills the shape | Required |
| Target (100 %) | Value of a full shape; with a maximum, a target mark | Optional |
| Minimum, Maximum | Values of an empty and a full shape | Optional |
| Comparison (previous period) | Ghost level and change in points | OptionalPremium |
| Stacked layers | Up to 8 measures stacked in the shape | OptionalPremium |
| SVG shape (measure) | Text measure: one SVG per category, sanitized | OptionalPremium |
| Tooltips | Extra measures | Optional |
| Dynamic format | Measures renamed card.setting (e.g. title.text): the Format pane driven by DAX | Optional |
Missing a feature? We adapt our visuals or build custom ones. Request a custom visual
Found a bug in Shape Gauge Plume, or have an idea to improve it? Report a bug · Suggest an idea
Technical reference for AI assistants
This section is meant for AI assistants (ChatGPT, Claude, Copilot…): every field, every Format pane option with its internal name, the expected data shape and DAX examples. Generated from the visual's code, version 1.1.0.0. Paste it into your assistant so it can guide you.
Raw Markdown version (/ai/visuals/shape-gauge.md)# Shape Gauge 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 Shape Gauge 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/shape-gauge (French: https://plumevisuals.com/fr/visuels/shape-gauge)
- Summary: A drop, a barrel or your logo fills up with color to show a percentage: value and target, one shape per category, your logo.
- Power BI visual GUID (`visualType`): `plumeShapeGaugeF50F8ABFCB9F44309B5AF1FB9BD1EA96`
- 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
Shape Gauge Plume (identifier `shape-gauge`) is a Power BI custom visual (version 1.1.0.0, installed from its `.pbiviz` file; AppSource submission in preparation) that turns **any shape into a gauge**: a drop, a barrel, a bottle or a logo fills up with color to show a percentage (e.g. a barrel 50% full of burgundy for 50%). Power BI has no native shape gauge (the native gauge is an arc); Microsoft's old Liquid Fill Gauge (circle only) is no longer in the store.
**New in version 1.1.0.0 (30/10/2026):** Free native-parity addition: **minimum and maximum labels** at the ends of the scale.
- **Percentage** = (value − minimum) / (maximum − minimum). Minimum: `minimum` role, else `scale.min`, else 0. Maximum: `maximum` role, else the `target` role ("Target (100 %)"), else `scale.max`, else automatic: 1 when values are fractions (% format or all between 0 and 1), else the largest value.
- **153 shapes** from the shared Plume library (22 free), including **22 containers** (barrel, bottle, wine glass, glass, mug, jar, bucket, battery, vertical battery, thermometer, test tube, tank, funnel, hourglass, bag, piggy bank, flask, beaker, can, coffee cup, vase, milk carton) that fill **only their inside**; hoops, graduations and sleeves are drawn over the liquid. Own SVG ★ pasted in the pane or returned by a text measure (sanitized).
- **Fill directions**: bottom → top, top → bottom, left → right, right → left, "from the shape" (battery: left → right), circular ★ (start angle, clockwise or not), radial ★. `fill.measure` = `area` ★ makes the filled **area** exactly the percentage.
- Wavy surface, animated fill on opening (900 ms, not on resize), visible overflow above 100% (dome) or cap, two-tone label placed at the widest point of the filled area, target mark with an arrow, tick marks ★, one shape per category in an automatic grid, and the shared **play axis** ★: the shape fills up frame after frame with animated transitions.
## Free vs premium (★)
- Every feature works without a key and nothing is ever blocked. Free features never show a watermark.
- Shared Style card (the same in every Plume visual): the styles `none`, `minimal` and `blackWhite`, the two Plume gradient palettes (`crest`, `crestDiverging`), "Follow report theme" and all custom colors are **free**; every other `style.preset`, the other gradient palettes (`style.palette`) and `style.themeJson` ("Theme JSON ★") are **premium**.
- Free in Shape Gauge Plume: the 22 free shapes (`circle`, `square`, `roundedSquare`, `rectangle`, `triangle`, `diamond`, `hexagon`, `star`, `heart`, `cloud`, `drop` (default), `bubble`, `arrow`, `person`, `house`, `barrel`, `bottle`, `glass`, `wineGlass`, `thermometer`, `battery`, `batteryVertical`); vertical and horizontal fills (height of the level); single color (also driven by DAX), one color per category; empty part color and opacity, container color, outline; wavy surface; every label option; target, overflow; one shape per category; sort, columns, limit.
- Premium features of Shape Gauge Plume: the 131 other shapes (among them 15 of the 22 containers: mug, jar, bucket, test tube, tank, funnel, hourglass, bag, piggy bank, flask, beaker, can, coffee cup, vase, milk carton); `shape.source` = `svg` and the `shapeSvg` role; `shape.svgPaint` = `original`; `fill.direction` = `circular` or `radial`; `dataColors.mode` = `gradient` or `scale`; `shape.emptyPattern` = `hatch`, `dots` or `grid`; `fill.waveMotion` (only when animations are not reduced); `fill.bubbles` (only for bottom-to-top fills); `layout.mode` = `pictograms`; the `comparison` role with `scale.compareShow`; the `layers` role; since the rebalancing of 22/10/2026: the `play` role (play axis, as soon as it holds data), `dataColors.mode` = `thresholds`, `fill.measure` = `area`, `scale.ticks` (vertical and horizontal fills). A ★ option with no effect shows no watermark (an unreadable SVG falls back to the free drop).
- 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 `shape-gauge` or the whole catalog. In edit mode, a wrong key shows "Invalid license key", "License expired (date)" or "This key does not cover this visual".
- Licenses last one year (one-time payment, no automatic renewal, key accepted for 30 more days, reminders 30 and 7 days before the end). Prices: 39 € personal, 99 € SME, 299 € enterprise per year, or the catalog pack (199 € / 399 € / 1,199 € per year; tiers by number of users: personal 1–10, SME 11–200, enterprise more than 200).
## Expected data shape
One row per category (and per play-axis value), with measures.
| Category (`category`) | Play axis (`play`) | Value (`value`) | Target (`target`) |
|---|---|---|---|
| West | 2024 | 410,000 | 600,000 |
| West | 2025 | 520,000 | 600,000 |
- **Category (one shape each)** (`category`, « Catégorie (une forme chacune) », one column): one shape per value; click = cross-filter. At most `layout.maxItems` shapes (60, up to 200); a note says so in edit mode.
- **Play axis ★** (`play`, « Axe de lecture ★ », one column, premium): date, year or ordered category; one frame per value. Clicking a shape selects the category only.
- **Value** (`value`, « Valeur », one measure): required unless Stacked layers are used.
- **Target (100 %)** (`target`, « Objectif (100 %) »): the value of a full shape; with `maximum` (or `scale.max`), drawn as a target mark instead.
- **Minimum** (`minimum`), **Maximum** (`maximum`): the empty and full values.
- **Comparison (previous period) ★** (`comparison`): ghost level and the change in points (▲ +8 pts).
- **Stacked layers ★** (`layers`, up to 8 measures): stacked in the shape, one color each, with a legend; their sum is the level.
- **SVG shape (measure) ★** (`shapeSvg`, text measure): SVG markup, data URI or a bare path `d`; one shape per category.
- **Tooltips** (`tooltips`) and **Dynamic format** (`format`, see below).
- Volume of data: windows of 30,000 rows, more fetched with `fetchMoreData` up to 100,000 rows; 100,004 categories render the first 60 shapes in a few seconds.
## DAX recipes
```dax
// Value and target: the shape is full when Revenue = Target
Revenue = SUM ( Sales[Amount] )
Target = SUM ( Sales[Target amount] )
// A ratio can go straight into Value (0.62 = 62%, no target needed)
Achievement = DIVIDE ( [Revenue], [Target] )
// Comparison ★
Prior-year revenue = CALCULATE ( [Revenue], SAMEPERIODLASTYEAR ( Dates[Date] ) )
// SVG shape per product ★ (text measure in the "SVG shape (measure)" well)
Product shape = SWITCH ( SELECTEDVALUE ( Products[Name] ), "Bike", "<svg viewBox='0 0 24 24'><path d='M2 20h20L12 2z'/></svg>", BLANK () )
```
## Interactions with the report
- Click a shape: cross-filter on its category; Ctrl for several; click the empty area to clear. Cross-highlighting from other visuals fills the highlighted part and keeps the full value as a light ghost level. Context menu everywhere (shapes, empty area, title, landing page).
- Hover: Power BI tooltip (category, frame, value, percentage, layers, full and empty values, target, comparison and change, threshold, Tooltips measures); report-page tooltips are supported.
- Play axis: play / pause, slider, speed ×0.5 to ×4, loop, start / end buttons, current frame in large type; keyboard in the play bar: Space, ← →, Page Up / Down, Home / End. Frame, play state and speed are per session (never saved).
- Keyboard on the shapes: Tab, arrows, Home / End, Enter selects, Esc clears; each shape is announced ("West: 62% (520,000)"). High contrast (host colors, no gradient, haloed label), "Reduce motion" respected (no fill animation, no moving wave), French and English.
## Dynamic formats
- **fx button** (Power BI conditional formatting) on colors and texts of the Format pane.
- **"Dynamic format" well** (`format`): measures renamed `card.setting` (e.g. `dataColors.single`, `title.text`, `fill.direction`, `shape.shape`) drive any setting and win over the fixed value. Driving a ★ setting by DAX still shows the watermark without a key.
```dax
// renamed dataColors.single
Result color = IF ( DIVIDE ( [Revenue], [Target] ) >= 0.8, "#2E7D4F", "#C0392B" )
// renamed title.text
Dynamic title = "Target achieved at " & FORMAT ( DIVIDE ( [Revenue], [Target] ), "0%" )
```
## Format pane: option IDs
- Card order: `license`, `style`, `dataColors`, `shape`, `fill`, `labels`, `scale`, `layout`, `legend` (with 2+ layers), `play` (« Lecture ★ », with a play axis), `interaction`, then `title`, `source`, `container`, `texts`. Format pane in version 1.1.0.0 (30/10/2026), top to bottom: `license`, `style`, `layout`, `dataColors`, `shape`, `fill`, `labels`, `scale`, `legend`, `play`, `interaction`, `tooltip`, `title`, `source`, `container`, `texts`. Settings moved or renamed in this version keep working in older reports (the old names are still read).
- `dataColors`: `mode` (`single` | `category` | `thresholds` ★ | `gradient` ★ | `scale` ★), `single`, `fill` (per category or per layer), `color2`, `color3`, `t1` (50), `t2` (80), `cLow`, `cMid` (#B26B00), `cHigh`, `lowerBetter`.
- `shape`: `source` (`library` | `svg` ★), `shape` (153 IDs, default `drop`; containers `barrel`, `bottle`, `wineGlass`, `glass`, `mug`, `jar`, `bucket`, `battery`, `batteryVertical`, `thermometer`, `testTube`, `tank`, `funnel`, `hourglass`, `bag`, `piggyBank`, `flask`, `beaker`, `can`, `coffeeCup`, `vase`, `milkCarton`), `svg` (text), `svgPaint` (`fill` | `original` ★), `fillArea` (`inner` | `whole`), `fit` (`contain` | `stretch`), `emptyColor`, `emptyOpacity` (0–100, 100), `emptyPattern` (`none` | `hatch` ★ | `dots` ★ | `grid` ★), `bodyColor`, `outline` (on), `outlineColor`, `outlineWidth` (0.5–8, 1.5).
- `fill`: `direction` (`auto` | `up` | `down` | `right` | `left` | `circular` ★ | `radial` ★), `startAngle` (−360–360, 0 = 12 o'clock), `clockwise` (on), `measure` (`level` | `area` ★), `overflow` (`show` | `cap`), `wave` (on), `waveHeight` (1–12, 3), `waveMotion` ★, `waveSpeed` (1–20 s, 4), `bubbles` ★, `grow` (on), `duration` (100–5000 ms, 900).
- `labels`: `show`, `content` (`percent` | `value` | `percentValue` | `valuePercent` | `valueTarget`), `position` (`center` | `level` | `below` | `above`), `autoSize` (on), `fontSize` (24), `color`, `bold` (on), `pctDecimals` (0–4, 0), `delta` (on), `units`, `decimals`, `prefix`, `suffix`, `catShow` (on), `catPosition` (`below` | `above`), `catSize` (12), `catColor`.
- `scale`: `min`, `max` (text), `ticks` ★ (off), `tickStep` (5–50 %, 25), `targetShow` (on), `targetValue` (text), `targetLabel`, `targetColor`, `targetStyle` (`solid` | `dashed` | `dotted`), `compareShow` ★ (on), `compareColor`.
- `layout`: `mode` (`multiples` | `pictograms` ★), `units` (2–50, 10), `unitsPerRow` (0 = auto), `columns` (0 = auto), `gap` (0–80 px, 16), `sort` (`data` | `desc` | `asc` | `name`), `maxItems` (1–200, 60).
- `play` (shared player, ★ as a whole): `start` (`last` | `first`), `speed` (100–10000 ms, 1000), `loop`, `autoPlay`, `transition`, `controls`, `position`, `ticks`, `tickLabels`, `stepButtons`, `speedButton`, `showLabel`, `labelSize` (36), `labelPosition` (`topRight`). `interaction`: `hover`, `dim` (5–80, 25).
## Editing a PBIP report (visual.json)
`visualType` is the visual GUID, `queryState` keys are the data role names, `objects` keys are the option IDs. Booleans `true` / `false`, numbers suffixed with `D`, strings and enumeration values in single quotes; colors as `{ "solid": { "color": … } }`.
```json
{
"visualType": "plumeShapeGaugeF50F8ABFCB9F44309B5AF1FB9BD1EA96",
"query": {
"queryState": {
"category": { "projections": [ { "field": { "Column": { "Expression": { "SourceRef": { "Entity": "Sales" } }, "Property": "Region" } }, "queryRef": "Sales.Region", "nativeQueryRef": "Region" } ] },
"value": { "projections": [ { "field": { "Measure": { "Expression": { "SourceRef": { "Entity": "Sales" } }, "Property": "Revenue" } }, "queryRef": "Sales.Revenue", "nativeQueryRef": "Revenue" } ] },
"target": { "projections": [ { "field": { "Measure": { "Expression": { "SourceRef": { "Entity": "Sales" } }, "Property": "Target" } }, "queryRef": "Sales.Target", "nativeQueryRef": "Target" } ] }
}
},
"objects": {
"shape": [ { "properties": { "shape": { "expr": { "Literal": { "Value": "'barrel'" } } } } } ],
"dataColors": [ { "properties": { "single": { "solid": { "color": { "expr": { "Literal": { "Value": "'#7B1E2B'" } } } } } } } ],
"license": [ { "properties": { "key": { "expr": { "Literal": { "Value": "'PLUM1.…'" } } } } } ]
}
}
```
The custom visual package must also be embedded in the report (Power BI does this when the visual is imported from the `.pbiviz` file).
## Styles and theme JSON
- `style.preset` takes one of the 20 style IDs shared by every Plume visual: `none`, `minimal`, `blackWhite`, `press`, `vintage`, `earth`, `nordic`, `executive`, `accessible`, `pastel`, `bauhaus`, `climate`, `blueprint`, `unknownPleasures`, `dark`, `neon`, `terminal`, `infographic`, `cockpit`, `hologram`. The style's first series color is the default fill; thresholds use the style's favorable / unfavorable colors; `minimal`, `unknownPleasures` and `blueprint` turn the wave off.
- `style.themeJson` (Theme JSON ★): a JSON theme as plain text (format v2 with optional `extends` and groups `colors`, `palettes`, `typography`, `shape`, `table`, `marks`, `effects`). Full reference: https://plumevisuals.com/ai/tutorials/en/themes-json.md.
## Common pitfalls
- The shape is always full: a single value with no target or maximum (the largest value is 100%); add the Target or `scale.max`.
- "—" instead of a percentage: the Value measure is blank for that category or frame.
- Empty shape with a negative label: the value is below the minimum.
- A dome above the shape: the value is above 100% (`fill.overflow` = `cap` to remove it).
- The play-axis year shows as "2,024": the column format has a thousands separator.
- Only 60 shapes: `layout.maxItems`.
- Watermark visible: a ★ shape, SVG, circular or radial fill, gradient or palette color, pattern, moving wave, bubbles, pictograms, comparison, layers, a ★ style or a theme JSON, without a valid key.
- An SVG is ignored ("Library shape used instead" in edit mode): unreadable or empty SVG; scripts, images, links and web addresses are always removed.
- The visual makes no network request: data, SVG and license key stay in the report.
## Features that do NOT exist (do not suggest them)
Filling a PNG or JPEG image (only shapes and SVG paths), loading an SVG from a web address, several values per shape other than stacked layers, liquid physics (tilt, sloshing), 3D shapes, a native gauge arc with a needle (use a circular fill instead), exporting the shape as an image.
## Data fields (wells)
Internal name = data role name (PBIP `queryState` key). Labels as shown in Power BI (English / French). ★ = premium.
| Internal name | Label (EN) | Label (FR) | Kind | Max fields | Description |
|---|---|---|---|---|---|
| `category` | Category (one shape each) | Catégorie (une forme chacune) | column | 1 | One shape per value of the field (region, product, team…). |
| `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) |
| `value` | Value | Valeur | measure | 1 | The value that fills the shape. |
| `target` | Target (100 %) | Objectif (100 %) | measure | 1 | Value of a full shape: percentage = value / target. With Maximum as well, the target is drawn as a mark. |
| `minimum` | Minimum | Minimum | measure | 1 | Value of an empty shape (0 by default). |
| `maximum` | Maximum | Maximum | measure | 1 | Value of a full shape (otherwise the target, else automatic). |
| `comparison` | Comparison (previous period) ★ | Comparaison (période précédente) ★ | measure | 1 | Drawn as a ghost level with the change in points (previous year, budget…). |
| `layers` | Stacked layers ★ | Couches empilées ★ | measure | 8 | Several measures stacked in the shape, one color each (their sum fills the shape). |
| `shapeSvg` | SVG shape (measure) ★ | Forme SVG (mesure) ★ | measure | 1 | Text measure returning SVG markup (or a path d): one shape per category, sanitized, never loaded from the web. |
| `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` (one row per combination), 30,000 rows per data window (more fetched automatically); measures = `value`, `target`, `minimum`, `maximum`, `comparison`, `layers`, `shapeSvg`, `tooltips`, `format`.
Capabilities: supportsHighlight, supportsKeyboardFocus, supportsMultiVisualSelection, supportsLandingPage, supportsEmptyDataView.
Network access: none (no privileges requested, no external request).
## Format pane options (165)
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` | Presentation | Présentation | dropdown | enumeration | `multiples` | `multiples` One shape per category; `pictograms` Pictograms (n shapes = 100%) ★ | |
| `layout.units` | Number of pictograms | Nombre de pictogrammes | number | integer | `10` | 2 to 50 | Visible when `layout.mode` = `pictograms` |
| `layout.unitsPerRow` | Pictograms per row (0 = auto) | Pictogrammes par ligne (0 = auto) | number | integer | `0` | 0 to 50 | Visible when `layout.mode` = `pictograms` |
| `layout.columns` | Columns (0 = auto) | Colonnes (0 = auto) | number | integer | `0` | 0 to 30 | |
| `layout.gap` | Gap between shapes (px) | Espace entre les formes (px) | number | integer | `16` | 0 to 80 | |
| `layout.sort` | Order | Ordre | dropdown | enumeration | `data` | `data` Data order; `desc` Percentage descending; `asc` Percentage ascending; `name` Alphabetical | |
| `layout.maxItems` | Shapes at most | Formes au plus | number | integer | `60` | 1 to 200 | 60 by default, 200 at most. Beyond, a note under the shapes says how many are shown. |
### 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 | `single` | `single` Single color; `category` One color per category; `thresholds` By thresholds (unfavorable, middle, favorable) ★; `gradient` Gradient along the fill ★; `scale` Color by percentage (palette) ★ | |
| `dataColors.single` | Color | Couleur | color | fill | (empty) | hex color | |
| `dataColors.fill` | Color | Couleur | color | fill | (empty) | hex color | |
| `dataColors.color2` | Gradient end (empty = accent) | Fin du dégradé (vide = accent) | color | fill | (empty) | hex color | |
| `dataColors.color3` | Gradient middle (optional) | Milieu du dégradé (optionnel) | color | fill | (empty) | hex color | |
| `dataColors.t1` | Threshold 1 (%) | Seuil 1 (%) | number | numeric | `50` | -1000 to 1000 | |
| `dataColors.t2` | Threshold 2 (%) | Seuil 2 (%) | number | numeric | `80` | -1000 to 1000 | |
| `dataColors.cLow` | Below threshold 1 | Sous le seuil 1 | color | fill | `#C0392B` | hex color | |
| `dataColors.cMid` | Between thresholds | Entre les seuils | color | fill | `#B26B00` | hex color | |
| `dataColors.cHigh` | Above threshold 2 | Au-dessus du seuil 2 | color | fill | `#2E7D4F` | hex color | |
| `dataColors.lowerBetter` | Lower is better (swaps the colors) | Plus bas = mieux (inverse les couleurs) | toggle | bool | `false` | true / false | |
### Shape / Forme (`shape`, Format pane)
**Shape / Forme**
| Option ID | Label (EN) | Label (FR) | Control | Type | Default | Allowed values | Notes |
|---|---|---|---|---|---|---|---|
| `shape.source` | Source | Source | dropdown | enumeration | `library` | `library` Plume library (153 shapes); `svg` Pasted SVG ★ | The "SVG shape (measure)" field wins when it is filled (one shape per category). |
| `shape.shape` | Shape | Forme | dropdown | enumeration | `drop` | `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 ★; `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 ★; `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 ★ | Visible when `shape.source` = `library`. Containers (barrel, wine glass, thermometer…) only fill their inside. |
| `shape.svg` | SVG code | Code SVG | textarea | text | (empty) | | Visible when `shape.source` = `svg`. <svg> markup, data URI or a bare d attribute. Sanitized (no script, no image, no web address). |
| `shape.svgPaint` | SVG colors | Couleurs du SVG | dropdown | enumeration | `fill` | `fill` Fill color; `original` Original colors (logo) ★ | Original colors: the filled part keeps the logo colors, the empty part is grayed out. |
| `shape.fillArea` | Filled area | Zone remplie | dropdown | enumeration | `inner` | `inner` Inside of the container; `whole` Whole shape | |
| `shape.fit` | Fit | Cadrage | dropdown | enumeration | `contain` | `contain` Keep proportions; `stretch` Stretched | |
**Look / Apparence**
| Option ID | Label (EN) | Label (FR) | Control | Type | Default | Allowed values | Notes |
|---|---|---|---|---|---|---|---|
| `shape.emptyColor` | Empty part (empty = tint of the fill) | Partie vide (vide = teinte du remplissage) | color | fill | (empty) | hex color | |
| `shape.emptyOpacity` | Empty part opacity (%) | Opacité de la partie vide (%) | number | integer | `100` | 0 to 100 | |
| `shape.emptyPattern` | Empty part pattern | Motif de la partie vide | dropdown | enumeration | `none` | `none` None; `hatch` Hatching ★; `dots` Dots ★; `grid` Grid ★ | |
| `shape.bodyColor` | Container (empty = style gray) | Récipient (vide = gris du style) | color | fill | (empty) | hex color | |
| `shape.outline` | Outline | Contour | toggle | bool | `true` | true / false | |
| `shape.outlineColor` | Outline color (empty = fill) | Couleur du contour (vide = remplissage) | color | fill | (empty) | hex color | Visible when `shape.outline` = `true` |
| `shape.outlineWidth` | Outline width | Épaisseur du contour | number | numeric | `1.5` | 0.5 to 8 | Visible when `shape.outline` = `true` |
### Fill / Remplissage (`fill`, Format pane)
**Direction / Sens**
| Option ID | Label (EN) | Label (FR) | Control | Type | Default | Allowed values | Notes |
|---|---|---|---|---|---|---|---|
| `fill.direction` | Fill direction | Sens du remplissage | dropdown | enumeration | `auto` | `auto` From the shape (bottom → top; battery: left → right); `up` Vertical, bottom → top; `down` Vertical, top → bottom; `right` Horizontal, left → right; `left` Horizontal, right → left; `circular` Circular (start angle) ★; `radial` Radial (from the center) ★ | |
| `fill.startAngle` | Start angle (°, 0 = 12 o'clock) | Angle de départ (°, 0 = midi) | number | integer | `0` | -360 to 360 | Visible when `fill.direction` = `circular` |
| `fill.clockwise` | Clockwise | Sens des aiguilles d'une montre | toggle | bool | `true` | true / false | Visible when `fill.direction` = `circular` |
| `fill.measure` | The percentage sets | Le pourcentage donne | dropdown | enumeration | `level` | `level` The level height; `area` The filled area (exact) ★ | Exact area: 25% really fills a quarter of the shape's surface (round bottom of a drop, neck of a bottle…). |
| `fill.overflow` | Above 100% | Au-delà de 100 % | dropdown | enumeration | `show` | `show` Visible overflow; `cap` Capped at 100% | |
**Surface and animation / Surface et animation**
| Option ID | Label (EN) | Label (FR) | Control | Type | Default | Allowed values | Notes |
|---|---|---|---|---|---|---|---|
| `fill.wave` | Wavy surface | Surface en vague | toggle | bool | `true` | true / false | |
| `fill.waveHeight` | Wave height | Hauteur de la vague | number | integer | `3` | 1 to 12 | Visible when `fill.wave` = `true` |
| `fill.waveMotion` | Moving wave ★ | Vague animée ★ | toggle | bool | `false` | true / false | Visible when `fill.wave` = `true`. Never when animations are reduced (Style › Animations or the system). |
| `fill.waveSpeed` | Wave period (s) | Durée d'une vague (s) | number | integer | `4` | 1 to 20 | Visible when `fill.wave` = `true` |
| `fill.bubbles` | Bubbles ★ | Bulles ★ | toggle | bool | `false` | true / false | |
| `fill.grow` | Animated fill on opening | Remplissage animé à l'ouverture | toggle | bool | `true` | true / false | When data changes (not on resize). Turned off by Style › Animations. |
| `fill.duration` | Fill duration (ms) | Durée du remplissage (ms) | number | integer | `900` | 100 to 5000 | Visible when `fill.grow` = `true` |
### Data labels / Étiquettes de données (`labels`, Format pane)
The card header toggle is `labels.show`.
**Label / Étiquette**
| Option ID | Label (EN) | Label (FR) | Control | Type | Default | Allowed values | Notes |
|---|---|---|---|---|---|---|---|
| `labels.show` | Show | Afficher | toggle | bool | `true` | true / false | |
| `labels.content` | Content | Contenu | dropdown | enumeration | `percent` | `percent` Percentage; `value` Value; `percentValue` Percentage and value; `valuePercent` Value and percentage; `valueTarget` Value / target | |
| `labels.position` | Position | Position | dropdown | enumeration | `center` | `center` Center of the shape; `level` At the fill level; `below` Below the shape; `above` Above the shape | |
| `labels.autoSize` | Automatic size | Taille automatique | toggle | bool | `true` | true / false | |
| `labels.fontSize` | Text size | Taille du texte | number | formatting | `24` | 6 to 120 | Visible when `labels.autoSize` = `false` |
| `labels.color` | Color (empty = automatic) | Couleur (vide = automatique) | color | fill | (empty) | hex color | Automatic: style text, light over the filled part (two colors). |
| `labels.bold` | Bold | Gras | toggle | bool | `true` | true / false | |
| `labels.pctDecimals` | Percentage decimals | Décimales du pourcentage | number | integer | `0` | 0 to 4 | |
| `labels.delta` | Change vs comparison (▲▼ points) | Écart à la comparaison (▲▼ points) | toggle | bool | `true` | true / false | |
**Numbers / Nombres**
| Option ID | Label (EN) | Label (FR) | Control | Type | Default | Allowed values | Notes |
|---|---|---|---|---|---|---|---|
| `labels.units` | Display units | Unités d'affichage | dropdown | enumeration | `auto` | `auto` Auto; `none` None; `k` Thousands; `m` Millions; `b` Billions | |
| `labels.decimals` | Decimals (-1 = auto) | Décimales (-1 = auto) | number | integer | `-1` | -1 to 6 | |
| `labels.prefix` | Prefix | Préfixe | text | text | (empty) | | |
| `labels.suffix` | Suffix (e.g. €) | Suffixe (ex. €) | text | text | (empty) | | |
**Category names / Nom des catégories**
| Option ID | Label (EN) | Label (FR) | Control | Type | Default | Allowed values | Notes |
|---|---|---|---|---|---|---|---|
| `labels.catShow` | Show | Afficher | toggle | bool | `true` | true / false | |
| `labels.catPosition` | Position | Position | dropdown | enumeration | `below` | `below` Below the shape; `above` Above the shape | Visible when `labels.catShow` = `true` |
| `labels.catSize` | Text size | Taille du texte | number | formatting | `12` | 6 to 40 | Visible when `labels.catShow` = `true` |
| `labels.catColor` | Color (empty = secondary) | Couleur (vide = secondaire) | color | fill | (empty) | hex color | Visible when `labels.catShow` = `true` |
### Scale and target / Échelle et objectif (`scale`, Format pane)
**Range / Échelle**
| Option ID | Label (EN) | Label (FR) | Control | Type | Default | Allowed values | Notes |
|---|---|---|---|---|---|---|---|
| `scale.min` | Minimum (empty shape) | Minimum (forme vide) | text | text | (empty) | | The Minimum field wins. |
| `scale.max` | Maximum (full shape) | Maximum (forme pleine) | text | text | (empty) | | The Maximum field, then the Target field win. Automatic: 1 when values are percentages (0 to 1), else the largest value. |
| `scale.ticks` | Tick marks ★ | Graduations ★ | toggle | bool | `false` | true / false | Along vertical and horizontal directions (not circular, radial or pictograms). |
| `scale.tickStep` | Tick step (%) | Pas des graduations (%) | number | integer | `25` | 5 to 50 | Visible when `scale.ticks` = `true` |
| `scale.minMax` | Minimum and maximum labels | Étiquettes du minimum et du maximum | toggle | bool | `false` | true / false | Values of the empty and the full shape, at the ends of the scale (like the data labels of the native gauge). No effect with tick marks. |
**Target / Objectif**
| Option ID | Label (EN) | Label (FR) | Control | Type | Default | Allowed values | Notes |
|---|---|---|---|---|---|---|---|
| `scale.targetShow` | Target mark | Trait d'objectif | toggle | bool | `true` | true / false | With the Target field and a maximum (field or value), or a fixed value below. |
| `scale.targetValue` | Fixed target (value) | Objectif fixe (valeur) | text | text | (empty) | | Visible when `scale.targetShow` = `true` |
| `scale.targetLabel` | Label | Libellé | text | text | (empty) | | Visible when `scale.targetShow` = `true` |
| `scale.targetColor` | Color (empty = text) | Couleur (vide = texte) | color | fill | (empty) | hex color | Visible when `scale.targetShow` = `true` |
| `scale.targetStyle` | Line style | Style du trait | dropdown | enumeration | `dashed` | `solid` Solid; `dashed` Dashed; `dotted` Dotted | Visible when `scale.targetShow` = `true` |
**Comparison / Comparaison**
| Option ID | Label (EN) | Label (FR) | Control | Type | Default | Allowed values | Notes |
|---|---|---|---|---|---|---|---|
| `scale.compareShow` | Ghost level of the comparison ★ | Niveau fantôme de la comparaison ★ | toggle | bool | `true` | true / false | With the Comparison field (previous period, budget…). |
| `scale.compareColor` | Color (empty = secondary) | Couleur (vide = secondaire) | color | fill | (empty) | hex color | Visible when `scale.compareShow` = `true` |
### 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 | |
### 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 | `36` | 12 to 160 | Visible when `play.showLabel` = `true` |
| `play.labelPosition` | Large value position | Position de la valeur en grand | dropdown | enumeration | `topRight` | `bottomRight` Bottom right; `topRight` Top right; `topLeft` Top left; `bottomLeft` Bottom left; `center` Center | Visible when `play.showLabel` = `true` |
### Interactions (`interaction`, Format pane)
| Option ID | Label (EN) | Label (FR) | Control | Type | Default | Allowed values | Notes |
|---|---|---|---|---|---|---|---|
| `interaction.hover` | Highlight on hover | Mettre en avant au survol | toggle | bool | `true` | true / false | |
| `interaction.dim` | Dimmed items opacity (%) | Opacité des éléments estompés (%) | number | integer | `25` | 5 to 80 | |
### Tooltips / Infobulles (`tooltip`, Format pane)
The card header toggle is `tooltip.show`.
| Option ID | Label (EN) | Label (FR) | Control | Type | Default | Allowed values | Notes |
|---|---|---|---|---|---|---|---|
| `tooltip.show` | Show | Afficher | toggle | bool | `true` | true / false | Tooltip on hover (with the fields of the "Tooltips" well and report page tooltips). |
### Title / Titre (`title`, Format pane)
The card header toggle is `title.show`.
**Title / Titre**
| Option ID | Label (EN) | Label (FR) | Control | Type | Default | Allowed values | Notes |
|---|---|---|---|---|---|---|---|
| `title.show` | Show | Afficher | toggle | bool | `true` | true / false | |
| `title.text` | Text | Texte | text | text | (empty) | | Leave empty for an automatic title built from the fields. |
| `title.fontSize` | Size | Taille | number | formatting | `14` | 7 to 40 | |
| `title.bold` | Bold | Gras | toggle | bool | `true` | true / false | |
| `title.italic` | Italic | Italique | toggle | bool | `false` | true / false | |
| `title.underline` | Underline | Souligné | toggle | bool | `false` | true / false | |
| `title.color` | Color (empty = text) | Couleur (vide = texte) | color | fill | (empty) | hex color | |
| `title.bgColor` | Background color | Couleur d'arrière-plan | color | fill | (empty) | hex color | |
| `title.align` | Horizontal alignment | Alignement horizontal | dropdown | enumeration | `left` | `left` Left; `center` Center; `right` Right | |
| `title.wrap` | Text wrap | Retour automatique à la ligne | toggle | bool | `true` | true / false | |
**Subtitle / Sous-titre**
| Option ID | Label (EN) | Label (FR) | Control | Type | Default | Allowed values | Notes |
|---|---|---|---|---|---|---|---|
| `title.subtitle` | Subtitle | Sous-titre | text | text | (empty) | | Several lines allowed: type \n to go to the next line. |
| `title.subFontSize` | Size | Taille | number | formatting | `11` | 7 to 30 | Visible when `title.subtitle` = |
| `title.subColor` | Color (empty = secondary text) | Couleur (vide = texte secondaire) | color | fill | (empty) | hex color | Visible when `title.subtitle` = |
| `title.subItalic` | Italic | Italique | toggle | bool | `false` | true / false | Visible when `title.subtitle` = |
**Divider / Séparateur**
| Option ID | Label (EN) | Label (FR) | Control | Type | Default | Allowed values | Notes |
|---|---|---|---|---|---|---|---|
| `title.divider` | Show divider | Afficher le séparateur | toggle | bool | `false` | true / false | |
| `title.dividerColor` | Color (empty = lines) | Couleur (vide = traits) | color | fill | (empty) | hex color | Visible when `title.divider` = `true` |
| `title.dividerStyle` | Line style | Style de trait | dropdown | enumeration | `solid` | `solid` Solid; `dashed` Dashed; `dotted` Dotted | Visible when `title.divider` = `true` |
| `title.dividerWidth` | Width | Épaisseur | number | integer | `1` | 1 to 6 | Visible when `title.divider` = `true` |
**Spacing / Espacement**
| Option ID | Label (EN) | Label (FR) | Control | Type | Default | Allowed values | Notes |
|---|---|---|---|---|---|---|---|
| `title.spaceBelow` | Space below the title (px) | Espace sous le titre (px) | number | integer | `4` | 0 to 40 | |
### Source note / Note de source (`source`, Format pane)
The card header toggle is `source.show`.
| Option ID | Label (EN) | Label (FR) | Control | Type | Default | Allowed values | Notes |
|---|---|---|---|---|---|---|---|
| `source.show` | Show | Afficher | toggle | bool | `false` | true / false | |
| `source.text` | Text | Texte | text | text | (empty) | | |
| `source.fontSize` | Size | Taille | number | formatting | `9` | 6 to 20 | |
| `source.italic` | Italic | Italique | toggle | bool | `false` | true / false | |
| `source.color` | Color (empty = secondary text) | Couleur (vide = texte secondaire) | color | fill | (empty) | hex color | |
| `source.align` | Alignment | Alignement | dropdown | enumeration | `left` | `left` Left; `center` Center; `right` Right | |
### Frame / Cadre (`container`, Format pane)
**Background / Arrière-plan**
| Option ID | Label (EN) | Label (FR) | Control | Type | Default | Allowed values | Notes |
|---|---|---|---|---|---|---|---|
| `container.bgShow` | Background | Arrière-plan | toggle | bool | `false` | true / false | |
| `container.bgColor` | Color | Couleur | color | fill | `#FFFFFF` | hex color | Visible when `container.bgShow` = `true` |
| `container.bgColor2` | Gradient end (optional) | Fin du dégradé (optionnel) | color | fill | (empty) | hex color | Visible when `container.bgShow` = `true` |
| `container.bgTransparency` | Transparency (%) | Transparence (%) | slider | numeric | `0` | 0 to 100 | Visible when `container.bgShow` = `true` |
**Border / Bordure**
| Option ID | Label (EN) | Label (FR) | Control | Type | Default | Allowed values | Notes |
|---|---|---|---|---|---|---|---|
| `container.border` | Border | Bordure | toggle | bool | `false` | true / false | |
| `container.borderColor` | Color (empty = lines) | Couleur (vide = traits) | color | fill | (empty) | hex color | Visible when `container.border` = `true` |
| `container.borderWidth` | Width | Épaisseur | number | integer | `1` | 0 to 6 | Visible when `container.border` = `true` |
| `container.radius` | Rounded corners | Coins arrondis | number | integer | `8` | 0 to 24 | |
**Shadow / Ombre**
| Option ID | Label (EN) | Label (FR) | Control | Type | Default | Allowed values | Notes |
|---|---|---|---|---|---|---|---|
| `container.shadow` | Shadow | Ombre | toggle | bool | `false` | true / false | |
| `container.shadowColor` | Color (empty = soft) | Couleur (vide = douce) | color | fill | (empty) | hex color | Visible when `container.shadow` = `true` |
| `container.shadowSize` | Blur (px) | Flou (px) | number | integer | `12` | 0 to 40 | Visible when `container.shadow` = `true` |
**Spacing / Marges**
| Option ID | Label (EN) | Label (FR) | Control | Type | Default | Allowed values | Notes |
|---|---|---|---|---|---|---|---|
| `container.padding` | Inner padding | Marge intérieure | number | integer | `8` | 0 to 40 | |
### Language and numbers / Langue et nombres (`texts`, Format pane)
| Option ID | Label (EN) | Label (FR) | Control | Type | Default | Allowed values | Notes |
|---|---|---|---|---|---|---|---|
| `texts.language` | Interface language | Langue de l'interface | dropdown | enumeration | `auto` | `auto` Same as Power BI; `fr` French; `en` English | |
| `texts.numberLocale` | Number format locale (e.g. en-GB) | Format des nombres (ex. fr-FR) | text | text | (empty) | | Thousands and decimal separators. Empty: same as Power BI. |