# SmartVisuals Venn & UpSet for Power BI

> Area-proportional Venn/Euler for up to 3 sets and an UpSet matrix for 4 to 30, with % of base, set queries and cross-filtering. Weights and TURF in Premium.

- Page: https://www.smartvisuals.io/visuals/venn-upset
- Fields and settings: https://www.smartvisuals.io/visuals/venn-upset/settings
- Microsoft Marketplace: https://marketplace.microsoft.com/en-us/product/smartvisuals.smartvisuals-venn-upset?tab=overview
- Package: https://www.smartvisuals.io/downloads/smartvisuals-venn-upset-1.1.0.0.pbiviz
- Sample report (zipped .pbip): https://www.smartvisuals.io/samples/smartvisuals-venn-upset-sample-1.1.0.0.zip
- Price: Free tier for every viewer; premium $2.99 per user per month or $29 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.1.0.0
- GUID (visualType and publicCustomVisuals): `upsetVennE30F1ED6F31446988B04E836AFF14BEF`

## What is free

- **Area-proportional Venn/Euler**: Circle areas follow your data. Two sets are always exact; for three sets a badge says how close the areas are, labels show the true counts, and any region circles cannot draw is listed with its count.
- **UpSet matrix for up to 30 sets**: Intersection bars, set-size bars and the dot matrix, sorted by size or degree, filtered by minimum size and degree, on a linear or log scale. The view switches automatically from four sets.
- **% of base with "None of these"**: Counts and % of base, where the base includes everyone who picked "None of these", shown on the chart. Exclusive or inclusive counts, always labelled.
- **Four data shapes, no reshaping**: Long (ID + answer), delimited ("A;B;C" as Microsoft Forms exports), wide (one 0/1 or Yes/No field per set) or pre-aggregated (combination + count).
- **Set queries and cross-filtering**: Any of / all of / exactly / none of a chosen list, highlighted and counted. Click a region, bar or set to cross-filter the report; highlight, tooltips and report-page tooltips included.
- **Four themes, every element adjustable**: Four themes with their own personalities, a colour per set labelled with your real set names, and every label and element adjustable in the format pane.
- **Accessible in 20 languages**: Full keyboard navigation, screen-reader labels, high contrast and an Accessibility card for the focus outline and a minimum text size, in 20 languages. Accessibility is never behind the licence.

## What premium adds

- **Survey weights and effective base**: Weighted counts and % of base, with the Kish effective base printed next to N.
- **Confidence intervals and significance**: Wilson or Wald intervals on every share, plus deviation from independence, lift and phi with significance tests.
- **Duplication matrix**: % also, lift or Jaccard for every pair of sets, with significant attraction and repulsion marked.
- **TURF reach**: The best portfolio of 1 to 15 items, with incremental reach and frequency.
- **Compare waves or segments**: Small multiples or grouped bars with significance letters across waves or segments.
- **Value sizing**: Size overlaps by a value field, for example the revenue of customers who buy A and B.

## Fields

| Field | Internal name | Takes | Needed | What it is for |
| --- | --- | --- | --- | --- |
| ID (respondent, customer…) | `entity` | Column | Optional | One value per person or thing whose memberships you count: respondent ID, customer ID, user ID. Counts are distinct IDs. |
| Sets (answer, item) | `set` | Column | Optional | Long data: the answer or item on each row (one row per selection). A cell like "A;B;C" is split automatically. |
| Set flags (one per set) | `flags` | Measure | Optional, up to 30 | Wide data: one field per set; 1, TRUE, Yes or any non-blank text means member. Use First/Max for text columns. |
| Count (pre-aggregated) | `count` | Measure | Optional | Pre-aggregated data: how many IDs each row stands for. Use with a combination in Sets (e.g. "A;B"). |
| Weight | `weight` | Measure | Optional | Survey weight per ID (use Max or Average of the weight column). Premium: weighted counts and effective base. |
| Value | `value` | Measure | Optional | A value per ID, e.g. revenue. Premium: size and label overlaps by value. |
| Compare by | `group` | Column | Optional | Wave, segment or period. Premium: small multiples and significance letters across groups. |
| Tooltips | `tooltips` | Measure | Optional, up to 5 | Extra measures shown per combination in tooltips (sum or average). |

