Make it look professional.
Readers judge the care in a report before they read a number. These seven rules fix the details that cost trust.
Same colour, same meaning. Once a colour means something, it means that everywhere.
Both: presentations and dashboards
Readers link colours across visuals without being told to. If Production is purple in one chart and violet in the next, they have to learn a new key, or they assume the two colours mean two different things.
Power BI hands out its theme colours by position inside each visual. Sort two charts differently and the same department gets a different colour in each. Below, Admin Offices is light blue on the left, and that light blue becomes Executive Office on the right.
- Production is purple on the left and violet on the right.
- Two legends, each with a different key for the same six departments.
- Blue means Production on both visuals, and nothing else is blue.
- No legend needed: the reader learns the key once.
Red and green carry meaning before anyone reads a word: red is bad, green is good. Keep them for status, and check which direction is good. For turnover, lower is better. A gradient that runs from red (low) to green (high) paints the worst department green.
- The gradient says Production is doing best. It's doing worst.
- Every bar gets a status colour, so nothing stands out.
- Red marks the one department above the company rate.
- The dashed line shows what "above" is measured against.
In Power BI
- Set the palette once: View > Themes > Customize current theme > Name and colors. Every new visual starts from it.
- Pin a category to a colour: select the visual, open Format visual > Bars > Colors (Columns on a column chart), turn on Show all and set Production. Do the same on every visual that shows departments.
- Colour by a rule instead: click fx next to the colour, choose Format style: Field value, and pick a colour measure such as
Bar Colour. - If you use Format style: Gradient, set Lowest value to the good colour whenever lower is better.
Never rely on colour alone. Add a sign, an arrow or a label.
Both: presentations and dashboards
About 1 in 12 men has some form of colour vision deficiency, most often red-green. To them, a red/green status chart is two similar shades of olive. Give every status a second cue that survives without colour: a plus or minus sign, an arrow, or a word. Then pick a pair that stays apart for everyone: blue and orange.
Below, each department's turnover rate is compared with the company's 34%. Software Engineering and Admin Offices have only 10 people each, so their gaps rest on a handful of exits. Executive Office (one person) is left out.
- Good and bad are coded only by red and green.
- Light grey labels (#B3B0AD) reach 2.2:1 contrast on white. They fail.
- "6.00" of what? No unit.
- Orange is above the company rate, blue below, and the arrow and sign say it again.
- Labels in dark text with the unit: "+6 pts".
Here are the same two charts as a reader with red-green colour blindness (deuteranopia) sees them. The simulation uses the Machado colour-vision model.
Contrast. Text needs a contrast ratio of at least 4.5:1 against its background, or 3:1 for large text (18 pt, or 14 pt bold). Power BI's dark grey #605E5C reaches 6.5:1 on white. Pale greys that look elegant on your monitor often fall below 3:1.
In Power BI
- Measure the gap in points:
Gap vs Company = ( [Turnover Rate] - CALCULATE ( [Turnover Rate], REMOVEFILTERS ( Employees[Department] ) ) ) * 100 - Add the arrow and sign in the number itself: select the measure, then Measure tools > Format > Custom and enter
"▲ +"0" pts";"▼ −"0" pts";"0 pts". The three parts are positive, negative and zero. - Colour by sign: Format visual > Bars > Colors > fx, Format style: Rules. If value > 0,
#EB6834(orange). If value < 0,#2A78D6(blue). - Keep data labels at
#605E5Cor darker: Format visual > Data labels > Values > Color. - On line charts, give each series its own marker shape: Format visual > Markers > Shape, per series.
- Describe each visual for screen readers: Format visual > General > Alt text.
One font, few sizes. Left-aligned, in sentence case.
Both: presentations and dashboards
Every extra font, size or alignment is something the reader notices instead of the data. Segoe UI is Power BI's own font, built for screens and installed on every Windows machine, so it looks the same for every reader. A custom font can fall back to a substitute on someone else's computer.
Centred titles make the eye hunt for where each line starts. ALL CAPS and Title Case slow reading down. Sentence case reads like a sentence, which is what an action title is.
- Georgia, Arial Black, Trebuchet, Courier New, Verdana and Times New Roman on one page.
- Centred, capitalised titles that each start in a different place.
- Labels at 10 px next to bold 15 px values: the eye can't tell what matters.
- One family. Three sizes: page title, visual title, labels.
- Every title starts at the same left edge, in sentence case.
A type scale that covers almost every page:
| Role | Font | Size |
|---|---|---|
| Page title | Segoe UI Semibold | 20-24 pt |
| Visual title | Segoe UI Semibold | 14 pt |
| Subtitle, labels, axes | Segoe UI, grey | 10-11 pt |
| Card number | Segoe UI Semibold | 28-36 pt |
| Source and date footer | Segoe UI, grey | 10 pt |
Nothing goes below 10 pt. If a label doesn't fit at 10 pt, shorten the label or give the visual more room.
In Power BI
- Set the fonts once for the whole report: View > Themes > Customize current theme > Text. Set General to Segoe UI and Title to Segoe UI Semibold.
- For each visual title: Format visual > General > Title. Font Segoe UI Semibold, size 14, Horizontal alignment: Left.
- Type titles in sentence case. Power BI has no setting that does it for you.
- Copy a finished visual's formatting to the others with Home > Format painter.
Skip gauges, 3D and radial charts. They look busy and hide the comparison.
Both: presentations and dashboards
A gauge spends a whole visual on one number. The arc asks the reader to judge an angle, while the two things that matter, the value and the gap to target, sit in small text. The IBCS standards single out speedometer gauges as one of the least useful visuals. A card with a bullet bar shows the same number and the gap in less space.
The HR data has no turnover target, so the 25% below is an example, labelled as one.
- The maximum, 67.77%, is just double the value: Power BI's default.
- Is 33.89% good? The reader has to work out the gap alone.
- The number, the gap and the target, read in one glance.
- A straight bar is judged by length, which people read accurately.
Radial bar charts, available as AppSource visuals, bend bars into rings. An outer ring is longer than an inner ring at the same value, so length stops meaning size. Below, Admin Offices' outer ring at 20% is almost as long as Production's inner ring at 40%. 3D charts do the same harm with perspective: nearer bars look bigger. Power BI has no built-in 3D charts. Don't import one.
- Which ring is longest? The answer depends on where the ring sits.
- No values, six colours, and a legend to decode.
- All bars share one baseline, so length is a fair comparison.
- Sorted, labelled, and the title says what to see.
In Power BI
- Swap the gauge for a Card (new) with the turnover measure.
- Add the target: Format visual > Callout > Reference labels > Add, set the value to your target measure and the title to "Example target" (or the real target's name).
- For a bar with a target, use a Clustered bar chart. In the Analytics pane, add an X-axis constant line at the target, turn on its Data label and name it.
- Replace a radial or 3D chart with a clustered bar, then sort it: More options (…) > Sort axis > Turnover Rate, and Sort descending.
Slicers on the edge, never top left. The top left belongs to the answer.
Dashboard
Readers start at the top left. Put a slicer there and the first thing they see is a list of checkboxes, not the number that answers their question. Slicers dropped wherever there was space break the grid and make the reader hunt for the filters.
Group them in one place, a rail on the right or a thin band under the title, with plain-word headers, in the same spot on every page. A presentation page usually needs no slicers at all.
- The top left, the most-read spot on the page, holds a checkbox list.
- Three slicers in three places, with field names as headers.
- Cards top left, chart below, filters together on the right.
- Dropdowns with plain headers take a fraction of the space of checkbox lists.
In Power BI
- Make each slicer a dropdown: Format visual > Visual > Slicer settings > Options > Style: Dropdown.
- Rename the header in plain words: Format visual > Visual > Slicer header > Title text, for example "Performance rating".
- Stack them in the rail: select them all, then Format > Align > Align left and Distribute vertically.
- Apply them to every page: View > Sync slicers, and tick each page.
- Add a reset: Insert > Buttons > Clear all slicers.
Consulting page anatomy. Same parts, same spots, every page.
Presentation
Consulting firms such as McKinsey, BCG and Bain build every slide on the same frame: a tracker, an action title, a subtitle with units, the exhibit, a takeaway, and a footer with the source and date. Readers learn where to look once, then spend their attention on the content.
The footer answers the first question a careful reader asks: where is this from, and how current is it?
- No message, no units, no source, no date.
- The reader can't tell what to conclude or whether to trust it.
- Tracker: where this page sits in the deck.
- Action title: the finding, with a number and a comparison.
- Subtitle: what is measured, the unit and the period.
- Exhibit: one chart that proves the title.
- Takeaway: what to do about it.
- Footer: source, definitions and the as-of date.
In Power BI
- Build the frame on one page with Insert > Text box for the tracker, title, subtitle and footer.
- Fix their positions: Format > General > Properties > Size and Position, then use the same X and Y on every page.
- Make the as-of date update itself. In Home > Transform data, add a blank query named
Refresh:= #table(type table [Refreshed = datetime], {{DateTime.LocalNow()}}). - Add a measure
As Of = "Data as of " & FORMAT ( MAX ( Refresh[Refreshed] ), "d mmm yyyy" )and show it in the footer text box with + Value. - Duplicate the page for each new slide (right-click the page tab, Duplicate page) so the frame never drifts.
Story order across pages. Read only the titles, and they tell the story.
Presentation
Barbara Minto's Pyramid Principle puts the answer first, then the reasons, strongest first. You work out a finding from the bottom up, but you present it from the top down. In a report, each page title is one line of that argument.
Busy readers skim titles. If the titles alone carry the story, the report works even for someone who reads nothing else.
- Each title names a topic, so the five together say nothing.
- The answer waits on page 5, where many readers never get.
- Page 1 is the answer and the action.
- Pages 2-4 are the proof, then the next step.
| Page | Its job | In the example |
|---|---|---|
| 1 | The answer and what to do | Fix Production first |
| 2 | The strongest proof | 83 of the 102 leavers came from Production |
| 3 | The why | Every exit for unhappiness or more money was in Production |
| 4 | What else matters, briefly | IT/IS jumped in 2015 |
| 5 | Next steps, with an owner and a date where you can | Exit interviews, tracked monthly |
In Power BI
- Put the pages in story order: drag the page tabs at the bottom of the canvas.
- Keep every page title in the same text box position, so readers flipping pages see them in one place.
- Test the storyline: add a page, list every page title on it in order, and read the list aloud. If it doesn't sound like an argument, rewrite the titles. Then hide the page (right-click the tab, Hide page).
Name the rule before you open the answer.
Sales is green on page 1 of a report and orange on page 3. What's wrong, and how do you fix it?
Rule 16: the same thing has two colours, so readers assume two meanings. Pin Sales to one colour on every visual (Format visual > Colors > Show all), or better, grey everything except the department each page is about.
A KPI card turns red when turnover rises and green when it falls. What's missing?
Rule 17: a cue that works without colour. Add a sign and an arrow to the number with a custom format string such as "▲ +"0" pts";"▼ −"0" pts". If you keep a colour, make it blue or orange rather than red against green.
The page title is centred, in capitals, in Georgia. The visual titles use Arial. Which three changes fix it?
Rule 18: set the theme's fonts to Segoe UI (Customize current theme > Text), set each title's Horizontal alignment to Left, and retype the titles in sentence case.
A manager asks for a gauge showing turnover against target. What do you build instead?
Rule 19: a card with the turnover rate and a reference label for the target, or a bar with a constant line at the target. Both show the value and the gap in a straight line. If the target is made up for the example, label it "Example target".
A deck's page titles read: "Headcount", "Turnover", "Pay", "Conclusion". What's the problem?
Rule 22: they are topics, and the answer is last. Put the conclusion first as an action title, then give each proof page a title that states its finding, for example "Production pays $23.1 an hour, the lowest of any department".