Styles, custom colors and JSON themes: dress every Plume visual at once
The Style card shared by every Plume Studio visual: 20 complete styles, free custom colors to step out of a style, and a JSON theme to apply your brand guidelines everywhere.
Lire en françaisEvery Plume Studio visual (Table Plume, Bar Plume, Ridgeline Plume, Map Plume, Bar Slicer Plume…) has the same Style card in the Format pane, right below the Plume Studio License card. It has four groups, in the same order:
| Part | What it does |
|---|---|
| Style | A complete ready-made look: colors, three palettes, fonts, frame, table header, bar fill, effects. Then Theme JSON ★, Follow report theme and Reverse gradients. |
| Custom colors | The Customize colors switch: start from the style and pick the background, text, accent, series and gradient yourself. Free. |
| Text, Animations | The font (and, in slicers, the text size and density), then animations. |
The background drawn by the visual, the border, the rounded corners and the shadow are in the Frame card (see the shared cards). In slicers, there is no Reverse gradients switch.
Pick the same Style (or paste the same Theme JSON) in every visual of a page: they match automatically.
1. Pick a style
| Style | Mood | Offer |
|---|---|---|
| None | Each visual's default look | free |
| Minimal | Slate and a single bright color, no extra strokes | free |
| Black & White | No color at all: black, grays and hatching, perfect for print | free |
| Newspaper | Newsprint, black ink, double rule, small caps, one red accent | ★ |
| Vintage (antique plate) | Parchment, sepia, indigo and gold leaf, paper texture | ★ |
| Earth | Terracotta, olive, ochre and sand | ★ |
| Nordic | Glacier blue, cold white, a touch of raspberry | ★ |
| Executive | The board report: navy, teal, filled header | ★ |
| Accessible (high legibility) | Okabe-Ito and Cividis (color-blind safe), strong contrast | ★ |
| Pastel | Soft tints, very rounded corners, pill header | ★ |
| Bauhaus (pop) | Primary red, blue and yellow, thick black outlines, hard shadow | ★ |
| Climate | Warming stripes, blues against reds | ★ |
| Blueprint | Blue paper, grid, dashed strokes, typewriter font | ★ |
| Unknown Pleasures | White lines on pure black | ★ |
| Graphite (dark) | Warm charcoal, raised cards, coral accent | ★ |
| Neon | Indigo night, magenta and cyan, glow, gradient bars | ★ |
| Terminal (Matrix) | Green phosphor screen, monospace font, scanlines | ★ |
| Infographic | Night slate, orange, pink, purple, cyan, pill bars | ★ |
| Cockpit (HUD) | Near-black fir green, mint, coral, amber, segmented bars | ★ |
| Hologram | Abyssal blue, electric cyan, translucent fills and glow | ★ |
Each style carries three palettes: one for series (bars, lines, categories), one for gradients (heat maps, Ridgeline, Map Plume) and one for deviations (growth, above or below target). It also sets the favorable and unfavorable colors of KPI cards, Waterfall and Gantt.
Each visual adapts the style to its shape: in Table Plume, Executive uses a filled header and banded rows, Newspaper a double rule and small caps, Terminal lowercase "> column" headers; in Bar Plume, Neon draws gradient bars, Black & White hatching, Bauhaus outlines; in Ridgeline Plume, Terminal draws glowing green crest lines.
A setting you changed by hand (for example the label color) always wins over the style. To get the style's color back, set that option back to its default value (reset the card in the Format pane).
2. Step out of the style: custom colors (free)
Turn on Style › Custom colors › Customize colors. Each box shows the current style's color: change only the ones you want, the others keep following the style.
| Color | What it changes |
|---|---|
| Background, Text, Secondary text, Lines and grid | The visual's background, titles and values, axes and notes, strokes |
| Accent | Selection, cursor, buttons, links, data bars |
| Favorable, Unfavorable | Positive and negative deviations (▲ ▼), Gantt statuses |
| Series 1 to Series 8 | Series and category colors, in order |
| Gradient palette | A gradient from the catalog: Viridis, Magma, Inferno, Cividis, Warming stripes, Spectral… (the Plume palettes are free) |
| Gradient: start, middle (diverging), end | Your own gradient, applied last: it replaces the ends of the chosen palette. With a middle color it becomes diverging: centered on zero when values go from negative to positive. Series colors do not change |
The slicers have one more color: Bar track.
To go back to the style, turn the switch off: the colors above are then ignored, except the Gradient palette (and, in Ridgeline Plume and Map Plume, colors 1 to 5 of the Custom palette), which stays applied. To remove it, pick Style or theme palette. A box set back to empty (reset) takes the style's color again.
Custom colors are free, even on a ★ style: only the ★ style then shows the "Premium preview" watermark.
3. Paste a JSON theme
A JSON theme describes your brand in a short text. Copy an example below, adapt it, then paste it into Style › Theme JSON ★. Every field is optional: only include what you want to change.
Easier: build your style guide in the brand kit. You pick colors, fonts and palettes, the real visuals update live, and the page writes the JSON for you.
The v2 format groups the settings and starts from a style with extends:
{
"name": "Acme brand",
"extends": "executive",
"colors": { "accent": "#C81D25", "positive": "#1E7A4F", "negative": "#C81D25" },
"palettes": {
"categorical": ["#0B3954", "#087E8B", "#BFD7EA", "#FF5A5F", "#C81D25"],
"sequential": "viridis",
"diverging": ["#0B3954", "#F2F2F2", "#C81D25"]
},
"typography": { "fontFamily": "Segoe UI", "numberFamily": "Bahnschrift", "headerCase": "upper", "letterSpacing": 0.06 },
"shape": { "radius": 4, "borderStyle": "solid", "shadow": "soft" },
"table": { "header": "filled", "headerBackground": "#0B3954", "headerColor": "#FFFFFF", "banding": true },
"marks": { "fill": "solid", "barRadius": 2, "lineWidth": 2, "curve": "smooth" },
"effects": { "glow": false, "texture": "none" }
}
| Group | Field | Values |
|---|---|---|
| — | extends (or style) | id of one of the 20 styles: none, minimal, blackWhite, press, vintage, earth, nordic, executive, accessible, pastel, bauhaus, climate, blueprint, unknownPleasures, dark, neon, terminal, infographic, cockpit, hologram |
colors | background, background2 | color, or null / "transparent" (transparent background); background also accepts "none": a visual with no background (see below) |
surface | KPI cards, headers, highlighted cells | |
foreground, muted, grid, stroke | text, secondary text, strokes, outlines | |
accent, accent2 | accent, second accent (glow) | |
positive, negative | favorable, unfavorable | |
palettes | categorical | 2 to 12 colors, or a palette id |
sequential | 2 to 12 colors, or an id (viridis, magma, inferno, cividis…; in Map Plume also sepia, hypso, parchment) | |
diverging | 3 to 12 colors (neutral middle), or an id | |
reverse | true / false: reverse the gradients (adds to the "Reverse gradients" switch: either one is enough) | |
typography | fontFamily, titleFamily, numberFamily | font of text, titles, numbers |
headerCase | none, upper, smallcaps, italic, prompt ("> column" headers) | |
headerWeight, letterSpacing | 100 to 900; 0 to 0.3 (em) | |
shape | radius | 0 to 24 |
border, borderWidth, borderStyle, borderColor | true/false; 0 to 4; solid, dashed, dotted, double; color | |
shadow | none, soft, hard (offset shadow), glow | |
table | header | plain, rule, thickRule, double, filled, pill, ticks, stripes |
headerBackground, headerColor | colors of the filled header | |
banding, rowLines, colLines | true/false; solid, dashed, dotted, none; true/false | |
marks | fill | solid, gradient, outlined, glass, hatch, halftone, segmented |
barRadius, lineWidth, curve, markers, outline | 0 to 99 (99 = pill); 0.5 to 6; linear, smooth, step; true/false; none, auto | |
effects | glow, glowColor, texture | true/false; color; none, paper, halftone, grid, scanlines, stripes |
Colors are written in hexadecimal: #B8462A (also #RGB and #RRGGBBAA, whose opacity is ignored). A value outside the list or the range is clamped to the nearest bound or ignored.
The former format (v1) is still accepted
{ "style": "nordic", "palette": ["#0b3954", "#087e8b", "#ff5a5f"], "accent": "#c81d25", "background": null, "radius": 0 }
Flat fields (accent, foreground, muted, grid, stroke, background, background2, fontFamily, radius, border) and palette (list of colors or id) still work.
Example: just your accent color
{ "colors": { "accent": "#0057B8" } }
Example: a custom dark mode, starting from Graphite
{
"extends": "dark",
"colors": { "background": "#0f172a", "surface": "#1e293b", "accent": "#38bdf8" },
"palettes": { "categorical": ["#38bdf8", "#f472b6", "#facc15", "#4ade80"] },
"effects": { "glow": true }
}
Example: a visual with no background, sitting on the page
{ "extends": "minimal", "noBackground": true }
"noBackground": true (or "background": "none", flat or inside colors) makes the visual fully transparent: no background, no card (surface), no border and no shadow. The visual sits directly on the page color or image. "background": null or "transparent" only removes the background and keeps the style's border and shadow.
Example: a map in hypsometric tints (Map Plume)
{ "extends": "nordic", "palettes": { "sequential": "hypso" } }
The same text works in every Plume visual: paste it into each of them to harmonize a whole page. Fields a visual does not use are simply ignored.
Which groups each visual uses
| Group | Visuals |
|---|---|
colors, typography, shape, effects | every visual; the theme's background, border, corner radius and shadow fill the Frame card while its settings are left at their default (a setting changed by hand wins) |
palettes.categorical | charts, KPI cards and tables (series, categories); no effect on the slicers |
palettes.sequential, palettes.diverging | visuals that draw a gradient or deviations (Ridgeline Plume, Map Plume, color scales of Table Plume and Matrix Plume…) |
table | Table Plume and Matrix Plume |
marks | charts (bars, lines, points, ridges, map); no effect on the slicers |
In the slicers (Bar Slicer, Basic Slicer, Filter Bar, Period, Range, Date Picker, Text Plume), the theme acts on background, foreground, muted, grid, accent, borderColor, glowColor, the fonts (fontFamily, titleFamily), headerCase, letterSpacing, the frame (radius, border, borderWidth, borderStyle, shadow), glow and texture. Palettes, surface, background2, stroke, accent2, positive, negative and numberFamily have no effect there (except the older palette given as a list of colors without accent, which sets the accent color). The theme's font, corner radius and frame only apply while the matching Format pane options are left at their default.
4. What wins?
Settings apply in this order; the last one wins:
- the visual's default values;
- the Style;
- the Theme JSON;
- the Gradient palette (when it is not Style or theme palette);
- Follow report theme;
- the Custom colors;
- settings you changed by hand in the other cards;
- formats driven by a DAX formula (fx button, "Dynamic format" field);
- Windows high contrast mode, always first for accessibility.
5. Troubleshooting
- "Invalid theme JSON: ignored" shows in edit mode: the text is not valid JSON. Check the straight quotes
"(not “ ”), the commas between fields and that there is no comma after the last field. The visual keeps its look meanwhile. - A color does not change: it may be set by hand in another card (it then wins), or written in an unsupported format (
red,rgb(…)): use#RRGGBB. - A palette chosen in an older report: it shows in Custom colors › Gradient palette, even with the switch off; pick Style or theme palette to go back to the style.
- The font does not change: it must be installed on every report reader's computer. Styles only use fonts shipped with Windows (Segoe UI, Bahnschrift, Consolas, Georgia, Times New Roman, Verdana, Arial); web fonts are never loaded (Microsoft certification rule).
Free or premium?
The None, Minimal and Black & White styles, Custom colors, the Plume palettes and Follow report theme are free. The other styles, the other gradient palettes and Theme JSON are premium features: without a license key they work with a "Premium preview" watermark. A key bought on the Pricing page removes it. A free style makes its own palettes free: Minimal's gray gradient does not trigger the watermark.