## 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`).

### View (`view`)

| Setting | Internal name | Type or options |
| --- | --- | --- |
| Chart | `mode` | `auto` (Auto (Venn for few sets, UpSet for more)), `venn` (Venn / Euler), `upset` (UpSet), `matrix` (Duplication matrix), `turf` (TURF reach) |
| Intersections | `counts` | `exclusive` (Exclusive (exactly these sets)), `inclusive` (Inclusive (at least these sets)) |
| Show | `show` | `both` (Count and % of base), `count` (Count), `percent` (% of base) |
| Size by | `sizeBy` | `count` (Count), `value` (Value field) |
| Show "none of these" | `showNone` | On / off |

### Venn / Euler (`venn`)

| Setting | Internal name | Type or options |
| --- | --- | --- |
| Layout | `layout` | `proportional` (Area-proportional (Euler)), `classic` (Classic (not to scale)) |
| Shapes | `shape` | `auto` (Auto (ellipses when circles cannot fit)), `circles` (Circles), `ellipses` (Ellipses (best fit)) |
| Venn up to | `maxSets` | `3` (3 sets), `4` (4 sets (not to scale)), `5` (5 sets (not to scale)) |
| Style | `style` | `auto` (From theme), `soft` (Soft), `solid` (Solid), `outline` (Outline), `glow` (Glow) |
| Region labels | `regionLabels` | `auto` (Auto), `count` (Count), `percent` (% of base), `both` (Count and %), `none` (Off) |
| Set labels | `setLabels` | `nameShare` (Name and %), `nameCount` (Name and count), `name` (Name), `none` (Off) |
| Fill opacity % | `fillOpacity` | Number |
| Outline width | `strokeWidth` | Number |
| Fit badge | `showFitBadge` | On / off |
| Focus region on hover | `hoverFocus` | On / off |
| Animate changes | `animate` | On / off |

### UpSet (`upset`)

| Setting | Internal name | Type or options |
| --- | --- | --- |
| Sort intersections | `sort` | `size` (By size), `degree` (By degree, then size), `degreeDesc` (Widest first), `sets` (By set order) |
| Set order | `setOrder` | `size` (By size), `data` (As in data), `name` (By name) |
| Max intersections | `maxIntersections` | Number |
| Min size | `minSize` | Number |
| Min degree | `minDegree` | Number |
| Max degree | `maxDegree` | Number |
| Hide empty | `hideEmpty` | On / off |
| Set-size bars | `showSetBars` | On / off |
| Value labels | `showValues` | On / off |
| Bar scale | `scale` | `linear` (Linear), `log` (Logarithmic) |
| Gridlines | `showGrid` | On / off |
| Bar color | `barColor` | Colour |
| Member dot color | `dotColor` | Colour |
| Non-member dot color | `emptyDotColor` | Colour |
| Dot size | `dotSize` | Number |
| Connector color | `connectorColor` | Colour |
| "None" bar color | `noneColor` | Colour |
| Gridline color | `gridColor` | Colour |
| Axis labels | `showAxis` | On / off |
| Axis label color | `axisColor` | Colour |
| Interval whisker color | `whiskerColor` | Colour |

### Legend (`legend`)

| Setting | Internal name | Type or options |
| --- | --- | --- |
| Legend | `show` | On / off |
| Position | `position` | `top` (Top), `bottom` (Bottom), `right` (Right), `left` (Left) |
| Title | `showTitle` | On / off |
| Title text (blank = the Sets field name) | `title` | Text |
| Values | `values` | `none` (None), `share` (% of base), `count` (Count) |
| Font size | `fontSize` | Number |
| Text color | `color` | Colour |

### Reference line (`refLine`)

