Supported Power BI features: small multiples · conditional formatting (fx) on bar colour · drilldown on a hierarchy in Detail · cross-filtering by the whole bar, Ctrl+click multi-select and highlighting · bookmarks (the selected bars are restored and shown) · standard and report page tooltips · context menu · keyboard navigation with ARIA labels · high contrast · number formats from the model · localization (English, Spanish) · IBCS mode · data streaming past 30,000 rows. Analysis: mean, median, quartiles and IQR, a benchmark line, value zones with the share of rows and of value in each, a cumulative frequency line, a normal curve and a statistics panel.
In Power BI Desktop, go to the Visualizations pane → click the three dots → Get more visuals → search for Histogram Pro.
Put the field that identifies one observation — Order ID, Customer, Ticket, Employee — in Detail (rows), and the
number to distribute — Sales, Days to close, Score — in Values. The visual counts one row per Detail value, so the
Detail field decides what "one" means: one order, one customer, one ticket.
The chart starts with 10 bins and the mean and median lines. Open the Format pane to add quartiles, IQR shading, a benchmark, value zones or the cumulative line, and (Pro) to change the bin count.
Drop a field such as Region or Year into Small multiples (Pro). You get one histogram per value, on the same
bins and the same vertical scale, so the panels can be compared bar by bar.
Each bar is a range of values (a bin) and its height is how many rows fall in it. All bins are the same width. Hover a bar for its range, its count, its share of all rows and — with the cumulative line on — the share of rows up to and including it.
The mean (dashed) and the median are drawn as vertical lines. The gap between them is the quickest read of skew there is: a mean well to the right of the median means a long upper tail — a few large values are pulling the average up.
P25 and P75 mark the first and third quartiles; the IQR shading covers the middle half of the rows between them. A narrow band means a consistent process; a wide one, a spread-out one.
When a few extreme values would stretch the axis until everything else sits in the first bar — the full range at least 1.5 times wider than where the data lives — the axis stops at Tukey's fences (Q1 − 1.5·IQR to Q3 + 1.5·IQR) and a note at the bottom says "Axis clipped to the long tail · the last bar holds everything above X". No row is dropped: values beyond the axis are counted in the end bar, and the mean, the median and σ are computed over every row.
Two cut points split the axis into three shaded zones — for example small, medium and large deals. Each zone is labelled with its share of rows and, optionally, its share of the total value. The two numbers together answer the concentration question directly: "> 50K: 8% of rows · 46% of value" means a few large deals carry almost half the revenue.
A line from 0% to 100% on its own right-hand axis: the share of rows at or below the end of each bin. Read across from 80% to find the value that 80% of rows stay under, without counting bars.
A vertical target line — a turnaround time, a tolerance, a policy limit. With Color bars by benchmark the bars on each side take their own colour, so "how much falls on the wrong side" reads at a glance. A bar is coloured by its midpoint.
A bell curve with the same mean and standard deviation as your data, scaled to the bars. It is a visual reference, not a normality test: read it as "clearly not normal" rather than "normal". With a long tail, σ is much wider than the axis and the bell is nearly flat over it; the chart then says "Normal curve flat: data far from normal" next to the curve.
n, mean (μ), median (M), standard deviation (σ), min and max in the top-right corner. When rows are trimmed, n says how many. The panel hides itself when the plot is narrower than about 260 px, so it never covers the bars.
Every panel shares the same bins and the same vertical scale, so a taller bar is really more rows. Mean, median, quartiles, zones and the statistics panel are computed per panel, over that panel's rows. Panels are sorted by the value of the Small multiples field (numbers and dates in order, text alphabetically), and the legend is drawn once for all panels.
| Field well | Accepts | What it does |
|---|---|---|
| Values | One numeric field | The number to distribute. Required. Its format string from the model (currency, percent, decimals) is used on the axis, the labels, the tooltip and the statistics panel. |
| Detail (rows) | One or more grouping fields | What one row is. The histogram counts one row per value of this field. With a hierarchy here, the drill-up / drill-down buttons in the visual header work as in any native chart. |
| Small multiples Pro | One grouping field | One histogram per value, on shared bins and a shared vertical scale. |
| Tooltips | Measures | Extra measures shown when you hover a bar, as the average over the rows in that bin. Report page tooltips are supported too. |
Every setting that needs a licence says (Pro) in the format pane. None is hidden.
| Setting | Default | What it does |
|---|---|---|
| Number of bins Pro | 10 | 2 to 100. Free uses 10. |
| Lower trim % / Upper trim % Pro | 0 | Leaves out that percentage of rows from each tail, before binning. Unlike the clipped axis, trimmed rows are excluded from the statistics, and the panel says how many. |
| Bar color Pro | Cyan | Has an fx button: colour bars by a rule or a field instead of one colour. |
| Bar opacity %, Border color, Border width, Bar gap px Pro | 80 · dark · 1 · 2 | Bar styling. |
| Setting | Default | What it does |
|---|---|---|
| Axis text color, Grid color | Grey | Axis labels and gridlines. |
| Font size | 10 | Axis labels. Fewer X labels are drawn on narrow plots so they never overlap. |
| Show X label / Show Y label | On | Axis titles. |
| Setting | Default | What it does |
|---|---|---|
| Show mean line, Show median line | On | Vertical reference lines, each with its own colour. |
| Show P25 line, Show P75 line | Off | First and third quartiles. |
| Show IQR range | Off | Shades the band between P25 and P75. |
| Label background, Label background opacity % | White · 75 | The box behind line labels and zone labels, so they stay readable over bars. |
| Normal curve Pro | Off | Bell curve with the data's mean and σ. |
| Cumulative frequency Pro | Off | 0–100% line on its own right axis. |
| Stats panel Pro | On | n, μ, M, σ, min, max. |
| Stats text color, Stats panel background, Stats panel opacity % Pro | Grey · black · 35 | Panel styling — set an opaque light background on a white report. |
| Setting | Default | What it does |
|---|---|---|
| Show value zones | Off | Turns the three zones on. Nothing is drawn until the two cuts differ. |
| First cut, Second cut | 0 | The boundaries, in the units of Values. Order does not matter. A value equal to a cut belongs to the lower zone. |
| Low / Middle / High zone color | Green · amber · red | Zone shading. |
| Show zone labels | On | Labels in front of the bars, shortened automatically when a zone is narrow. |
| Show share of total value | On | Adds "· N% of value" to each label. Turn it off for measures where a sum means nothing (scores, durations). |
| Setting | Default | What it does |
|---|---|---|
| Show benchmark line, Benchmark value, Line color, Benchmark label | Off · 0 · red · "Target" | A vertical target line with its label. |
| Color bars by benchmark, At or above / Below benchmark | Off | Colours each bar by which side of the line its midpoint falls. |
| Setting | Default | What it does |
|---|---|---|
| Show, Font size, Color | Off · 9 | The count above each bar — short bars included. |
| Show percent | Off | Adds the bar's share of all rows. |
| Setting | Default | What it does |
|---|---|---|
| Columns | 0 (automatic) | 0 picks a grid that fits the visual's shape; any other number fixes the columns. |
| Title font size, Title color | 12 · grey | Panel titles. |
| Setting | Default | What it does |
|---|---|---|
| Show legend | Off | Lists the active reference lines and curves: mean, median, quartiles, cumulative, normal and benchmark. |
| Position: bottom | Off | Moves the legend below the chart (below the grid with small multiples). |
| Mean / Median / P25 / P75 / Normal label | — | Rename the legend entries, e.g. "Average deal". |
| Font size, Font color | 9 · grey | Legend text. |
IBCS mode switches to the International Business Communication Standards notation: dark grey bars, solid black mean, dashed grey median, greyscale zones. It overrides the colour settings while it is on.
Filters the rest of the page to every row behind that bar, and the bar stays highlighted while the others dim. Click it again, or click empty space, to clear.
Adds bars to the selection (or takes one out). Within small multiples, Ctrl+click adds bars of the same panel; a click in another panel starts a new selection.
The selection is stored with the report, so a bookmark brings back both the filter and the highlighted bars. In Desktop, Ctrl+click a bookmark button to try it while editing.
With a hierarchy in Detail (rows), the visual uses Power BI's selection so drill-down on a bar works as in a native chart.
When another visual highlights a subset, the part of each bar that belongs to it is drawn solid over the dimmed total.
| What | Limit |
|---|---|
| Rows in the Service | Your whole table. Power BI hands a visual 30,000 rows at a time; the visual asks for the following segments and combines them. Verified at 500,000. |
| Rows in Desktop | The first 30,000 — Desktop cannot stream segments. The chart says so; publish to the Service for the full distribution. |
| Bins | 10 in Free, 2 to 100 in Pro. |
| One click | Up to 10,000 distinct values filtered at once. A bar holding more is not filtered partially: the visual says so, and more bins (Pro) put fewer rows in each bar. |
| Feature | Free | Pro |
|---|---|---|
| Histogram over your whole dataset, no watermark | ✓ | ✓ |
| Mean, median, P25, P75, IQR shading | ✓ | ✓ |
| Benchmark line and bar colouring by benchmark | ✓ | ✓ |
| Legend, axes, IBCS mode, high contrast, keyboard, cross-filtering, bookmarks | ✓ | ✓ |
| Number of bins | 10 | 2–100 |
| Outlier trimming | — | ✓ |
| Value zones with share of rows and value | — | ✓ |
| Small multiples | — | ✓ |
| Cumulative frequency line | — | ✓ |
| Normal curve, statistics panel, value labels | — | ✓ |
| Bar colour, fx rules, opacity, border, gap | — | ✓ |
Turn on a Pro feature while editing without a licence and it is drawn working, on your own data, under a "Pro preview" watermark that names it — together with Power BI's own notification and its link to the licence. In reading view, published reports and exports the free chart is shown, without watermark or prompt.
Put a numeric field in Values. The chart needs at least two rows, so also put the row identifier in Detail (rows).
So that you can see your data. A single extreme value would stretch the axis and squash every other row into the first bar, so the axis stops at Tukey's fences and the last bar holds everything beyond — a note on the chart says so. No row is dropped and the statistics use every row. To set the range yourself, use Lower / Upper trim % (Pro).
Start around 10–25 and move it until the shape stops changing character. Too few bins flatten two groups into one hump; too many turn a clear shape into noise. If the shape keeps changing, that instability is telling you something about the data.
They are Pro features. While you edit without a licence they are drawn under a "Pro preview" watermark; in reading view the free chart is shown. Settings marked (Pro) in the format pane are the ones that need the licence.
Both cuts start at 0, and zones are drawn only when the two cuts differ. Enter both in the units of your Values field — for revenue in euros, 10000 and 50000, not 10 and 50.
It is the correct curve for your data: with a long tail the standard deviation is far wider than the visible axis, so a bell with that mean and σ is almost flat over it — the chart says so next to the curve. It means the data is far from normal. To see the bell over the bulk of the data, trim 1–2% of each tail (Pro): the statistics are then computed without the tail.
The clipped axis is presentation only: every row is counted and the statistics are exact. Trimming (Pro) excludes the trimmed percentage of rows from the bars and from the statistics; the panel shows how many were left out. Use trimming to read ordinary behaviour, and say so on the page.
Check Format → Edit interactions — the other visuals must be set to filter. If the bar holds more than 10,000 distinct values the visual tells you and does not filter part of it; raise the bin count or filter the page first.
While editing, Power BI only applies a button on Ctrl+click. In reading view or the Service a normal click is enough.
Desktop cannot stream data segments to custom visuals, so it draws the first 30,000 rows and says so on the chart. The Service streams the rest; publish the report for the full distribution.
No. It makes no network calls; it only reads the fields you bind, and its settings are stored in the report. The licence is checked through Power BI's own licensing API. See the privacy policy.
Open an issue on GitHub — include the bin count, the value range and the row count, which is what makes a distribution bug reproducible. Questions and ideas are welcome in Discussions.
For bug reports, feature requests, and licensing questions:
support@tcviz.com
You can also open an issue on GitHub, ask in Discussions, read a worked example in the case study, or see what changed in the changelog.