# SmartVisuals Box Plot for Power BI

> Box and whisker plot for Power BI: quartiles that match DAX, four whisker rules, points, outliers and reference lines. Premium: significance tests.

- Page: https://www.smartvisuals.io/visuals/box-plot
- Fields and settings: https://www.smartvisuals.io/visuals/box-plot/settings
- Microsoft Marketplace: https://marketplace.microsoft.com/en-us/product/smartvisuals.smartvisuals-box-plot?tab=overview
- Package: https://www.smartvisuals.io/downloads/smartvisuals-box-plot-1.0.0.0.pbiviz
- Sample report (zipped .pbip): https://www.smartvisuals.io/samples/smartvisuals-box-plot-sample-1.0.0.0.zip
- Price: Free tier for every viewer; premium $1.99 per user per month or $19 per user per year on Microsoft Marketplace, with a 30-day free trial. Premium works in edit mode without a licence; unlicensed viewers see the free tier, never a blocked visual.
- Certified by Microsoft: no
- Version: 1.0.0.0
- GUID (visualType and publicCustomVisuals): `smartvisualsBoxPlot80F061480C540E2A73667BB882DCF681`

## What is free

- **Quartiles you can state**: Excel / DAX PERCENTILE.INC by default, plus the exclusive definition, Tukey's hinges and all nine Hyndman-Fan types. The footnote names the one in use.
- **Four whisker rules**: 1.5 x IQR (any multiple), percentiles, mean +/- SD, min to max. Outliers and far outliers get different markers.
- **Every observation**: A beeswarm, jitter or strip behind each box; hover a point for its ID, click to filter the report to it.
- **Reference lines**: Mean, median and up to four percentiles, for all data or per group, plus a typed reference line.
- **Split, sort and scale**: Split By a second field for side-by-side boxes; sort by median, mean, spread or n; hide small groups; horizontal or vertical; log scale.
- **Large data**: Put the value in Value (as column) with a Count measure and each distinct value arrives once.
- **Caption, themes and accessibility**: A smart caption, a methods footnote, n per group, four themes, keyboard navigation, high contrast, English and Czech.

## What premium adds

- **Significance between groups**: Welch t or Mann-Whitney U, Holm or Bonferroni, Welch's ANOVA, one-way ANOVA or Kruskal-Wallis, shown as brackets with stars or A / B / C letters.
- **Notches and confidence intervals**: Notched boxes for comparing medians and mean confidence intervals from the t distribution.
- **Weights**: Weighted quartiles, means and Welch tests with the Kish effective sample size.
- **Spec limits and capability**: Spec limits typed or from measures, with Cp, Cpk, Cpl, Cpu, Cpm, Pp and Ppk per group.
- **Small multiples**: One panel per value of a field, on a shared axis.

## Fields

| Field | Internal name | Takes | Needed | What it is for |
| --- | --- | --- | --- | --- |
| Group | `group` | Column | Optional | One distribution per group along the axis |
| Split By | `series` | Column | Optional | Side-by-side distributions within each group; two levels make a split violin |
| Sample / ID | `detail` | Column | Optional | The observation grain, e.g. Measurement ID - without it Power BI sums the values |
| Value | `value` | Measure | Optional | The observed value per Sample / ID |
| Value (as column) | `valueColumn` | Column | Optional | For large data: the value itself as a column, with Count as the measure |
| Count | `count` | Measure | Optional | How many observations have this value (with Value as column) |
| Weight | `weight` | Measure | Optional | Survey or sampling weight per observation (premium) |
| Small Multiples | `facet` | Column | Optional | One panel per value, shared axis (premium) |
| Tooltips | `tooltips` | Measure | Optional | Extra fields in point tooltips |
| Lower Spec Limit (LSL) | `lsl` | Measure | Optional | Lower spec limit per group, e.g. from a spec table (premium); replaces the typed LSL |
| Upper Spec Limit (USL) | `usl` | Measure | Optional | Upper spec limit per group, e.g. from a spec table (premium); replaces the typed USL |
| Spec Target | `target` | Measure | Optional | Target per group for Cpm and the target line (premium); replaces the typed target |

## Format pane

Each card is a key under `visual.objects` in a PBIR visual.json; each setting is a property of it. Toggles take `true`/`false`, choices and text a value in single quotes (`'auto'`), numbers a `D` suffix (`12D`).