| Setting | Internal name | Type or options |
| --- | --- | --- |
| Reference line | `show` | On / off |
| Value | `type` | `average` (Average of shown combinations), `median` (Median of shown combinations), `constant` (Constant) |
| Constant (count, or % when bars show shares) | `value` | Number |
| Line style | `style` | `dashed` (Dashed), `dotted` (Dotted), `solid` (Solid) |
| Line color | `color` | Colour |
| Label | `showLabel` | On / off |

### Annotations (`annotations`)

| Setting | Internal name | Type or options |
| --- | --- | --- |
| Annotations | `show` | On / off |
| Note 1: sets (joined by &) | `target1` | Text |
| Note 1: text | `text1` | Text |
| Note 2: sets (joined by &) | `target2` | Text |
| Note 2: text | `text2` | Text |
| Note 3: sets (joined by &) | `target3` | Text |
| Note 3: text | `text3` | Text |
| Note color | `color` | Colour |

### Set colors (`sets`)

| Setting | Internal name | Type or options |
| --- | --- | --- |
| Colors by rule (fx) | `fx` | Colour |
| color 1 | `color0` | Colour |
| color 2 | `color1` | Colour |
| color 3 | `color2` | Colour |
| color 4 | `color3` | Colour |
| color 5 | `color4` | Colour |
| color 6 | `color5` | Colour |
| color 7 | `color6` | Colour |
| color 8 | `color7` | Colour |
| color 9 | `color8` | Colour |
| color 10 | `color9` | Colour |
| color 11 | `color10` | Colour |
| color 12 | `color11` | Colour |
| color 13 | `color12` | Colour |
| color 14 | `color13` | Colour |
| color 15 | `color14` | Colour |
| color 16 | `color15` | Colour |
| color 17 | `color16` | Colour |
| color 18 | `color17` | Colour |
| color 19 | `color18` | Colour |
| color 20 | `color19` | Colour |
| color 21 | `color20` | Colour |
| color 22 | `color21` | Colour |
| color 23 | `color22` | Colour |
| color 24 | `color23` | Colour |
| color 25 | `color24` | Colour |
| color 26 | `color25` | Colour |
| color 27 | `color26` | Colour |
| color 28 | `color27` | Colour |
| color 29 | `color28` | Colour |
| color 30 | `color29` | Colour |
| Names | `names` | Text |

### Sets shown (`setFilter`)

| Setting | Internal name | Type or options |
| --- | --- | --- |
| Max sets (largest first) | `maxSets` | Number |
| show 1 | `show0` | On / off |
| show 2 | `show1` | On / off |
| show 3 | `show2` | On / off |
| show 4 | `show3` | On / off |
| show 5 | `show4` | On / off |
| show 6 | `show5` | On / off |
| show 7 | `show6` | On / off |
| show 8 | `show7` | On / off |
| show 9 | `show8` | On / off |
| show 10 | `show9` | On / off |
| show 11 | `show10` | On / off |
| show 12 | `show11` | On / off |
| show 13 | `show12` | On / off |
| show 14 | `show13` | On / off |
| show 15 | `show14` | On / off |
| show 16 | `show15` | On / off |
| show 17 | `show16` | On / off |
| show 18 | `show17` | On / off |
| show 19 | `show18` | On / off |
| show 20 | `show19` | On / off |
| show 21 | `show20` | On / off |
| show 22 | `show21` | On / off |
| show 23 | `show22` | On / off |
| show 24 | `show23` | On / off |
| show 25 | `show24` | On / off |
| show 26 | `show25` | On / off |
| show 27 | `show26` | On / off |
| show 28 | `show27` | On / off |
| show 29 | `show28` | On / off |
| show 30 | `show29` | On / off |

### Set query (`query`)

