vijaykoju/spcControlChart
GitHub: vijaykoju/spcControlChart
Power BI SPC控制图,用于可视化统计过程控制。
Stars: 0 | Forks: 0
# SPC 控制图 — Power BI 自定义视觉
Power BI 的多系列 **统计过程控制** 图表。绑定一个 *轴(日期或类别)* 和一个 *测量值*(对于某些图表类型,还需要几个额外的字段)并视觉将内部计算一切 — **无需 DAX**。在格式面板中选择图表类型。
## 图表系列
通过 **格式 → 图表 → 图表类型** 选择(默认:个体,因此现有报告保持不变):
- **个体(X-mR)** — 带有 **移动范围伴随面板** 的个体图表;分阶段限制 + 自动变化点检测。
- **属性** — **p**(比例)、**np**(缺陷计数)、**c**(缺陷数)、**u**(每单位缺陷)。p/u 每点限制随样本大小变化。
- **子组** — **X̄-R**(均值 & 范围)和 **X̄-s**(均值 & 标准差),每个都有 **R/s 散布伴随面板**。
- **时间加权** — **EWMA**、**移动平均**(两者都有平滑变宽的限制包络和可选的淡色原始读数叠加),以及 **CUSUM**(双臂表格,决策区间 ±H)。
## 功能
- **Western Electric / Nelson 规则**,可单独切换,适用性按图表类型:个体和子组全部 8 个;属性图表上的 Beyond + 运行;EWMA/MA 上的 Beyond-only;CUSUM 使用其自己的双臂 ±H 信号(无 WE 规则)。
- 分阶段控制限制与 **变化点检测**(Welch-t 均值移动)或手动覆盖(个体)。
- 在有意义的区域着色(A/B/C),中心线,控制限制,违规标记。
- 散布 **伴随面板**(移动范围 / 范围 / 标准差)及其自己的限制 + 违规。
- 时间加权图表的 **图表参数**:EWMA λ、MA 窗口、CUSUM k/h、原始叠加颜色/不透明度/大小。
- 可配置所有图表类型的 **数据点大小、不透明度和标记形状**。
- 图表上的可滚动、可定位的 **规则参考面板**(列出启用的规则 + 平白语言的原因)。
- 原生工具提示(值/中心/UCL/LCL、阶段、触发规则)+ 一个 **工具提示度量**字段。
- 绑定 **目标**线(阶梯式;处理时间变化的指标 — 见 [docs/target-measures.md](docs/target-measures.md))和一个阶段变化指示器。
- 点击 **交叉筛选** + 右键菜单,**报告主题**颜色默认,**高对比度**支持。
- 可定位的 **图例**,可重命名条目。
- 意识到间隙的缺失值(空白行保留为插槽;线条断裂,散布不连接),以及当没有绑定字段时的空状态落地页面。
## 数据角色
- **轴**(日期或类别)和 **测量值** — 每个图表类型都需要。
- **样本大小** — 属性(p/np/u)和子组图表需要。
- **子组范围或标准差** — X̄-R / X̄-s 需要。
- **目标** 和 **工具提示** — 可选,任何图表类型。
## 开发
```
npm install
npm start # pbiviz start — dev server with hot reload
npm test # dependency-free unit suite (statistics, rules, changepoint, strategies, extraction)
npm run package # pbiviz package — builds the .pbiviz into dist/
```
## 结构
```
src/
├── spc/ # pure SPC logic (no d3/powerbi imports)
│ ├── chartType.ts # the ChartStrategy seam: build(raw, ctx) → { points, limits }
│ ├── strategies/ # one strategy per chart family (individuals, attribute, subgroup, timeWeighted)
│ ├── statistics.ts # limits, sigma, phases; constants.ts — A2/A3/D3/D4/B3/B4 by subgroup size
│ ├── rules.ts # Western Electric / Nelson rules
│ └── changepoint.ts # Welch-t mean-shift detection
├── extractData.ts # Power BI dataView → series
├── rendering/ # D3 chart + companion panel
├── settings.ts # format-pane model
└── visual.ts # IVisual entry point
test/ # committed unit tests (run via npm test)
docs/ # roadmap, rule reference, design notes, target-measure patterns, edge-case checklist, AppSource/cert checklist
```
添加一个图表系列 = 添加一个 `ChartStrategy`(一个 `build` 方法 + 规则/区域元数据)并注册它;渲染器和规则引擎消耗策略的 `LimitModel`,永远不会根据图表类型分支。
## 技术
TypeScript + D3.js v7,使用 Power BI Visuals SDK (`powerbi-visuals-tools`) 构建。API 5.11.0。
参见 [docs/ROADMAP.md](docs/ROADMAP.md) 了解图表系列路线图,以及
[docs/appsource-submission.md](docs/appsource-submission.md) 了解 AppSource 列表和
认证清单。
标签:CUSUM, DAX 代码, EWMA, Power BI, SPC 控制图, Western Electric/Nelson 规则, 代码示例, 图表设计, 子组控制图, 属性控制图, 工具提示, 数据分析, 数据展示, 数据点配置, 数据监控, 数据绑定, 时间加权控制图, 移动平均, 移动范围, 红队, 统计过程控制, 统计过程控制图表, 自动化攻击, 自动相位检测, 自定义视觉, 规则参考面板, 质量控制