Bar Plume
Power BI's 5 bar charts in one visual, with small multiples, custom series order, stacked and clustered columns and variance arrows.
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”.
Bar Plume replaces Power BI's bar and column charts: clustered, stacked, 100% stacked, as bars or columns, picking its orientation from the available room. Small multiples, drill-down hierarchy, several measures with a legend, custom series order, fixed bar width, ribbons between stacks, labels with the share of the category and a detail line, positive and negative totals. With premium: stacked and clustered columns, diverging bars for agreement scales, total of 100% bars, variance arrows between columns, error bars and trend lines on every layout, Top N with “Others”, reference lines and an animated bar chart race.
Use cases
- Revenue by region, stacked by channel, with the total on top
- This year versus last year, with variance arrows
- One chart per year or per country (small multiples)
- Survey results on an agreement scale (diverging bars)
FreeIncluded for free
- Clustered, stacked, 100%, overlapped; bars or columns, automatic orientation
- Small multiples, drill-down hierarchy, several measures with a legend
- Custom or reversed series order, per-series settings
- Fixed or maximum width, gaps between segments, ribbons between stacks, scrolling
- Labels: share of the category, detail line, small segments hidden, + / − totals
- Target per bar, sort by value, category or series, cross-filtering, keyboard
- Gridlines on both axes, zoom slider, round the range, scale kept under filters
- Dynamic formats: fx button on colors and texts, any option driven by DAX
- Minimal and Black & White styles, custom colors
PremiumPremium features
- Stacked and clustered columns, diverging bars (Likert)
- Actual total on top of 100% bars
- Variance arrows between columns (previous, first / last, this year vs last year)
- Error bars, trend line, 3 reference lines and a band (Analytics pane)
- Top N with “Others”, variance to target, highlight, gradient, lollipops and pills
- Animated bar chart race: play axis, re-sorted every frame, base64 flags
- Own axis per small multiple, 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 startedBeginner8 min readAll your bar and column charts in one Power BI visual: Bar PlumeGet started with Bar Plume in Power BI: prepare your data and measures, then build a stacked column chart with data labels and totals in about 10 minutes.
- How-to guidesIntermediate7 min readBar Plume: 8 how-to guides (variance arrows, target, Top N…)Match a native bar chart, compare 2025 with 2024 using variance arrows, show actuals vs. target in %, keep the top 5 and group the rest: step-by-step recipes.
- Fields and settingsIntermediate33 min readBar Plume: every field and Format pane setting explainedEvery field well and every setting in the Bar Plume Format and Analytics panes: what each one does, its possible values, its default value and premium features.
- BasicsGetting started with Plume visualsInstallation, license, styles and the settings shared by every visual.
Fields to drop into the visual
| Field | Content | |
|---|---|---|
| Category | One bar per value; several fields = a hierarchy to drill | Required |
| Legend (series) | Optional: one series per value (channel, year…) | Optional |
| Values | One or more measures, also with a legend | Required |
| Small multiples | Optional: one chart per value | Optional |
| Target | Measure: a marker per bar | Optional |
| Label detail | Measure shown under the value (growth, share…) | Optional |
| Lower bound (error bars) | Measure: bottom of the error bar | OptionalPremium |
| Upper bound (error bars) | Measure: top of the error bar | OptionalPremium |
| Tooltips | Extra measures | Optional |
| Play axis | Year, date: animated bar chart race | OptionalPremium |
| Image (base64) | Flag or logo per category in the bar chart race | OptionalPremium |
| 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 Bar 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.4.0.0. Paste it into your assistant so it can guide you.
Raw Markdown version (/ai/visuals/bar-chart.md)# Bar Plume: technical reference for AI assistants
> Power BI custom visual by Plume Studio (Plume Visuals). Visual version **1.4.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 Bar 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/bar-chart (French: https://plumevisuals.com/fr/visuels/bar-chart)
- Summary: Power BI's 5 bar charts in one visual, with small multiples, custom series order, stacked and clustered columns and variance arrows.
- Power BI visual GUID (`visualType`): `plumeBarChart3A7E15C29B4D4F6A8E21D0C5B9F3A7E4`
- 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
Bar Plume (formerly Plume Bar) is a Power BI custom visual (base range, version 1.4.0.0, installed from the `.pbiviz` file; AppSource submission in progress) that covers Power BI's five bar charts in one visual: clustered, stacked and 100% stacked, as bars (`layout.orientation` = `horizontal`) or columns (`vertical`); with `auto` it picks horizontal bars when category names are long or numerous. It adds overlapped bars, small multiples (Small multiples field), drill-down on a hierarchy (several fields in Category, Power BI drill buttons), several measures with a Legend, a custom series order, per-series settings, fixed or maximum bar width, gaps between segments, ribbons between stacks, scrolling (`bars.scrollStart` = `end` starts on the last categories), labels with the share of the category and a detail line (Label detail field), positive and negative totals, a target marker per bar or stack, Top N with "Others", and in premium stacked-and-clustered and diverging layouts, the actual total of 100% bars, variance arrows between columns, error bars, a trend line and reference lines. Bars glide from their old value to the new one (400 ms, `style.animate`).
**New in version 1.4.0.0 (30/10/2026):** Format pane reorganized (new **Layout** card with orientation, series type and shape; new **Gridlines** card); free native-parity additions: **zoom slider**, value axis "Round the range", category-axis gridlines, scale kept under filters (`valAxis.min` / `valAxis.max` from a "Dynamic format" measure); premium **bar chart race** (Play axis ★ field, re-sort at every frame, Top N per frame, stable colors, base64 images).
## 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 (`style.customColors` and the colors under it) are **free**; every other `style.preset`, the other gradient palettes (`style.palette`) and `style.themeJson` ("Theme JSON ★") are **premium** (watermark without a key). See "Styles and theme JSON" below.
- Using a premium feature without a valid key shows **"Plume Visuals · Premium preview"** (French: « Plume Visuals · Aperçu premium ») in the footer of the visual, with an "Unlock →" link to the pricing page. It disappears once a key is pasted in **Format › Plume Studio License › License key** (`license.key`; French: « Licence Plume Studio › Clé de licence »), the **first card** of the Format pane.
- Premium features of Bar Plume (the watermark appears only when they actually apply):
- `layout.type` = `stackedClustered` ("Stacked and clustered ★") or `diverging` ("Diverging (centered on zero) ★");
- `labels.totals100` ("Total at the end of 100% bars ★", 100% stacked only);
- the **Variance arrows ★** card (`variance.show`, `variance.mode` = `consecutive` / `firstLast` / `series`);
- the **Error bars ★** and **Trend line ★** cards of the Analytics pane (`errorBars.show`, `trend.show`);
- `smallMultiples.scale` = `independent` ("Independent per panel ★"), only when a field is in Small multiples;
- `sort.topN` ("Top N ★"), with `sort.n`, `sort.others`, `sort.othersLabel`;
- `target.variance` = `pct` ("In % ★") or `abs` ("In value ★"), only when a field is in Target;
- `layout.shape` = `lollipop` ("Lollipop (stem and dot) ★") or `pill` ("Pill (rounded ends) ★");
- `dataColors.mode` = `gradient` ("Gradient by value ★") or `highlight` ("Highlight one bar ★");
- the **Reference lines ★** card of the Analytics pane (`reference.show1/2/3`, `reference.band`);
- Premium options and list values carry " ★" in their label and the description "Premium feature: usable for free with a « Premium preview » watermark…".
- Accepted keys: only keys starting with `PLUM1.` shown in the buyer's account on plumevisuals.com, checked offline (Ed25519 signature), covering `bar-chart` 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". `license.showOwner` displays "Licensed to <holder>".
- 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 per year: 39 € personal, 99 € SME, 299 € enterprise, or a catalog pack (199 € / 399 € / 1,199 € per year; tiers by number of users, designers and viewers included: personal 1–10, SME 11–200, enterprise more than 200). Renewing gives a new key to paste instead of the old one.
## Expected data shape
The visual reads **one row per category** (and per series value when Legend is used), with the measures evaluated for that row.
| Category (`category`) | Values (`values`) | Target (`target`) |
|---|---|---|
| Île-de-France | 1 412 300 | 1 350 000 |
| Bretagne | 388 950 | 420 000 |
| … | … | … |
- **Category** (`category`, label "Category" / « Axe (catégories) », grouping, up to 6 fields): one bar per value. Several fields form a hierarchy explored with Power BI's drill buttons; after "Expand all down one level", labels are concatenated ("2024 Furniture", `catAxis.concatenate` = true) or the upper level is written under the columns (false).
- **Legend (series)** (`series`, « Légende (séries) », grouping, one field, optional): one series per value (channel, year…). Unlike native charts, **a Legend can be combined with several measures**: one series per value and measure ("Store · Revenue"), each measure in a shade of the series color; with `layout.type` = `stackedClustered`, one stack per measure.
- **Values** (`values`, « Valeurs », measures, several allowed): one series per measure.
- **Small multiples** (`multiples`, « Petits multiples », grouping, one field, optional): one panel per value, in a grid (`smallMultiples.columns`, 0 = automatic); shared value axis by default, axes on outer panels only; totals, Top N, targets and analytics are kept in every panel. A click selects the category in that panel.
- **Target** (`target`, « Objectif », one measure, optional): a marker per bar (or per stack). With a Legend, the measure is evaluated per series; with `stacked` layout the stack target is the sum of the series targets. The tooltip always adds the target and the variance in % when a target exists.
- **Label detail** (`labelDetail`, « Détail des étiquettes », one measure, optional): shown under the value (`labels.detailPos` = `below`), next to it (`inline`) or instead of it (`only`) when data labels are on.
- **Lower bound / Upper bound (error bars)** (`errorLow`, `errorHigh`, one measure each, optional): bounds of the error bars ★ (`errorBars.source` = `fields` for values, `relative` for ± deltas; `percent` needs no field).
- **Tooltips** (`tooltips`, « Infobulles », measures, optional) and **Dynamic format** (`format`, « Format dynamique », measures, see below).
- Volume: up to 10,000 rows (category × small multiple) and 60 series (top-N data reduction of Power BI). Beyond the room, bars scroll.
- Values are taken as they come: Top N and "Others" are computed on the categories received, and "Others" is the **sum** of the remaining categories per series.
## DAX recipes
```dax
Revenue = SUM ( Sales[Amount] )
Gross margin = SUM ( Sales[Margin] )
// Target from a disconnected table Targets[Region], Targets[Annual target]
Target =
CALCULATE ( SUM ( Targets[Annual target] ), TREATAS ( VALUES ( Sales[Region] ), Targets[Region] ) )
* MAX ( 1, DISTINCTCOUNT ( Sales[Year] ) )
// Year-over-year change, usable in Tooltips or for a dynamic title
Growth 2025 = DIVIDE ( CALCULATE ( [Revenue], Sales[Year] = "2025" ), CALCULATE ( [Revenue], Sales[Year] = "2024" ) ) - 1
```
For a "lower is better" metric (costs, lead times), set `target.lowerIsBetter` = true: the colors of the variance swap meaning, the sign stays mathematical.
## Interactions with the report
- Click a bar = select (cross-filters other visuals), Ctrl + click = add, click on the background = clear. Clicking the "Others" bar selects every grouped category. Legend click selects a whole series (`legend.interactive`), legend hover highlights it.
- Supports **highlighting** from other visuals: the highlighted part is drawn solid, the rest faded.
- Keyboard: Tab to the chart, arrow keys / Home / End to move between bars, Enter or Space to select (Ctrl / Shift to add), Esc to clear. Screen-reader announcements, ARIA labels.
- Context menu, Power BI tooltips (report-page tooltips too), landing page when no field is set, read-only on dashboards, high contrast (series told apart by fill), reduced motion respected. No network request.
## Dynamic formats
- **fx button** (Power BI conditional formatting) on every color and every text of the Format pane: *Field value*, *Rules*, *Gradient*. With `dataColors.mode` = `category`, each category color has its own fx button (rules color each bar like native visuals).
- **Dynamic format** field (role `format`, several measures): a measure renamed for this visual as `card.setting` (right-click › Rename for this visual) drives **any** setting: sizes, toggles, lists, fonts, colors, texts. It wins over the fixed value, the style and an fx rule; its measures are never drawn. Names ignore case, accents and separator (`Title Color` = `title.color`).
- Value used for a global setting: the common value of all bars, else the total, else the first bar. Wrap with `CALCULATE ( …, ALLSELECTED () )` for a whole-visual value. Unknown names and unusable values are reported in edit mode and ignored.
- Examples: `title.text` = `"Revenue by region · 2025 vs 2024: " & FORMAT ( CALCULATE ( [Growth 2025], ALLSELECTED () ), "+0.0 %;-0.0 %" )`; `title.color` = `IF ( CALCULATE ( [Growth 2025], ALLSELECTED () ) >= 0, "#2E7D4F", "#C0392B" )`; `sort.n` = `SELECTEDVALUE ( 'Product count'[Product count], 6 )` (a numeric range parameter). A ★ setting driven by DAX stays ★.
## Format pane: how to read the tables below
- Each option has an ID `card.option` (for example `layout.orientation`). The card is the capabilities.json **object name**, the option is the **property name**.
- Card order: `license` (always first), `style` (shared Style card: `preset`, `themeJson`, `followTheme`, `reverse`, then custom colors with `palette`, font, background, radius, animations), `dataColors` (dynamic card "Data colors": mode, then one color per series or per category, stored with its selector), `bars`, `seriesFormat` (dynamic card "Per-series settings": "Apply settings to" All series or one series; labels, label position and color, opacity, relative width when overlapped, stack when stacked and clustered, side when diverging), `sort` ("Sort and order": categories, then series order `sort.seriesBy` = `model` / `nameAsc` / `nameDesc` / `totalDesc` / `totalAsc` / `custom` with `sort.seriesNames` = "Web; Store", `sort.seriesReverse`), `target`, `variance`, `labels`, `catAxis`, `valAxis`, `legend`, `smallMultiples`, `interaction`, then `title`, `source`, `container`, `texts`. The `reference` ("Reference lines ★"), `errorBars` ("Error bars ★") and `trend` ("Trend line ★") cards are in the **Analytics** pane. Format pane in version 1.4.0.0 (30/10/2026), top to bottom: `license`, `style`, `layout`, `dataColors`, `seriesFormat`, `bars`, `labels`, `catAxis`, `valAxis`, `gridlines`, `legend`, `sort`, `target`, `variance`, `zoom`, `smallMultiples`, `play`, `race`, `interaction`, `tooltip`, `title`, `source`, `container`, `texts`; Analytics pane: `reference`, `errorBars`, `trend`. Settings moved or renamed in this version keep working in older reports (the old names are still read).
- Labels follow the language of Power BI Desktop; `texts.language` can force French or English inside the visual. "Visible when" means the option only appears when another option has one of the listed values (e.g. `sort.n` only when `sort.topN` = true, `target.goodColor` only when `target.variance` ≠ `none`).
## Editing a PBIP report (visual.json)
`visualType` is the visual GUID, `queryState` keys are the data role names, `objects` keys are the option IDs. Literal syntax: booleans `true` / `false`, numbers suffixed with `D`, strings and enumeration values in single quotes, colors wrapped in `solid.color`. A per-series color uses an entry with a `selector`.
```json
{
"visualType": "plumeBarChart3A7E15C29B4D4F6A8E21D0C5B9F3A7E4",
"query": {
"queryState": {
"category": { "projections": [ { "field": { "Column": { "Expression": { "SourceRef": { "Entity": "Sales" } }, "Property": "Region" } }, "queryRef": "Sales.Region", "nativeQueryRef": "Region" } ] },
"values": { "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" } ] },
"format": { "projections": [ { "field": { "Measure": { "Expression": { "SourceRef": { "Entity": "Sales" } }, "Property": "Dynamic title" } }, "queryRef": "Sales.Dynamic title", "nativeQueryRef": "Dynamic title", "displayName": "title.text" } ] }
}
},
"objects": {
"bars": [ { "properties": { "orientation": { "expr": { "Literal": { "Value": "'vertical'" } } } } } ],
"target": [ { "properties": { "marker": { "expr": { "Literal": { "Value": "'line'" } } },
"variance": { "expr": { "Literal": { "Value": "'pct'" } } } } } ],
"labels": [ { "properties": { "show": { "expr": { "Literal": { "Value": "true" } } },
"decimals": { "expr": { "Literal": { "Value": "0D" } } } } } ],
"catAxis": [ { "properties": { "labelMode": { "expr": { "Literal": { "Value": "'rotate45'" } } } } } ],
"dataColors": [ { "properties": { "fill": { "solid": { "color": { "expr": { "Literal": { "Value": "'#b8462a'" } } } } } },
"selector": { "metadata": "Sales.Revenue" } } ],
"license": [ { "properties": { "key": { "expr": { "Literal": { "Value": "'PLUM1.…'" } } } } } ]
}
}
```
Top N: `"sort": [ { "properties": { "topN": { "expr": { "Literal": { "Value": "true" } } }, "n": { "expr": { "Literal": { "Value": "6D" } } } } } ]`. 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`.
- `style.themeJson` (Format › Style › Theme JSON ★) takes a JSON theme as plain text. Format v2: an object with an optional `extends` (a style ID above) and optional groups `colors`, `palettes`, `typography`, `shape`, `table`, `marks`, `effects`; the v1 flat format (`style`, `palette`, `accent`, `background`…) is still read. Every field is optional. Colors are `#RRGGBB` (`#RGB` and `#RRGGBBAA` accepted, opacity ignored). Unknown fields and values outside the allowed lists are ignored, out-of-range numbers are clamped. Invalid JSON shows "Invalid theme JSON: ignored" in edit mode and the visual keeps its look.
- Full field list with allowed values, examples and troubleshooting: tutorial https://plumevisuals.com/ai/tutorials/en/themes-json.md (French: https://plumevisuals.com/ai/tutorials/fr/themes-json.md). The same JSON can be pasted in every Plume visual of a page.
- Priority (the last one wins): visual defaults → `style.preset` → `style.themeJson` → `style.palette` (if not "Style or theme palette") → `style.followTheme` → custom colors → options set by hand in the other cards → DAX formats (fx button, "Dynamic format" field) → Windows high contrast.
## Common pitfalls
- Five native charts: clustered / stacked / 100% stacked = `layout.type` (`clustered`, `stacked`, `stacked100`), bars or columns = `layout.orientation`.
- Unwanted scrollbar: bars are thinner than `bars.minSize` (lower it) or `bars.widthMode` = `fixed` with a large `bars.barPx`. Small multiples scroll when a panel would be lower than `smallMultiples.minHeight`.
- No target marker: Target well empty, or the measure is blank for those categories (no relationship, misspelled keys).
- Variance to target computed on the first measure when several are clustered, on the stack total when stacked. Variance arrows compare category totals (`consecutive`, `firstLast`) or the first two series (`series`).
- "Others" shows a meaningless figure for a ratio or an average: "Others" is a sum. Turn off `sort.others` for non-additive measures.
- Months sorted by value: set `sort.by` = `data` (model order) with a sort-by column in the model, or `labelAsc` with `sort.natural` for codes like "M2" / "M10".
- `labels.totals` only exists for `stacked` and `stackedClustered`, `labels.totals100` for `stacked100`; `bars.groupGap` for `clustered` and `stackedClustered` (negative = partial overlap); `bars.ribbons` for `stacked` and `stacked100`.
- Labels of small stacked segments disappear when the text does not fit: turn on `labels.overflow`, or hide them on purpose with `labels.minShare`.
- Watermark visible: a ★ option is applied (see the list above) without a valid key.
- A measure in the Dynamic format field that is never blank can bring back categories without data: return BLANK when the main measure is blank.
## Features that do NOT exist (do not suggest them)
Combo bar + line chart, secondary value axis, waterfall or bridge (use Waterfall Plume), continuous date axis and zoom slider (bars scroll instead), dynamic Top N by another measure than the bar value, "Others" as an average, per-bar images or icons, data-driven bar width, export of the data from the visual, play axis or animation over time, forecast (use Line Plume).
## 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 | Axe (catégories) | column | 6 | |
| `series` | Legend (series) | Légende (séries) | column | 1 | |
| `values` | Values | Valeurs | measure | several | |
| `multiples` | Small multiples | Petits multiples | column | 1 | |
| `target` | Target | Objectif | measure | 1 | |
| `labelDetail` | Label detail | Détail des étiquettes | measure | 1 | |
| `errorLow` | Lower bound (error bars) | Borne basse (barres d'erreur) | measure | 1 | |
| `errorHigh` | Upper bound (error bars) | Borne haute (barres d'erreur) | measure | 1 | |
| `tooltips` | Tooltips | Infobulles | measure | several | |
| `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) |
| `image` | Image (base64) ★ | Image (base64) ★ | measure | 1 | Text measure or column: an image (data URI or base64) per category, shown in the bar chart race. |
| `format` | Dynamic format | Format dynamique | measure | several | Measures named card.setting (e.g. title.fontSize): drive any Format option with DAX |
Data view: categorical, categories = `multiples` + `category` + `play` (one row per combination), 30,000 rows per data window (more fetched automatically); measures = `values`, `target`, `labelDetail`, `errorLow`, `errorHigh`, `image`, `tooltips`, `format`, grouped into series by `series`.
Capabilities: supportsHighlight, supportsKeyboardFocus, supportsMultiVisualSelection, supportsLandingPage, supportsEmptyDataView.
Network access: none (no privileges requested, no external request).
## Format pane options (288)
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.orientation` | Orientation | Orientation | dropdown | enumeration | `auto` | `auto` Automatic (based on room); `vertical` Columns (vertical); `horizontal` Bars (horizontal) | Automatic: horizontal bars when category names are long or numerous. |
| `layout.type` | Series | Séries | dropdown | enumeration | `clustered` | `clustered` Clustered (side by side); `stacked` Stacked; `stacked100` 100% stacked; `overlap` Overlapped; `stackedClustered` Stacked and clustered ★; `diverging` Diverging (centered on zero) ★ | Stacked and clustered: one stack per measure (with a legend) or per "Stack" chosen series by series. Diverging: agreement scales (Likert), side of each series in "Per-series settings". |
| `layout.divergingPct` | As % of the category | En % de la catégorie | toggle | bool | `true` | true / false | Visible when `layout.type` = `diverging` |
| `layout.shape` | Shape | Forme | dropdown | enumeration | `bar` | `bar` Bar; `lollipop` Lollipop (stem and dot) ★; `pill` Pill (rounded ends) ★ | |
### Data colors / Couleurs des données (`dataColors`, Format pane)
Per-item card: Power BI shows it once per series, category, column or KPI (an "Apply settings to" list where relevant). In PBIP `visual.json`, each entry of `objects.dataColors` carries a `selector` (`metadata` = the field's queryRef, or `data` for a category value); an entry without a selector applies to all items.
| Option ID | Label (EN) | Label (FR) | Control | Type | Default | Allowed values | Notes |
|---|---|---|---|---|---|---|---|
| `dataColors.mode` | Coloring | Coloration | dropdown | enumeration | `auto` | `auto` Palette (one color per series); `single` Single color; `category` One color per category; `gradient` Gradient by value ★; `highlight` Highlight one bar ★ | |
| `dataColors.single` | Color | Couleur | color | fill | (empty) | hex color | |
| `dataColors.fill` | Color | Couleur | color | fill | (empty) | hex color | |
| `dataColors.negative` | Negative values (empty = same color) | Valeurs négatives (vide = même couleur) | color | fill | (empty) | hex color | |
| `dataColors.highlightWhat` | Highlighted bar | Barre mise en avant | dropdown | enumeration | `max` | `max` Largest; `min` Smallest; `first` First; `last` Last; `name` Named category | |
| `dataColors.highlightName` | Category name | Nom de la catégorie | text | text | (empty) | | |
| `dataColors.highlightColor` | Highlight color (empty = accent) | Couleur mise en avant (vide = accent) | color | fill | (empty) | hex color | |
| `dataColors.othersColor` | Other bars color (empty = style gray) | Couleur des autres barres (vide = gris du style) | color | fill | (empty) | hex color | |
### Per-series settings / Réglages par série (`seriesFormat`, 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.seriesFormat` 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 |
|---|---|---|---|---|---|---|---|
| `seriesFormat.labels` | Data labels | Étiquettes de données | dropdown | enumeration | `inherit` | `inherit` Same as the Labels card; `on` Shown; `off` Hidden | |
| `seriesFormat.labelPos` | Label position | Position des étiquettes | dropdown | enumeration | `inherit` | `inherit` Same as the Labels card; `auto` Automatic; `outsideEnd` Outside end; `insideEnd` Inside end; `center` Center; `insideBase` Inside base | |
| `seriesFormat.labelColor` | Label color (empty = Labels card) | Couleur des étiquettes (vide = carte Étiquettes) | color | fill | (empty) | hex color | |
| `seriesFormat.opacity` | Opacity (%, 0 = Bars card) | Opacité (%, 0 = carte Barres) | number | integer | `0` | 0 to 100 | |
| `seriesFormat.width` | Relative width (%, 0 = automatic) | Largeur relative (%, 0 = automatique) | number | integer | `0` | 0 to 100 | Overlapped: width of the series relative to the room (a thin bar in front of a wide one). |
| `seriesFormat.stack` | Stack (stacked and clustered) | Pile (empilées et groupées) | dropdown | enumeration | `auto` | `auto` Automatic (one per measure); `1` Stack 1; `2` Stack 2; `3` Stack 3; `4` Stack 4; `5` Stack 5; `6` Stack 6 | |
| `seriesFormat.side` | Side (diverging) | Côté (divergentes) | dropdown | enumeration | `auto` | `auto` Automatic (first half on the left); `left` Negative (left / bottom); `right` Positive (right / top); `neutral` Neutral (across zero) | |
### Bars / Barres (`bars`, Format pane)
**Width and spacing / Largeur et espacement**
| Option ID | Label (EN) | Label (FR) | Control | Type | Default | Allowed values | Notes |
|---|---|---|---|---|---|---|---|
| `bars.widthMode` | Bar width | Largeur des barres | dropdown | enumeration | `relative` | `relative` Relative to the room; `fixed` Fixed (px) | |
| `bars.thickness` | Bar thickness (%) | Épaisseur des barres (%) | number | integer | `70` | 10 to 100 | Visible when `bars.widthMode` = `relative` |
| `bars.maxPx` | Maximum width (px, 0 = no limit) | Largeur maximale (px, 0 = sans limite) | number | integer | `0` | 0 to 400 | Visible when `bars.widthMode` = `relative` |
| `bars.barPx` | Width (px) | Largeur (px) | number | integer | `24` | 2 to 300 | Visible when `bars.widthMode` = `fixed` |
| `bars.groupGap` | Gap between series (%) | Écart entre séries (%) | number | integer | `6` | -50 to 50 | Visible when `layout.type` = `clustered` or `stackedClustered`. Negative: bars of the same group partly overlap. |
| `bars.segmentGap` | Gap between segments (px) | Espace entre les segments (px) | number | integer | `0` | 0 to 12 | Visible when `layout.type` = `stacked` or `stacked100` or `stackedClustered` or `diverging` |
| `bars.outerPad` | Outer padding (% of a category) | Marge aux extrémités (% d'une catégorie) | number | integer | `0` | 0 to 100 | |
| `bars.radius` | End rounding | Arrondi du bout | number | integer | `2` | 0 to 20 | |
| `bars.dotSize` | Dot size | Taille du point | number | integer | `10` | 4 to 30 | Visible when `layout.shape` = `lollipop` |
| `bars.minSize` | Minimum thickness before scrolling (px) | Épaisseur minimale avant défilement (px) | number | integer | `16` | 6 to 80 | |
| `bars.scrollStart` | Initial scroll position | Défilement au départ | dropdown | enumeration | `start` | `start` Start; `end` End (last categories) | |
| `bars.opacity` | Opacity (%) | Opacité (%) | number | integer | `100` | 10 to 100 | |
| `bars.border` | Outline | Contour | toggle | bool | `false` | true / false | |
| `bars.borderColor` | Outline color (empty = style stroke) | Couleur du contour (vide = contour du style) | color | fill | (empty) | hex color | Visible when `bars.border` = `true` |
**Overlap / Superposition**
| Option ID | Label (EN) | Label (FR) | Control | Type | Default | Allowed values | Notes |
|---|---|---|---|---|---|---|---|
| `bars.overlapOrder` | Drawing order | Ordre de dessin | dropdown | enumeration | `largestBehind` | `largestBehind` Largest behind; `series` Series order | |
| `bars.overlapNarrow` | Following series narrower | Séries suivantes plus fines | toggle | bool | `false` | true / false | Each series is narrower than the previous one: actual inside plan, this year inside last year. |
**Track and ribbons / Rail et rubans**
| Option ID | Label (EN) | Label (FR) | Control | Type | Default | Allowed values | Notes |
|---|---|---|---|---|---|---|---|
| `bars.track` | Track behind bars | Rail derrière les barres | toggle | bool | `false` | true / false | A light bar up to the maximum, behind each bar. |
| `bars.ribbons` | Ribbons between stacks | Rubans entre les piles | toggle | bool | `false` | true / false | Visible when `layout.type` = `stacked` or `stacked100`. Links each series from one stack to the next, like Power BI ribbons. |
| `bars.ribbonOpacity` | Ribbon opacity (%) | Opacité des rubans (%) | number | integer | `25` | 5 to 90 | Visible when `layout.type` = `stacked` or `stacked100` |
### Data labels / Étiquettes de données (`labels`, Format pane)
The card header toggle is `labels.show`.
**Labels / Étiquettes**
| Option ID | Label (EN) | Label (FR) | Control | Type | Default | Allowed values | Notes |
|---|---|---|---|---|---|---|---|
| `labels.show` | Show | Afficher | toggle | bool | `false` | true / false | |
| `labels.content` | Content | Contenu | dropdown | enumeration | `value` | `value` Value; `percent` Share (of the stack, else of the total); `percentCat` Share of the category; `percentTotal` Share of the grand total; `valuePercent` Value and share; `valuePercentCat` Value and share of the category; `category` Category; `series` Series; `categoryValue` Category and value; `seriesValue` Series and value | |
| `labels.position` | Position | Position | dropdown | enumeration | `auto` | `auto` Automatic; `outsideEnd` Outside end; `insideEnd` Inside end; `center` Center; `insideBase` Inside base | |
| `labels.minShare` | Hide below (% of the category) | Masquer sous (% de la catégorie) | number | integer | `0` | 0 to 50 | Labels of segments smaller than this share of their category are hidden (0 = all). |
| `labels.overflow` | Overflow text | Laisser déborder le texte | toggle | bool | `false` | true / false | Stacked: the label of a segment that is too short is shown anyway (otherwise it is hidden). |
| `labels.detailPos` | "Label detail" field | Champ « Détail des étiquettes » | dropdown | enumeration | `below` | `below` On a second line; `inline` Next to the value; `only` Instead of the value | |
| `labels.orientation` | Text orientation | Orientation du texte | dropdown | enumeration | `horizontal` | `horizontal` Horizontal; `vertical` Vertical (columns) | |
| `labels.background` | Label background | Fond des étiquettes | toggle | bool | `false` | true / false | |
| `labels.bgColor` | Background color (empty = visual background) | Couleur du fond (vide = fond du visuel) | color | fill | (empty) | hex color | Visible when `labels.background` = `true` |
| `labels.bgOpacity` | Background opacity (%) | Opacité du fond (%) | number | integer | `85` | 5 to 100 | Visible when `labels.background` = `true` |
| `labels.fontSize` | Size | Taille | number | formatting | `10` | 6 to 24 | |
| `labels.color` | Color (empty = automatic) | Couleur (vide = automatique) | color | fill | (empty) | hex color | Automatic: readable color depending on the background (inside bars: white or dark). |
| `labels.bold` | Bold | Gras | toggle | bool | `false` | true / false | |
| `labels.halo` | Text halo | Halo autour du texte | toggle | bool | `true` | true / false | |
| `labels.declutter` | Hide overlapping labels | Masquer les étiquettes qui se chevauchent | toggle | bool | `true` | true / false | |
**Totals / Totaux**
| Option ID | Label (EN) | Label (FR) | Control | Type | Default | Allowed values | Notes |
|---|---|---|---|---|---|---|---|
| `labels.totals` | Total at the end of stacks | Total au bout des piles | toggle | bool | `true` | true / false | Visible when `layout.type` = `stacked` or `stackedClustered` |
| `labels.totalsSplit` | Positive and negative apart | Positifs et négatifs séparés | toggle | bool | `false` | true / false | Visible when `layout.type` = `stacked` or `stackedClustered`. With negative values: one total at each end of the stack instead of the net total. |
| `labels.totals100` | Total at the end of 100% bars ★ | Total au bout des barres 100 % ★ | toggle | bool | `false` | true / false | Visible when `layout.type` = `stacked100`. The actual total of each category (as a value), at the end of the 100% bar. |
| `labels.totalsBold` | Bold totals | Totaux en gras | toggle | bool | `true` | true / false | |
| `labels.totalsColor` | Totals color (empty = text) | Couleur des totaux (vide = texte) | color | fill | (empty) | hex color | |
**Numbers / Nombres**
| Option ID | Label (EN) | Label (FR) | Control | Type | Default | Allowed values | Notes |
|---|---|---|---|---|---|---|---|
| `labels.units` | Display units | Unités d'affichage | dropdown | enumeration | `auto` | `auto` Auto; `none` None; `k` Thousands; `m` Millions; `b` Billions | |
| `labels.decimals` | Decimals (-1 = auto) | Décimales (-1 = auto) | number | integer | `-1` | -1 to 6 | |
| `labels.prefix` | Prefix | Préfixe | text | text | (empty) | | |
| `labels.suffix` | Suffix (e.g. €) | Suffixe (ex. €) | text | text | (empty) | | |
### Category axis / Axe des catégories (`catAxis`, Format pane)
The card header toggle is `catAxis.show`.
**Values / Valeurs**
| Option ID | Label (EN) | Label (FR) | Control | Type | Default | Allowed values | Notes |
|---|---|---|---|---|---|---|---|
| `catAxis.show` | Show | Afficher | toggle | bool | `true` | true / false | |
| `catAxis.fontSize` | Size | Taille | number | formatting | `9` | 6 to 24 | |
| `catAxis.color` | Color (empty = secondary text) | Couleur (vide = texte secondaire) | color | fill | (empty) | hex color | |
| `catAxis.labelMode` | Long labels | Étiquettes longues | dropdown | enumeration | `auto` | `auto` Automatic; `wrap` Two lines; `rotate45` Tilted (45°); `rotate90` Vertical; `truncate` Truncated (…) | |
| `catAxis.maxSize` | Maximum room (% of the visual) | Place maximale (% du visuel) | number | integer | `30` | 10 to 60 | |
| `catAxis.line` | Axis line | Trait de l'axe | toggle | bool | `true` | true / false | |
| `catAxis.allLabels` | Show every label | Afficher toutes les étiquettes | toggle | bool | `false` | true / false | No label is skipped, even when categories are tight. |
| `catAxis.concatenate` | Concatenate labels | Concaténer les niveaux | toggle | bool | `true` | true / false | Expanded hierarchy ("Expand all down one level"): off, the upper level is written under the columns, once per group. |
**Axis title / Titre de l'axe**
| Option ID | Label (EN) | Label (FR) | Control | Type | Default | Allowed values | Notes |
|---|---|---|---|---|---|---|---|
| `catAxis.showTitle` | Show | Afficher | toggle | bool | `false` | true / false | |
| `catAxis.titleText` | Text | Texte | text | text | (empty) | | Visible when `catAxis.showTitle` = `true` |
### Value axis / Axe des valeurs (`valAxis`, Format pane)
The card header toggle is `valAxis.show`.
**Values / Valeurs**
| Option ID | Label (EN) | Label (FR) | Control | Type | Default | Allowed values | Notes |
|---|---|---|---|---|---|---|---|
| `valAxis.show` | Show | Afficher | toggle | bool | `true` | true / false | |
| `valAxis.fontSize` | Size | Taille | number | formatting | `9` | 6 to 24 | |
| `valAxis.color` | Color (empty = secondary text) | Couleur (vide = texte secondaire) | color | fill | (empty) | hex color | |
| `valAxis.units` | Display units | Unités d'affichage | dropdown | enumeration | `auto` | `auto` Auto; `none` None; `k` Thousands; `m` Millions; `b` Billions | |
| `valAxis.decimals` | Decimals (-1 = auto) | Décimales (-1 = auto) | number | integer | `-1` | -1 to 6 | |
| `valAxis.prefix` | Prefix | Préfixe | text | text | (empty) | | |
| `valAxis.suffix` | Suffix (e.g. €) | Suffixe (ex. €) | text | text | (empty) | | |
| `valAxis.line` | Axis line | Trait de l'axe | toggle | bool | `false` | true / false | |
**Range / Échelle**
| Option ID | Label (EN) | Label (FR) | Control | Type | Default | Allowed values | Notes |
|---|---|---|---|---|---|---|---|
| `valAxis.scale` | Scale | Échelle | dropdown | enumeration | `linear` | `linear` Linear; `log` Logarithmic | |
| `valAxis.min` | Minimum | Minimum | text | text | (empty) | | |
| `valAxis.max` | Maximum | Maximum | text | text | (empty) | | |
| `valAxis.zero` | Always include zero | Toujours inclure zéro | toggle | bool | `true` | true / false | Visible when `valAxis.scale` = `linear` |
| `valAxis.ticks` | Number of ticks (approx.) | Nombre de graduations (environ) | number | integer | `5` | 2 to 20 | |
| `valAxis.invert` | Invert axis | Inverser l'axe | toggle | bool | `false` | true / false | |
| `valAxis.round` | Round range | Arrondir la plage | toggle | bool | `true` | true / false | Computed bounds rounded to a round tick. Off: the axis stops at the extreme values. |
**Axis title / Titre de l'axe**
| Option ID | Label (EN) | Label (FR) | Control | Type | Default | Allowed values | Notes |
|---|---|---|---|---|---|---|---|
| `valAxis.showTitle` | Show | Afficher | toggle | bool | `false` | true / false | |
| `valAxis.titleText` | Text | Texte | text | text | (empty) | | Visible when `valAxis.showTitle` = `true` |
### Gridlines / Quadrillage (`gridlines`, Format pane)
**Value axis / Axe des valeurs**
| Option ID | Label (EN) | Label (FR) | Control | Type | Default | Allowed values | Notes |
|---|---|---|---|---|---|---|---|
| `gridlines.valShow` | Show | Afficher | toggle | bool | `true` | true / false | |
| `gridlines.valColor` | Color (empty = style grid) | Couleur (vide = grille du style) | color | fill | (empty) | hex color | |
| `gridlines.valWidth` | Width | Épaisseur | number | numeric | `1` | 0.5 to 6 | |
| `gridlines.valStyle` | Line style | Style de trait | dropdown | enumeration | `solid` | `solid` Solid; `dashed` Dashed; `dotted` Dotted | |
| `gridlines.zeroLine` | Zero line | Ligne du zéro | toggle | bool | `true` | true / false | |
**Category axis / Axe des catégories**
| Option ID | Label (EN) | Label (FR) | Control | Type | Default | Allowed values | Notes |
|---|---|---|---|---|---|---|---|
| `gridlines.catShow` | Show | Afficher | toggle | bool | `false` | true / false | |
| `gridlines.catColor` | Color (empty = style grid) | Couleur (vide = grille du style) | color | fill | (empty) | hex color | |
| `gridlines.catWidth` | Width | Épaisseur | number | numeric | `1` | 0.5 to 6 | |
| `gridlines.catStyle` | Line style | Style de trait | dropdown | enumeration | `solid` | `solid` Solid; `dashed` Dashed; `dotted` Dotted | |
### Legend / Légende (`legend`, Format pane)
The card header toggle is `legend.show`.
| Option ID | Label (EN) | Label (FR) | Control | Type | Default | Allowed values | Notes |
|---|---|---|---|---|---|---|---|
| `legend.show` | Show | Afficher | toggle | bool | `true` | true / false | Shown when the chart has several series. |
| `legend.position` | Position | Position | dropdown | enumeration | `top` | `top` Top; `bottom` Bottom; `right` Right; `left` Left | |
| `legend.align` | Alignment | Alignement | dropdown | enumeration | `left` | `left` Start; `center` Center; `right` End | Visible when `legend.position` = `top` or `bottom` |
| `legend.showTitle` | Legend title | Titre de la légende | toggle | bool | `false` | true / false | |
| `legend.titleText` | Title text | Texte du titre | text | text | (empty) | | Visible when `legend.showTitle` = `true` |
| `legend.fontSize` | Size | Taille | number | formatting | `9` | 6 to 24 | |
| `legend.color` | Color (empty = secondary text) | Couleur (vide = texte secondaire) | color | fill | (empty) | hex color | |
| `legend.interactive` | Click = select the series | Clic = sélectionner la série | toggle | bool | `true` | true / false | |
### Sort / Tri (`sort`, Format pane)
**Categories / Catégories**
| Option ID | Label (EN) | Label (FR) | Control | Type | Default | Allowed values | Notes |
|---|---|---|---|---|---|---|---|
| `sort.by` | Sort by | Trier par | dropdown | enumeration | `valueDesc` | `valueDesc` Value, descending; `valueAsc` Value, ascending; `labelAsc` Category A → Z; `labelDesc` Category Z → A; `seriesDesc` One series' value, descending; `seriesAsc` One series' value, ascending; `data` Model order | Model order keeps the order of the field (dates, months, sort-by column). |
| `sort.bySeries` | Series name | Nom de la série | text | text | (empty) | | Visible when `sort.by` = `seriesDesc` or `seriesAsc` |
| `sort.natural` | Natural sort (2 before 10) | Tri naturel (2 avant 10) | toggle | bool | `true` | true / false | |
| `sort.topN` | Top N ★ | Top N ★ | toggle | bool | `false` | true / false | |
| `sort.n` | N | N | number | integer | `10` | 1 to 500 | Visible when `sort.topN` = `true` |
| `sort.others` | Group the rest into "Others" | Regrouper le reste dans « Autres » | toggle | bool | `true` | true / false | Visible when `sort.topN` = `true`. "Others" is the sum of the remaining categories. Clicking it selects them. |
| `sort.othersLabel` | "Others" label | Libellé « Autres » | text | text | (empty) | | Visible when `sort.topN` = `true` |
**Series / Séries**
| Option ID | Label (EN) | Label (FR) | Control | Type | Default | Allowed values | Notes |
|---|---|---|---|---|---|---|---|
| `sort.seriesBy` | Series order | Ordre des séries | dropdown | enumeration | `model` | `model` Model order; `nameAsc` Name A → Z; `nameDesc` Name Z → A; `totalDesc` Total, descending; `totalAsc` Total, ascending; `custom` Custom | Order of stacks, groups and legend. Colors stay with their series. |
| `sort.seriesNames` | Names in order (separated by ;) | Noms dans l'ordre (séparés par ;) | text | text | (empty) | | Visible when `sort.seriesBy` = `custom`. Series missing from the list follow, in model order. |
| `sort.seriesReverse` | Reverse order | Inverser l'ordre | toggle | bool | `false` | true / false | |
| `sort.legendReverse` | Legend in the visual order of stacks | Légende dans l'ordre visuel des piles | toggle | bool | `false` | true / false | Stacked columns: the legend follows the top-to-bottom order of the segments. |
### Target / Objectif (`target`, Format pane)
| Option ID | Label (EN) | Label (FR) | Control | Type | Default | Allowed values | Notes |
|---|---|---|---|---|---|---|---|
| `target.marker` | Marker | Repère | dropdown | enumeration | `line` | `line` Line; `dot` Dot; `ghost` Ghost bar | Drawn when a field is placed in "Target". |
| `target.color` | Color (empty = text) | Couleur (vide = texte) | color | fill | (empty) | hex color | |
| `target.width` | Width | Épaisseur | number | numeric | `2` | 1 to 6 | |
| `target.variance` | Variance to target | Écart à l'objectif | dropdown | enumeration | `none` | `none` None; `pct` In % ★; `abs` In value ★ | |
| `target.goodColor` | Color when reached | Couleur si atteint | color | fill | `#2E7D4F` | hex color | Visible when `target.variance` = `pct` or `abs` |
| `target.badColor` | Color when missed | Couleur si non atteint | color | fill | `#C0392B` | hex color | Visible when `target.variance` = `pct` or `abs` |
| `target.lowerIsBetter` | Lower is better | Plus bas = mieux | toggle | bool | `false` | true / false | Visible when `target.variance` = `pct` or `abs` |
### Variance arrows ★ / Écarts entre colonnes ★ (`variance`, 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 `variance.show`.
| Option ID | Label (EN) | Label (FR) | Control | Type | Default | Allowed values | Notes |
|---|---|---|---|---|---|---|---|
| `variance.show` | Show ★ | Afficher ★ | toggle | bool | `false` | true / false | |
| `variance.mode` | Compare | Comparer | dropdown | enumeration | `consecutive` | `consecutive` Each category to the previous one; `firstLast` The last category to the first one; `series` 2nd series to the 1st, within each group | Compared values: the category total (the value with a single series). |
| `variance.display` | Show the variance | Afficher l'écart | dropdown | enumeration | `pct` | `pct` In %; `abs` In value; `both` In value and % | |
| `variance.goodColor` | Increase color | Couleur des hausses | color | fill | `#2E7D4F` | hex color | |
| `variance.badColor` | Decrease color | Couleur des baisses | color | fill | `#C0392B` | hex color | |
| `variance.lowerIsBetter` | Decrease is good | Baisse = bonne nouvelle | toggle | bool | `false` | true / false | |
| `variance.fontSize` | Text size | Taille du texte | number | formatting | `9` | 6 to 20 | |
### Zoom (`zoom`, Format pane)
The card header toggle is `zoom.show`.
| Option ID | Label (EN) | Label (FR) | Control | Type | Default | Allowed values | Notes |
|---|---|---|---|---|---|---|---|
| `zoom.show` | Zoom slider | Curseur de zoom | toggle | bool | `false` | true / false | Two-handle slider below the axis: choose the visible range (drag, keyboard). The position is not saved in the report. |
| `zoom.labels` | Slider labels | Étiquettes du curseur | toggle | bool | `true` | true / false | |
| `zoom.height` | Height (px) | Hauteur (px) | number | integer | `22` | 14 to 48 | |
### Small multiples / Petits multiples (`smallMultiples`, Format pane)
**Grid / Grille**
| Option ID | Label (EN) | Label (FR) | Control | Type | Default | Allowed values | Notes |
|---|---|---|---|---|---|---|---|
| `smallMultiples.columns` | Columns (0 = automatic) | Colonnes (0 = automatique) | number | integer | `0` | 0 to 12 | |
| `smallMultiples.minHeight` | Minimum panel height (px) | Hauteur minimale d'un panneau (px) | number | integer | `80` | 40 to 600 | Below that, the grid scrolls vertically. |
| `smallMultiples.gap` | Spacing (px) | Espacement (px) | number | integer | `14` | 0 to 60 | |
| `smallMultiples.scale` | Value axis | Axe des valeurs | dropdown | enumeration | `shared` | `shared` Shared by all panels; `independent` Independent per panel ★ | |
| `smallMultiples.outerAxes` | Axes on outer panels only | Axes sur les bords seulement | toggle | bool | `true` | true / false | Visible when `smallMultiples.scale` = `shared` |
| `smallMultiples.border` | Panel border | Cadre des panneaux | toggle | bool | `false` | true / false | |
**Titles / Titres**
| Option ID | Label (EN) | Label (FR) | Control | Type | Default | Allowed values | Notes |
|---|---|---|---|---|---|---|---|
| `smallMultiples.titleShow` | Title of each panel | Titre de chaque panneau | toggle | bool | `true` | true / false | |
| `smallMultiples.titleSize` | Text size | Taille du texte | number | formatting | `10` | 6 to 24 | Visible when `smallMultiples.titleShow` = `true` |
| `smallMultiples.titleColor` | Color (empty = text) | Couleur (vide = texte) | color | fill | (empty) | hex color | Visible when `smallMultiples.titleShow` = `true` |
| `smallMultiples.titleAlign` | Alignment | Alignement | dropdown | enumeration | `left` | `left` Start; `center` Center | Visible when `smallMultiples.titleShow` = `true` |
| `smallMultiples.titleTotal` | Total in the title | Total dans le titre | toggle | bool | `false` | true / false | Visible when `smallMultiples.titleShow` = `true` |
### Playback ★ / Lecture ★ (`play`, Format pane)
This card controls premium features (★): they work without a license key but show the watermark while in use.
| 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 | `first` | `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 | `900` | 100 to 10000 | At speed ×1; the speed button of the play bar multiplies it (×0.5 to ×4) for the session. |
| `play.loop` | Loop | Lecture en boucle | toggle | bool | `false` | true / false | |
| `play.autoPlay` | Play automatically on opening | Lecture automatique à l'ouverture | toggle | bool | `false` | true / false | Once, from the first frame. Not when animations are reduced (Style › Animations or the system) nor on a dashboard tile. |
| `play.transition` | Animated transitions | Transitions animées | toggle | bool | `true` | true / false | Values, positions and colors move smoothly from one frame to the next. |
| `play.controls` | Play bar | Barre de lecture | toggle | bool | `true` | true / false | |
| `play.position` | Bar position | Position de la barre | dropdown | enumeration | `bottom` | `bottom` Bottom; `top` Top | Visible when `play.controls` = `true` |
| `play.ticks` | Tick marks | Graduations | dropdown | enumeration | `auto` | `auto` Automatic; `all` Every frame; `none` None | Visible when `play.controls` = `true` |
| `play.tickLabels` | Tick labels | Étiquettes des graduations | toggle | bool | `true` | true / false | Visible when `play.controls` = `true` |
| `play.stepButtons` | Start and end buttons | Boutons début et fin | toggle | bool | `true` | true / false | Visible when `play.controls` = `true` |
| `play.speedButton` | Speed button | Bouton de vitesse | toggle | bool | `true` | true / false | Visible when `play.controls` = `true` |
| `play.showLabel` | Current value in large type | Valeur en cours en grand | toggle | bool | `true` | true / false | |
| `play.labelSize` | Large value size | Taille de la valeur en grand | number | formatting | `44` | 12 to 160 | Visible when `play.showLabel` = `true` |
| `play.labelPosition` | Large value position | Position de la valeur en grand | dropdown | enumeration | `bottomRight` | `bottomRight` Bottom right; `topRight` Top right; `topLeft` Top left; `bottomLeft` Bottom left; `center` Center | Visible when `play.showLabel` = `true` |
### Bar chart race ★ / Course de barres ★ (`race`, Format pane)
This card controls premium features (★): they work without a license key but show the watermark while in use.
**Ranking / Classement**
| Option ID | Label (EN) | Label (FR) | Control | Type | Default | Allowed values | Notes |
|---|---|---|---|---|---|---|---|
| `race.order` | Bar order | Ordre des barres | dropdown | enumeration | `rank` | `rank` Ranking at each frame (re-sort); `fixed` Fixed order (Sort card) | Ranking: bars swap places when a category overtakes another. |
| `race.topN` | Bars shown (Top N of each frame) | Barres affichées (Top N de chaque image) | number | integer | `10` | 1 to 60 | |
| `race.scale` | Value scale | Échelle des valeurs | dropdown | enumeration | `frame` | `frame` Fitted to each frame; `all` Shared by all frames | |
| `race.interpolate` | In-between values during the transition | Valeurs intermédiaires pendant la transition | toggle | bool | `true` | true / false | Bars and labels count from one value to the next (otherwise they jump to the new value). |
**Look / Apparence**
| Option ID | Label (EN) | Label (FR) | Control | Type | Default | Allowed values | Notes |
|---|---|---|---|---|---|---|---|
| `race.values` | Values at the end of bars | Valeurs au bout des barres | toggle | bool | `true` | true / false | Number format: Data labels card (units, decimals, prefix, suffix). |
| `race.names` | Category names | Noms des catégories | dropdown | enumeration | `axis` | `axis` On the axis; `inside` Inside the bar; `end` At the end of the bar | |
| `race.images` | Category images | Images des catégories | toggle | bool | `true` | true / false | "Image (base64)" field: one image per category (data URI or base64; web addresses refused). |
| `race.imageShape` | Image shape | Forme de l'image | dropdown | enumeration | `circle` | `circle` Circle; `square` Rounded square | Visible when `race.images` = `true` |
| `race.total` | Frame total under the large value | Total de l'image sous la valeur en grand | toggle | bool | `false` | true / false | |
### Reference lines ★ / Lignes de référence ★ (`reference`, Analytics pane)
This card controls premium features (★): they work without a license key but show the watermark while in use.
**Line 1 / Ligne 1**
| Option ID | Label (EN) | Label (FR) | Control | Type | Default | Allowed values | Notes |
|---|---|---|---|---|---|---|---|
| `reference.show1` | Show | Afficher | toggle | bool | `false` | true / false | |
| `reference.kind1` | Value | Valeur | dropdown | enumeration | `average` | `constant` Constant; `average` Average; `median` Median; `min` Minimum; `max` Maximum; `percentile` Percentile; `measure` "Target" field (average) | |
| `reference.value1` | Constant value | Valeur constante | number | numeric | `0` | | Visible when `reference.kind1` = `constant` |
| `reference.pct1` | Percentile | Centile | number | integer | `90` | 1 to 99 | Visible when `reference.kind1` = `percentile` |
| `reference.label1` | Label | Libellé | text | text | (empty) | | |
| `reference.showValue1` | Show the value | Afficher la valeur | toggle | bool | `true` | true / false | |
| `reference.color1` | Color (empty = accent) | Couleur (vide = accent) | color | fill | (empty) | hex color | |
| `reference.style1` | Line style | Style de trait | dropdown | enumeration | `dashed` | `solid` Solid; `dashed` Dashed; `dotted` Dotted | |
| `reference.width1` | Width | Épaisseur | number | numeric | `1.5` | 0.5 to 6 | |
| `reference.labelPos1` | Label position | Position du libellé | dropdown | enumeration | `end` | `end` End; `start` Start; `none` None | |
**Line 2 / Ligne 2**
| Option ID | Label (EN) | Label (FR) | Control | Type | Default | Allowed values | Notes |
|---|---|---|---|---|---|---|---|
| `reference.show2` | Show | Afficher | toggle | bool | `false` | true / false | |
| `reference.kind2` | Value | Valeur | dropdown | enumeration | `constant` | `constant` Constant; `average` Average; `median` Median; `min` Minimum; `max` Maximum; `percentile` Percentile; `measure` "Target" field (average) | |
| `reference.value2` | Constant value | Valeur constante | number | numeric | `0` | | Visible when `reference.kind2` = `constant` |
| `reference.pct2` | Percentile | Centile | number | integer | `90` | 1 to 99 | Visible when `reference.kind2` = `percentile` |
| `reference.label2` | Label | Libellé | text | text | (empty) | | |
| `reference.showValue2` | Show the value | Afficher la valeur | toggle | bool | `true` | true / false | |
| `reference.color2` | Color (empty = accent) | Couleur (vide = accent) | color | fill | (empty) | hex color | |
| `reference.style2` | Line style | Style de trait | dropdown | enumeration | `dashed` | `solid` Solid; `dashed` Dashed; `dotted` Dotted | |
| `reference.width2` | Width | Épaisseur | number | numeric | `1.5` | 0.5 to 6 | |
| `reference.labelPos2` | Label position | Position du libellé | dropdown | enumeration | `end` | `end` End; `start` Start; `none` None | |
**Line 3 / Ligne 3**
| Option ID | Label (EN) | Label (FR) | Control | Type | Default | Allowed values | Notes |
|---|---|---|---|---|---|---|---|
| `reference.show3` | Show | Afficher | toggle | bool | `false` | true / false | |
| `reference.kind3` | Value | Valeur | dropdown | enumeration | `median` | `constant` Constant; `average` Average; `median` Median; `min` Minimum; `max` Maximum; `percentile` Percentile; `measure` "Target" field (average) | |
| `reference.value3` | Constant value | Valeur constante | number | numeric | `0` | | Visible when `reference.kind3` = `constant` |
| `reference.pct3` | Percentile | Centile | number | integer | `90` | 1 to 99 | Visible when `reference.kind3` = `percentile` |
| `reference.label3` | Label | Libellé | text | text | (empty) | | |
| `reference.showValue3` | Show the value | Afficher la valeur | toggle | bool | `true` | true / false | |
| `reference.color3` | Color (empty = accent) | Couleur (vide = accent) | color | fill | (empty) | hex color | |
| `reference.style3` | Line style | Style de trait | dropdown | enumeration | `dashed` | `solid` Solid; `dashed` Dashed; `dotted` Dotted | |
| `reference.width3` | Width | Épaisseur | number | numeric | `1.5` | 0.5 to 6 | |
| `reference.labelPos3` | Label position | Position du libellé | dropdown | enumeration | `end` | `end` End; `start` Start; `none` None | |
**Reference band / Bande de référence**
| Option ID | Label (EN) | Label (FR) | Control | Type | Default | Allowed values | Notes |
|---|---|---|---|---|---|---|---|
| `reference.band` | Show | Afficher | toggle | bool | `false` | true / false | |
| `reference.bandFrom` | From | De | number | numeric | `0` | | |
| `reference.bandTo` | To | À | number | numeric | `0` | | |
| `reference.bandLabel` | Label | Libellé | text | text | (empty) | | |
| `reference.bandColor` | Color (empty = accent) | Couleur (vide = accent) | color | fill | (empty) | hex color | |
| `reference.bandOpacity` | Opacity (%) | Opacité (%) | number | integer | `12` | 2 to 60 | |
### Error bars ★ / Barres d'erreur ★ (`errorBars`, Analytics pane)
This card controls premium features (★): they work without a license key but show the watermark while in use.
The card header toggle is `errorBars.show`.
| Option ID | Label (EN) | Label (FR) | Control | Type | Default | Allowed values | Notes |
|---|---|---|---|---|---|---|---|
| `errorBars.show` | Show ★ | Afficher ★ | toggle | bool | `false` | true / false | |
| `errorBars.source` | Bounds | Bornes | dropdown | enumeration | `fields` | `fields` Lower / Upper bound fields (values); `relative` Lower / Upper bound fields (± deltas); `percent` Percentage of the value | Stacked: on the stack total. With a single delta field, it is used on both sides. |
| `errorBars.pct` | Percentage (±) | Pourcentage (±) | number | numeric | `10` | 0 to 100 | Visible when `errorBars.source` = `percent` |
| `errorBars.color` | Color (empty = text) | Couleur (vide = texte) | color | fill | (empty) | hex color | |
| `errorBars.width` | Width | Épaisseur | number | numeric | `1.5` | 0.5 to 6 | |
| `errorBars.cap` | Cap width (px) | Largeur des taquets (px) | number | integer | `8` | 0 to 40 | |
| `errorBars.band` | Shaded band instead of whiskers | Bande ombrée plutôt que des traits | toggle | bool | `false` | true / false | |
### Trend ★ / Tendance ★ (`trend`, Analytics pane)
This card controls premium features (★): they work without a license key but show the watermark while in use.
The card header toggle is `trend.show`.
| Option ID | Label (EN) | Label (FR) | Control | Type | Default | Allowed values | Notes |
|---|---|---|---|---|---|---|---|
| `trend.show` | Show ★ | Afficher ★ | toggle | bool | `false` | true / false | |
| `trend.on` | Computed on | Calculée sur | dropdown | enumeration | `total` | `total` Category totals; `series` Each series (clustered, overlapped) | |
| `trend.color` | Color (empty = text or series) | Couleur (vide = texte ou série) | color | fill | (empty) | hex color | |
| `trend.style` | Line style | Style du trait | dropdown | enumeration | `dashed` | `solid` Solid; `dashed` Dashed; `dotted` Dotted | |
| `trend.width` | Width | Épaisseur | number | numeric | `1.5` | 0.5 to 6 | |
| `trend.label` | Slope at the end of the line | Pente en fin de ligne | toggle | bool | `false` | true / false | |
### 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. |