| Setting | Internal name | Type or options |
| --- | --- | --- |
| Query | `enabled` | On / off |
| Match | `mode` | `any` (Any of), `all` (All of), `exactly` (Exactly), `none` (None of) |
| Highlight color | `color` | Colour |
| include 1 | `include0` | On / off |
| include 2 | `include1` | On / off |
| include 3 | `include2` | On / off |
| include 4 | `include3` | On / off |
| include 5 | `include4` | On / off |
| include 6 | `include5` | On / off |
| include 7 | `include6` | On / off |
| include 8 | `include7` | On / off |
| include 9 | `include8` | On / off |
| include 10 | `include9` | On / off |
| include 11 | `include10` | On / off |
| include 12 | `include11` | On / off |
| include 13 | `include12` | On / off |
| include 14 | `include13` | On / off |
| include 15 | `include14` | On / off |
| include 16 | `include15` | On / off |
| include 17 | `include16` | On / off |
| include 18 | `include17` | On / off |
| include 19 | `include18` | On / off |
| include 20 | `include19` | On / off |
| include 21 | `include20` | On / off |
| include 22 | `include21` | On / off |
| include 23 | `include22` | On / off |
| include 24 | `include23` | On / off |
| include 25 | `include24` | On / off |
| include 26 | `include25` | On / off |
| include 27 | `include26` | On / off |
| include 28 | `include27` | On / off |
| include 29 | `include28` | On / off |
| include 30 | `include29` | On / off |

### Data (`data`)

| Setting | Internal name | Type or options |
| --- | --- | --- |
| Split answers on | `delimiter` | `auto` (Auto (; or \|)), `semicolon` (Semicolon ;), `comma` (Comma ,), `pipe` (Pipe \|), `none` (Do not split) |
| "None" answers | `noneAnswers` | Text |
| Value per ID | `valuePerId` | `sum` (Sum of rows), `max` (Largest row (ID attribute)) |
| Tooltip measures | `tooltipAgg` | `sum` (Sum per combination), `average` (Average per combination) |

### Overlap intelligence (`stats`)

| Setting | Internal name | Type or options |
| --- | --- | --- |
| Apply weights | `useWeights` | On / off |
| Effective base | `showEffectiveBase` | On / off |
| Confidence intervals | `showCI` | On / off |
| Confidence level | `confidence` | `95` (95%), `90` (90%), `99` (99%) |
| Interval method | `ciMethod` | `wilson` (Wilson score), `wald` (Wald (normal)) |
| Deviation from independence | `showDeviation` | On / off |
| Min base for tests | `minBase` | Number |
| Bonferroni correction | `bonferroni` | On / off |
| Above expectation color | `overColor` | Colour |
| Below expectation color | `underColor` | Colour |

### Compare groups (`compare`)

| Setting | Internal name | Type or options |
| --- | --- | --- |
| Layout | `layout` | `auto` (Auto), `multiples` (Small multiples), `grouped` (Grouped bars (UpSet)) |
| Significance letters | `showLetters` | On / off |
| Max panels | `maxPanels` | Number |
| groupColor 1 | `groupColor0` | Colour |
| groupColor 2 | `groupColor1` | Colour |
| groupColor 3 | `groupColor2` | Colour |
| groupColor 4 | `groupColor3` | Colour |
| groupColor 5 | `groupColor4` | Colour |
| groupColor 6 | `groupColor5` | Colour |
| groupColor 7 | `groupColor6` | Colour |
| groupColor 8 | `groupColor7` | Colour |
| groupColor 9 | `groupColor8` | Colour |
| groupColor 10 | `groupColor9` | Colour |
| groupColor 11 | `groupColor10` | Colour |
| groupColor 12 | `groupColor11` | Colour |
| groupColor 13 | `groupColor12` | Colour |
| groupColor 14 | `groupColor13` | Colour |
| groupColor 15 | `groupColor14` | Colour |
| groupColor 16 | `groupColor15` | Colour |
| groupColor 17 | `groupColor16` | Colour |
| groupColor 18 | `groupColor17` | Colour |
| groupColor 19 | `groupColor18` | Colour |
| groupColor 20 | `groupColor19` | Colour |
| groupColor 21 | `groupColor20` | Colour |
| groupColor 22 | `groupColor21` | Colour |
| groupColor 23 | `groupColor22` | Colour |
| groupColor 24 | `groupColor23` | Colour |
| groupColor 25 | `groupColor24` | Colour |
| groupColor 26 | `groupColor25` | Colour |
| groupColor 27 | `groupColor26` | Colour |
| groupColor 28 | `groupColor27` | Colour |
| groupColor 29 | `groupColor28` | Colour |
| groupColor 30 | `groupColor29` | Colour |
| Group names | `groupNames` | Text |

