π 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/.
π Download pre-built visual
- 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:
π Download sample .pbix file
- 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


