Skip to content

babarda/report-themes

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

4 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

report-themes

Sixteen matching report themes for Power BI, Excel, matplotlib, plotly, Vega-Lite, and CSS. Pick a look, download one file per tool, and every chart, dashboard, and slide you ship shares the same colors and type.

AGRAW cost bridge KATA S-curve
LOGOS scatter with fit SHILPA heatmap
MIZAN balance readout SENTINEL control feed

Six of the sixteen themes, each doing its day job: a board-pack cost bridge, a progress S-curve, an analyst's scatter, a technical heatmap, a balance readout, and one control-room feed for the dark-mode crowd. Every panel is matplotlib loading the shipped .mplstyle, and every color is one of the theme's named roles.

Made for analysts, engineers, and project people who ship reports every week and would rather not design them from scratch.

Get a theme in 60 seconds

Power BI. View ribbon, Themes dropdown, Browse for themes, pick themes/powerbi/<name>.json. Data colors, text classes, axis and gridline styling land in one step.

Excel, PowerPoint, Word. Page Layout (Design in PowerPoint and Word), Themes, Browse for Themes, pick themes/excel/<name>.thmx. Theme colors, accent cycle, and heading/body fonts apply to the whole document. The raw themes/excel/<name>-theme.xml is also here if you prefer to swap xl/theme/theme1.xml inside a workbook directly.

matplotlib.

import matplotlib.pyplot as plt
plt.style.use("themes/matplotlib/agraw.mplstyle")

plotly.

import json
import plotly.graph_objects as go
import plotly.io as pio

with open("themes/plotly/agraw.json") as f:
    pio.templates["agraw"] = go.layout.Template(json.load(f))
pio.templates.default = "agraw"

Vega-Lite. The file is a config object. Embed it in a spec ("config": {...}) or pass it to vega-embed:

vegaEmbed(el, spec, { config: await (await fetch("themes/vega-lite/agraw.json")).json() });

CSS. themes/css/<name>.css defines --theme-* custom properties: every palette role, the categorical cycle as --theme-series-1..n, and both font stacks.

The sixteen themes

Theme Look Made for
AGRAW AGRAW board packs, steering committees
KATA KATA weekly status decks, progress dashboards
LOGOS LOGOS deep-dive analysis, monthly chartbooks
SHILPA SHILPA technical packs, procedures
OBEYA OBEYA stand-up boards, site wall prints
LEX LEX claims, mediation, correspondence
SAGA SAGA weekly digests, bulletins
SENTINEL SENTINEL live dashboards, control-room screens
ATLAS ATLAS route progress, site status maps
BASIRA BASIRA photo progress reports, drone updates
SUTRA SUTRA briefing notes, position papers
NOROSHI NOROSHI escalations, flash reports
MIZAN MIZAN cultural projects, personal-brand material
EVIDENTIA EVIDENTIA evidence-led strategy decks, diagnostic readouts
ABRID ABRID framework decks, portfolio reviews
TELOS TELOS results decks, due-diligence readouts

Each strip shows the categorical cycle first, then the neutrals (background, ink, body text, hairlines, gridlines).

NOROSHI KPI bullets ABRID slope EVIDENTIA dumbbell

Three more, same rule: NOROSHI flags two KPIs behind target, ABRID slopes rail past road, EVIDENTIA proves the cycle-time cut site by site.

What is inside a theme

Every color is a named role: primary, muted, benchmark, positive, negative, plus each theme's own accents. The categorical cycle keeps one order everywhere, so series 1 is the same color in Power BI, matplotlib, and plotly. A few austere themes (LEX, SAGA, LOGOS) reuse a color across roles on purpose; their cycles are shorter and their Office accent slots fill from the neutrals.

Each theme names a display font and a body font with installed fallbacks (Georgia, Arial, and friends). Office and Power BI fall back cleanly when the first-choice font is not installed.

Regenerate

Everything under themes/ and assets/strips/ is generated. Never edit those files by hand.

python generate.py          # rebuild all formats from tokens/
python generate.py --check  # CI gate: fails if outputs drift from tokens
python tools/verify.py      # parses every file with its real consumer
python tools/hero.py        # re-render the README hero images

Where the colors come from

Built on the Open Visualization Protocol: the sixteen themes are its sixteen design languages, and every color here is a role from its v1.0 token files (see tokens/SOURCE.md for the pin). Nothing in this repo invents a color; the generator only translates roles into each tool's format. If you want the full system behind the themes (74 chart specs, deterministic renderers, decision rules for which chart to use), start there.

MIT licensed.

About

16 matching report themes for Power BI, Excel, matplotlib, plotly, Vega-Lite, and CSS. Built on the Open Visualization Protocol.

Topics

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages