🚀 A high-performance, fully dynamic Fishbone Analysis visual for Power BI, enabling deep root cause analysis with enterprise-grade scalability, interactivity, and modern UX.
The Fishbone Analysis visual helps users:
- Identify root causes of problems
- Categorize causes into structured groups
- Visualize relationships between causes dynamically
This visual is developed using:
- Power BI Custom Visuals API (v5.3.0)
- D3.js for rendering
- TypeScript for scalable logic
Automatically adjusts based on:
- Number of categories
- Number of sub-causes
Supports small to large datasets (up to 1000 rows)
- Hover → Tooltip display
- Click → Category selection
- Ctrl + Click → Multi-selection
- Right Click → Context menu
- Zoom & Pan support
- Double-click to reset zoom
Supports 3 levels of color logic:
- Manual category color mapping
- Power BI theme palette
- Fallback color palette
Optional:
- Global color override toggle
Full control from Power BI Format Pane:
| Setting | Description |
|---|---|
| Problem / Outcome Text | Fish head label |
| Show Title | Toggle visual title |
| Background Color | Visual background |
| Spine / Head / Tail Color | Structural design |
| Font Family, size, color | Category text styling |
| Category Text Styling | Separate customization |
| Bone Opacity | Transparency |
| Shadow Effect | Enable depth |
| Color Mapping | Manual category colors |
| Override Mode | Single color mode |
- No tooltip duplication
- Zoom reset animation on double-click
- Keyboard focus on interactive bones (
tabindex) - High contrast support
- No text overlap
| Field | Role |
|---|---|
| Main Cause | Category |
| Sub-Cause | Category |
| Field | Role |
|---|---|
| Tooltips | Measure |
Main Cause,Sub Cause
Manpower,Lack of Training
Manpower,Low Motivation
Machine,Frequent Breakdowns
Machine,Poor Maintenance
Material,Low Quality Input
Method,Inefficient WorkflowPower BI DataView
↓
parseData()
↓
Group by Category
↓
Create Bone Pairs
↓
Layout Engine
↓
D3 Rendering
↓
User Interaction Layer
- Categories grouped into pairs (top & bottom)
- Dynamic spacing calculated using:
- Category size
- Number of sub-causes
- Bone sizes scale gradually (taper effect)
fishbone-analysis-visual/
├── src/
│ ├── visual.ts # Core rendering engine
│ └── settings.ts # Format pane configuration
├── style/
│ └── visual.less # Styling and UX
├── assets/
│ ├── icon.png
│ ├── thumbnail.png
│ └── screenshots/ # README preview images
├── dist/ # Packaged .pbiviz (after npm run package)
├── capabilities.json
├── pbiviz.json
├── sample.pbix # Demo report
├── package.json
├── LICENSE
└── README.md
Note: According to latest development of this visual
pbiviz.jsonuses a placeholder visual GUID (FishboneAnalysisXXXXXXXXXXXXXXXXXXXX). Before distributing my own build (especially to AppSource),I will generate a unique GUID withpbiviz newor the Power BI visuals tools and updatepbiviz.json.
npm installpbiviz startnpm run buildnpm run packageOutput:
dist/FishboneAnalysisXXXXXXXXXXXXXXXXXXXX.1.0.0.0.pbiviz
Re-run npm run package after code changes to refresh the file in dist/.
- Import
.pbivizfile - Add visual to report
- Assign fields:
- Main Cause → Category
- Sub Cause → Category
- Tooltips → Optional
- Configure settings from Format Pane
- Problem/Outcome text is controlled via format pane, not dataset
- Supports 2-level hierarchy (Category → Sub-cause)
A sample Power BI report demonstrating the visual:
- Manufacturing defect analysis
- Root cause analysis in QA process
- Customer complaint categorization
- Supply chain issue breakdown
- Data-driven problem field
- Multi-level drilldown
- Animation transitions
- Export as image feature
- AppSource publishing
Sourav Das
Analyst — Data & AI
This project is licensed under the MIT License.
This project demonstrates:
- Advanced D3 integration in Power BI
- Dynamic visual rendering logic
- Real-world business use case
- Production-ready custom visual architecture


