Power BI report .pbip templates and patterns to create special visuals, address specific problems, and have adventures..
C#MIT
Power BI report visual templates and patterns. These templates are intended to help you solve specific visual requirements in your projects, or inspire you for your report design.
You can use them for free, but I'd appreciate that you please cite data-goblins.com if you do.
SVG measure templates in the .pbix and .pbip files are contributed by Štěpán Rešl. Thanks Štěpán!
Were these templates and patterns helpful to you?
I don't accept donations, have a patreon, or sell anything, but if you want to donate time helping me to prepare my tabletop roleplaying game campaign, that'd be great. So if you like worldbuilding or want to just have a 1 hour call with me to ideate about one of my tRPG sessions, that's payment enough for me 🎲.
⚠️ Notice
These templates are provided as-is without warranties or guarantees. They are not maintained nor are they all necessarily suitable for use in production solutions.
Feel free to use them, but do so at your own risk.
💡 To use these templates
Templates are provided either as Power BI Desktop (.pbix) or Power BI projects (.pbip) files. I recommend that you use the .pbip format.
How to clone a repository by using Git
To use these templates, I recommend that you clone (or copy) this Git repo to your local machine. If you're unfamiliar with Git, cloning allows you to ensure you have a syncronized local copy of the repository. You use a tool like VS Code to open the folder, check for changes, and sync to get the latest updates. To clone the Git repo:
Install Git. Typically, you want to use the 64-bit Git for Windows Setup.
Download a graphical user interface (GUI) to manage Git, like GitHub Desktop or VS Code. You can also manage it from the command line, but if you're new to Git, this isn't recommended. I recommend that you download and install VS Code, since it's used for other code authoring experiences in Power BI.
Create a GitHub account. Follow the steps to validate your account and set up multi-factor authentication.
Link your GitHub account to the GUI you downloaded. This differs depending on the tool you used. Generally, you should just follow the user interface's instructions; in VS Code you sign in via the Source Control tab or GitHub extension.
Clone the repository. In the GUI, you should select an option "clone repository". From here, you can enter the HTTPS URL. You can also initiate this from GitHub, itself, via the code button.
Open Power BI Desktop (~May 2023 version or later)
Open the 'File' menu
Navigate to Options and settings and then Options
Enable the preview feature _Power BI Project (.pbip) save option
Restart Power BI Desktop
Open the .pbip files in Power BI Desktop
I recommend the .pbip format for templates for the following reasons:
Lightweight sharing of report + model metadata.
Report metadata allows you to programmatically modify the templates before opening them.
Track changes of the individual objects and formatting in the GitHub repo.
Bar chart templates
You can download these templates either as standalone or combined files. Click the below image for the combined file:
Note: Any chart with a MacGuyver Rating of 3 or above (🟩🟩🟩⬜⬜+) is not recommended for production deployment. That's because they require too many report-specific objects and have too high a risk to break or effort to maintain. For these charts, you should use Deneb.
The following templates are available:
Image (Click for Template)
Name
Description
Bar chart (Horizontal bar)
The standard horizontal bar chart. Tried and true, best used to compare categories. Consider turning off axes and gridlines and using data labels with conditional formatting for a more elegant design.
Subjective Goblin graph scores 🟩🟩🟩🟩🟩 Popularity Rating - Frequency I see it requested 🟩🟩🟩🟩⬜ Utility Rating - # Different use-cases it covers ⬜⬜⬜⬜⬜ MacGuyver Rating - Effort to build, test, maintain
Column chart (Vertical bar)
The standard vertical bar chart. Harder to read compared to the horizontal version, often because the labels are truncated or angled. Consider using the Bar chart (Horizontal bar), instead.
A standard horizontal bar chart, except the ends are rounded. Honestly, I personally don't see the appeal, but there's a lot of people who do. There's a risk that the curves make it harder to compare lengths. It's mainly used for infographics for the shape.
The standard horizontal stacked bar chart. Can be useful because it can display both the part-of-whole and total labels, but like many part-of-whole visuals, can be difficult to read and interpret with too many categories.
A horizontal stacked bar chart showing the percent of the total for each row (category along the Y-axis). Can be useful because it can display both the part-of-whole and total labels, but like many part-of-whole visuals, can be difficult to read and interpret with too many categories.
This is a useful chart type to analyze survey and sentiment analysis, for example.
A horizontal bar chart that plots the difference between two values being compared instead of showing the absolute values. This chart type is useful when you want to focus on high magnitudes of difference, or when the difference matters more than the absolute values.
An alternative to the standard horizontal bar chart that has a dingle shape on the end, making it look like a lollipop. Honestly, I personally don't see the appeal, but it's especially popular if you have the data labels appear in the circle. The main use-case is if the shape of the chart needs to resemble something like a thermometer or something else.
A type of bar chart where two series are plotted, but one is inversed. Useful for pairwise comparisons mainly of the magnitude and distribution for the values, for example when comparing two categories like sex or this year vs. last year.
A bar chart where the end has a longer line to make it easier to compare between the categories. Honestly, I wouldn't recommend doing this in Power BI because it's not worth the effort to MacGuyver and maintain it for the return you get.
Bullet charts are great. I love them. They are excellent chart types for comparing to a target, or between two series. In my opinion, they are the most efficient chart type for this, other than perhaps a horizontal dumbbell / connected dot plot, which sadly is not possible in Power BI right now.
A horizontal bar chart that shows a percentage completion or achievement. Note that this specific template doesn't account for overachievement (values going over 100%), which is something you should consider in addition.
A version of the progress bar chart that breaks the progress into discrete chunks, like 10%, 20% or 25%. This can be good if those chunks have a functional meaning, like something happens at 75-100% that wouldn't happen at 50-75%.
A version of the progress bar chart that has the progress tracked as a triangle along a vertical axis. More subtle than the original and requires more MacGuyvering, as it's actually a scatterplot.
A version of the progress bar chart that has the progress tracked as a dot along a vertical axis; more subtle and less ink than the original. Mainly for visual appeal.
Comparing two series where they are directly overlaid and one series has thinner bars than the other. This can be a nice alternative to the bullet chart and more efficient with the real estate than side-by-side bars.
Two adjacent series to compare the absolute values. In this version, the series are designed to look more like a Tableau side-by-side chart, which is sub-optimal because it's not as flexible as the core visual from Power BI.
Side-by-side bars to compare two or more series. A nice, simple core visual to compare absolute values. Ensure that the minimum width is set that you can have the data labels showing.
Side-by-side bars where a candlestick shows the percentage difference. Honestly, this is a great chart type that's an alternative to connected dot plot or dumbbell charts, but in Power BI it's simply too much effort to MacGuyver with the core visuals. Just make a dumbbell / connected dot plot in Deneb or use a bullet chart; don't waste time with this.
You can download these templates either as standalone or combined files. Click the below image for the combined file:
The following line chart templates are available:
Image
Name
Description
Line chart
The standard line chart of Power BI. Useful for plotting trends, but needs specific handling of the axes and labels to be most usable and efficient. *Beware that the Y-axis won't start at 0 by default in Power BI. Additionally, be aware that Power BI will interpolate values such that it will connect data points over blanks, which can create false trends.
Subjective Goblin graph scores 🟩🟩🟩🟩🟩 Popularity Rating - Frequency I see it requested 🟩🟩🟩⬜⬜ Utility Rating - # Different use-cases that it covers ⬜⬜⬜⬜⬜ MacGuyver Rating - Effort to make it with core visuals
Area chart
The standard line chart, but with area fill beneath the line. The shaded area can help illustrate the magnitude of difference, and also improve trend readability when the chart is small.
The standard line or area chart with markers and labels. The markers should be subtle and small, and labels should be sufficiently configured to all be readable. Can sometimes provide too much context and reduce the time it takes users to read the graph.
The standard line chart but where the lines are smoothened instead of linear. While this can be aesthetically pleasing or interesting, it can create misleading trends, so be certain that you are not just using "smooth lines" for aesthetic reasons, alone.
Shows the connections as steps instead of linear or smoothened connections. Stepped line charts help emphasize that the data is not continuous, which can be helpful.
The standard line or area chart where the latest data point is labelled. You can use this same approach to label other points-of-interest, like earliest, highest, lowest, or other points (like yesterday, last week, etc.) This helps provide additional context to the user.
The standard line or area chart where conditional formatting is used to control axis ranges to give more room for labels to render and to ensure that the axis starts at 0. This is generally recommended for most time series data, unless the emphasis is on the change (like stock market data).
Highlighting a specific area-of-interest on the X-axis. This can be a period or a category, depending on how the chart is set up. Requires some MacGuyvering, but is relatively stable, and useful for drawing attention.
Adding error bands to the line chart to visualize data variance about a measure of central tendency like an average. Also useful for visualizing uncertainty, like for forecasting. These concepts can be advanced for many users and require data literacy training and tutorials.
Showing a specific target or threshold and shading or marking the area above (or below) it. Useful when there is a static target or when you want to compare to a global average.
Highlighting a vertical area of interest, like a threshold area instead of threshold line. Also useful when you want to highlight multiple areas, like temperature ranges for machines.
Comparing multiple series and highlighting the difference between them by using conditional formatting. Requires some MacGuyvering, but is quite stable. Note that the area fill cannot interpolate the area between data points, unlike the lines in the line chart.
Comparing multiple series where there are overlapping area fills between the lines. Can be useful circumstantially but can also pollute the canvas with additional ink that doesn't need to be there.
Parts-of-whole for trend analysis. Useful when you want to break up a trend to see how different parts contribute to a total. Need to be careful that it isn't mis-interpreted by users.
You can download these templates either as standalone or combined files. Click the below images for the combined file:
Core visuals - no SVG measures
These use the formatting options of the core visuals like cards, tables, etc. to achieve a KPI or callout-like effect.
The following templates are available:
Image
Name
Description
Basic Card
The standard card visual of Power BI. Typically, you should try to use conditional formatting and format strings to better give context to the number callout. However, there are cases where this context might not be required (particularly if calling out text).
Subjective Goblin graph scores 🟩🟩🟩🟩🟩 Popularity Rating - Frequency I see it requested 🟩🟩⬜⬜⬜ Utility Rating - # Different use-cases that it covers ⬜⬜⬜⬜⬜ MacGuyver Rating - Effort to make it with core visuals
Basic card II
The standard card visual, but using conditional formatting and format strings to better provide context. Implicit information from colours and symbols helps the user understand how they should interpret the number.
The standard card visual, but using dynamic format strings, typically also together with conditional formatting. This is similar to Basic card II. Note that dynamic format strings for measures don't work in all client tools, like Analyze in Excel's MDX queries.
The standard KPI visual from Power BI that lets you compare to one or more targets. This visual is best used when the 'trend' is ignored, replaced with a disconnected dimension like "All", for example. That's because the 'trend' is regularly misunderstood, leading to misleading trends and difficulties of report creators to implement this visual, properly. Some effort is required to set the (conditional) formatting properly.
The standard card, where it displays a single boolean value (Yes/No; True/False; ✔️/✖️). This can be a nice way to call out answers to simple, highly aggregate questions.
Making use of conditional DAX logic and conditional formatting of visual titles can provide a lot of flexibility to provide context. In many cases, the dynamic titles are in fact the KPIs, allowing any visual to become a de facto KPI card with a bit of MacGuyvering. However, this does result in a lot of DAX objects, as you typically need one or more measures for each dynamic (sub)title.
Similar to dynamic titles, dynamic subtitles simply allow you to provide an extra line of text. You should be wary that you don't over-use these, making your visuals busy and increasing the time it takes for a user to read and interpret the card. The example in the image is too busy to be an effective KPI card, for example.
Horizontal bar chart turned into a simple bullet chart by using error bars. Bullet charts are typically more effective than adjacent bar charts for target comparisons.
The standard doughnut chart, using dynamic (sub)titles to turn it into a KPI card. Doughnuts and pies are often dismissed without consideration, but can still be effective with 3 or fewer categories, depending on your use-case.
The standard gauge chart, using dynamic (sub)titles to turn it into a KPI card. Gauges are often dismissed as bad practice, but can still be an effective alternative to a bullet chart, depending on your use-case.
The table visual, using the 'Insert' tab to add a Sparkline. Note that sparklines can create heavier visual DAX queries in some reports, having a high performance cost. Furthermore, they can be misleading, as they don't share a Y-axis range, and can't have labels. A good alternative can be creating your own custom SVG sparkline microvisualization; however, this requires additional effort and complexity. Sparklines can be very valuable.
A bar chart for a (typically) non-continuous trend. Typically, this should also highlight a specific data point, like the latest month, or an anomolous value (highest/lowest). Consider using dynamic subtitles to provide effective context about the trend, but ensure that this isn't misleading. Define clearly what "trending down" or "up" means for users. You can also use this approach to show the magnitude difference between select TopN categories.
Standard line chart comparing 2-3 series. Ensure that you take means to make the comparison easy to read and interpret, so that it doesn't become less effective than a full line-chart with axis labeling.
The standard line or area chart, but using dynamic (sub)titles to turn it into a KPI. This can be a very effective way to call out a number, but still show the trend, beneath it. This is a very popular and effective approach. Consider using methods to label the latest data point, or whichever data point is being called out in the (sub)title.
Using DAX methods to dynamically repeat text, showing the value as the count of characters. This can be an effective alternative to show numbers that are typically low and you want to visually draw attention to in a unique way. An example could be "issues" or "bugs" when doing testing, or "critical incidents in the last 24h" in a service desk report. This isn't so popular, but it's worth considering.
Using DAX approaches to create a star rating with unicode characters. This is best done when you have literal ratings, like from customers for products or stores. The DAX can be complex, but it's a pattern that's easy to re-use.
Using line breaks and unicode characters to dynamically display a waffle chart out of text characters. This goes a bit beyond what is tolerable in a production solution, but can be a creative alternative to other waffle chart approaches. Consider using a waffle chart like this when you want to visualize progress or achievement, but not where overachievement is possible.
These use a combination of formatting options as well as SVG custom microvisualizations rendered as image URLs in the core visuals.
These SVG measure templates were created by Štěpán Rešl.
Remark
I don't consider myself a "dataviz person"; these comments are my subjective opinions and experience. I'm just sharing these templates because they might be helpful to others.