### Layout (`layout`)

| Setting | Internal name | Type or options |
| --- | --- | --- |
| Orientation | `orientation` | `vertical` (Vertical), `horizontal` (Horizontal) |
| Sort Groups By | `sortGroups` | `data` (Data order), `name` (Name), `median` (Median), `mean` (Mean), `n` (Number of observations), `iqr` (Spread (IQR)) |
| Sort Direction | `sortDirection` | `asc` (Ascending), `desc` (Descending) |
| Hide Groups With Fewer Than | `minGroupSize` | Number |
| Space Between Groups (%) | `groupGap` | Number |

### Statistics (`stats`)

| Setting | Internal name | Type or options |
| --- | --- | --- |
| Quartile Method | `quartileMethod` | `linear` (Excel / DAX inclusive: PERCENTILE.INC (type 7)), `weibull` (Excel / DAX exclusive: PERCENTILE.EXC, Minitab, SPSS (type 6)), `tukey` (Tukey's hinges (R fivenum)), `median_unbiased` (Median-unbiased (type 8)), `hazen` (Midpoint, Hazen (type 5)), `normal_unbiased` (Normal-unbiased (type 9)), `interpolated_inverted_cdf` (Linear CDF (type 4)), `inverted_cdf` (Nearest rank, inverted CDF (type 1)), `averaged_inverted_cdf` (Averaged inverted CDF (type 2)), `closest_observation` (Closest observation (type 3)) |
| Whiskers | `whisker` | `tukey` (1.5 × IQR (Tukey)), `minmax` (Minimum to maximum), `percentile` (Percentiles), `sd` (Mean ± standard deviations) |
| IQR Multiple | `iqrK` | Number |
| Whisker Percentile | `percentile` | Number |
| Standard Deviations | `sdK` | Number |

### Box (`box`)

| Setting | Internal name | Type or options |
| --- | --- | --- |
| Show Box | `show` | On / off |
| Box Width (%) | `width` | Number |
| Box Style | `style` | `theme` (From theme), `tinted` (Tinted), `filled` (Filled), `outline` (Outline), `flat` (Flat) |
| Corner Radius (-1 = theme) | `cornerRadius` | Number |
| Whisker Caps | `whiskerCaps` | On / off |
| Show Mean | `showMean` | On / off |
| Mean Marker | `meanShape` | `diamond` (Diamond), `cross` (Cross), `circle` (Circle), `line` (Dashed line) |
| Mean Marker Color | `meanColor` | Colour |
| Show Outliers | `showOutliers` | On / off |
| Mark Far Outliers (3 × IQR) | `markFarOutliers` | On / off |
| Median Line | `medianColor` | Colour |
| Outlier Color | `outlierColor` | Colour |

### Points (`points`)

| Setting | Internal name | Type or options |
| --- | --- | --- |
| Show Points | `show` | On / off |
| Point Layout | `layout` | `swarm` (Beeswarm), `jitter` (Random jitter), `strip` (Strip (one line)) |
| Point Size | `size` | Number |
| Point Opacity (%) | `opacity` | Number |
| Point Color | `color` | Colour |

### Compare Groups (`compare`)

| Setting | Internal name | Type or options |
| --- | --- | --- |
| Test Differences | `show` | On / off |
| Test | `test` | `welch` (Welch t-test (means)), `mannwhitney` (Mann-Whitney U (ranks)) |
| Overall Test | `omnibus` | `welchAnova` (Welch's ANOVA), `anova` (One-way ANOVA), `kruskal` (Kruskal-Wallis) |
| Multiple Comparisons | `correction` | `holm` (Holm), `bonferroni` (Bonferroni), `none` (None) |
| Confidence | `level` | `90` (90 %), `95` (95 %), `99` (99 %) |
| Show As | `display` | `brackets` (Brackets with stars), `letters` (Letters (A, B, C)) |
| Pairs | `pairs` | `all` (All pairs), `first` (Each vs the first group), `adjacent` (Neighbours only) |
| Show Non-significant Pairs | `showNs` | On / off |

### Confidence Intervals (`ci`)

| Setting | Internal name | Type or options |
| --- | --- | --- |
| Mean ± Confidence Interval | `showMeanCI` | On / off |
| Notched Boxes (median CI) | `showNotch` | On / off |
| Confidence | `level` | `90` (90 %), `95` (95 %), `99` (99 %) |
| Interval Color | `color` | Colour |

### Spec Limits & Capability (`spec`)

| Setting | Internal name | Type or options |
| --- | --- | --- |
| Lower Spec Limit | `useLsl` | On / off |
| LSL | `lsl` | Number |
| Upper Spec Limit | `useUsl` | On / off |
| USL | `usl` | Number |
| Target | `useTarget` | On / off |
| Target Value | `target` | Number |
| Show Cp, Cpk, Cpl, Cpu, Cpm, Pp, Ppk | `showIndices` | On / off |
| Control Limits (±3σ within) | `showControl` | On / off |
| Limit Color | `color` | Colour |

### Statistic Lines (`statLines`)

| Setting | Internal name | Type or options |
| --- | --- | --- |
| Mean Line | `showMean` | On / off |
| Median Line | `showMedian` | On / off |
| Percentile Lines | `percentiles` | Text |
| Computed For | `scope` | `all` (All data in the panel), `group` (Each group) |
| Labels | `showLabels` | On / off |
| Color | `color` | Colour |

### Reference Line (`reference`)

| Setting | Internal name | Type or options |
| --- | --- | --- |
| Show Reference Line | `show` | On / off |
| Value | `value` | Number |
| Label | `label` | Text |
| Color | `color` | Colour |

### Value Axis (`valueAxis`)

| Setting | Internal name | Type or options |
| --- | --- | --- |
| Show | `show` | On / off |
| Fixed Minimum | `useMin` | On / off |
| Minimum | `min` | Number |
| Fixed Maximum | `useMax` | On / off |
| Maximum | `max` | Number |
| Logarithmic Scale | `log` | On / off |
| Gridlines | `gridlines` | On / off |
| Show Title | `showTitle` | On / off |
| Title | `title` | Text |
| Decimal Places (-1 = auto) | `decimals` | Number |
| Font Size | `fontSize` | Number |
| Text Color | `color` | Colour |

### Group Axis (`categoryAxis`)

| Setting | Internal name | Type or options |
| --- | --- | --- |
| Show | `show` | On / off |
| Show n per Group | `showN` | On / off |
| Font Size | `fontSize` | Number |
| Text Color | `color` | Colour |
| Show Title | `showTitle` | On / off |

### Data Labels (`labels`)

| Setting | Internal name | Type or options |
| --- | --- | --- |
| Median | `showMedian` | On / off |
| Quartiles | `showQuartiles` | On / off |
| Mean | `showMean` | On / off |
| Font Size | `fontSize` | Number |

### Colors (`colors`)

| Setting | Internal name | Type or options |
| --- | --- | --- |
| One Colour for All Groups | `single` | On / off |
| Colour | `fill` | Colour |

### Legend (`legend`)

| Setting | Internal name | Type or options |
| --- | --- | --- |
| Show | `show` | On / off |
| Position | `position` | `top` (Top), `bottom` (Bottom) |
| Font Size | `fontSize` | Number |
| Text Color | `color` | Colour |

### Smart Caption (`caption`)

| Setting | Internal name | Type or options |
| --- | --- | --- |
| Show | `show` | On / off |
| Position | `position` | `top` (Top), `bottom` (Bottom) |
| Font Size | `fontSize` | Number |
| Text Color | `color` | Colour |

### Footnote (`footnote`)

| Setting | Internal name | Type or options |
| --- | --- | --- |
| Show | `show` | On / off |
| Source | `source` | Text |
| State the Methods | `showMethod` | On / off |
| Font Size | `fontSize` | Number |
| Text Color | `color` | Colour |

### Theme (`theme`)

| Setting | Internal name | Type or options |
| --- | --- | --- |
| Theme | `selectedTheme` | `smartvisuals` (SmartVisuals), `dark` (Dark), `clean` (Clean (White)), `slate` (Slate) |
| Font | `font` | `inter` (Inter), `segoe` (Segoe UI), `arial` (Arial), `georgia` (Georgia) |
| Transparent Background | `transparentBg` | On / off |

### Group Colors (`groupColors`)

| Setting | Internal name | Type or options |
| --- | --- | --- |
| Colour | `fill` | Colour |