### TURF (`turf`)

| Setting | Internal name | Type or options |
| --- | --- | --- |
| Portfolio sizes up to | `maxK` | Number |
| forced 1 | `forced0` | On / off |
| forced 2 | `forced1` | On / off |
| forced 3 | `forced2` | On / off |
| forced 4 | `forced3` | On / off |
| forced 5 | `forced4` | On / off |
| forced 6 | `forced5` | On / off |
| forced 7 | `forced6` | On / off |
| forced 8 | `forced7` | On / off |
| forced 9 | `forced8` | On / off |
| forced 10 | `forced9` | On / off |
| forced 11 | `forced10` | On / off |
| forced 12 | `forced11` | On / off |
| forced 13 | `forced12` | On / off |
| forced 14 | `forced13` | On / off |
| forced 15 | `forced14` | On / off |
| forced 16 | `forced15` | On / off |
| forced 17 | `forced16` | On / off |
| forced 18 | `forced17` | On / off |
| forced 19 | `forced18` | On / off |
| forced 20 | `forced19` | On / off |
| forced 21 | `forced20` | On / off |
| forced 22 | `forced21` | On / off |
| forced 23 | `forced22` | On / off |
| forced 24 | `forced23` | On / off |
| forced 25 | `forced24` | On / off |
| forced 26 | `forced25` | On / off |
| forced 27 | `forced26` | On / off |
| forced 28 | `forced27` | On / off |
| forced 29 | `forced28` | On / off |
| forced 30 | `forced29` | On / off |

### Duplication matrix (`matrix`)

| Setting | Internal name | Type or options |
| --- | --- | --- |
| Cells show | `cell` | `alsoPct` (% of row set also in column set), `lift` (Lift), `jaccard` (Overlap (Jaccard)) |
| Significance marks | `showSig` | On / off |
| Cell color | `color` | Colour |

### Labels (`labels`)

| Setting | Internal name | Type or options |
| --- | --- | --- |
| Font | `font` | `inter` (Inter), `segoe` (Segoe UI), `arial` (Arial), `georgia` (Georgia) |
| Font size | `fontSize` | Number |
| Font color | `color` | Colour |
| % decimals | `percentDecimals` | Number |

### Notes (`notes`)

| Setting | Internal name | Type or options |
| --- | --- | --- |
| Base note | `showBase` | On / off |
| Base label | `baseLabel` | Text |
| Fit note | `showFitNote` | On / off |
| Data warnings | `showWarnings` | On / off |
| Titles and captions | `showCaptions` | On / off |
| Notes color | `color` | Colour |
| Notes font size | `fontSize` | Number |
| Badge and chip color | `badgeColor` | Colour |
| Badge and chip text color | `badgeTextColor` | Colour |

### Theme (`theme`)

| Setting | Internal name | Type or options |
| --- | --- | --- |
| Theme | `selectedTheme` | `smartvisuals` (SmartVisuals), `dark` (Dark), `clean` (Clean (White)), `slate` (Slate) |
| Transparent background | `transparentBg` | On / off |
| Use report theme colors | `useReportTheme` | On / off |

### Accessibility (`accessibility`)

| Setting | Internal name | Type or options |
| --- | --- | --- |
| Focus outline color | `focusColor` | Colour |
| Focus outline width | `focusWidth` | Number |
| Minimum text size (0 = off) | `minFontSize` | Number |
