拼ui 一些业务逻辑x实现
This commit is contained in:
@@ -0,0 +1,173 @@
|
||||
# FAQ(常见问题与最快排错路线)
|
||||
|
||||
本章目标:当你遇到“看不到/显示不对/交互怪”等问题时,能用最短路径定位原因。
|
||||
|
||||
---
|
||||
|
||||
## 0. 最快排错路线(30 秒版)
|
||||
|
||||
按顺序检查,通常能解决 80% 的问题:
|
||||
|
||||
1. **坐标系是否匹配 SeriesType**
|
||||
- Cartesian2D:Line/Bar/Scatter/Heatmap
|
||||
- Polar2D:Radar
|
||||
|
||||
2. **是否真的有数据**
|
||||
- `series.Count > 0`
|
||||
- 该 Serie `seriesData.Count > 0`
|
||||
|
||||
3. **轴类型是否匹配数据含义**
|
||||
- Category 轴:`labels` 非空;数据点 `x/y` 使用索引(0/1/2...)
|
||||
- Value 轴:`x/y` 为连续数值
|
||||
|
||||
4. **是否存在 NaN / Infinity**
|
||||
|
||||
5. **Value 轴范围是否把数据排除在外**
|
||||
- 检查是否固定了 min/max
|
||||
- 检查 `autoRangeMin/autoRangeMax` 是否关闭
|
||||
|
||||
---
|
||||
|
||||
## 1. 我点了预览但什么都没有
|
||||
|
||||
### 可能原因
|
||||
|
||||
- `seriesData` 为空
|
||||
- `Serie.visible = false`
|
||||
- 坐标系与 SerieType 不匹配(例如 Radar 放在 Cartesian2D)
|
||||
- 轴范围不包含数据(常见于 Value 轴被手动锁死)
|
||||
|
||||
### 你应该怎么做
|
||||
|
||||
1. 在 Inspector 找到 `series` -> 展开某个 Serie
|
||||
2. 检查:
|
||||
- `visible` 是否为 true
|
||||
- `seriesData` 是否有元素
|
||||
3. 检查坐标系:
|
||||
- Radar -> `coordinateSystem = Polar2D`
|
||||
- Line/Bar/Scatter/Heatmap -> `coordinateSystem = Cartesian2D`
|
||||
4. 如果是 Value 轴:
|
||||
- 先把范围相关的“固定 min/max”关闭
|
||||
- 让 `autoRangeMin/autoRangeMax` 都开,确认能显示后再逐步锁定
|
||||
|
||||
---
|
||||
|
||||
## 2. Category 轴有 labels,但点/柱子不在标签上
|
||||
|
||||
### 典型现象
|
||||
|
||||
- 柱子落在两个标签中间
|
||||
- 折线的点对不上 A/B/C
|
||||
|
||||
### 快速结论
|
||||
|
||||
- Category 轴下,`x`(或 `y`)通常应该是 **类目索引**(0/1/2/...),而不是“随便的数值”。
|
||||
|
||||
### 你应该怎么做
|
||||
|
||||
- 检查数据点:
|
||||
- `labels[0]` 对应 `x=0`
|
||||
- `labels[1]` 对应 `x=1`
|
||||
- 如果你做的是柱状图:
|
||||
- 把 `LabelPlacement` 调成 `CellCenter`
|
||||
|
||||
---
|
||||
|
||||
## 3. Value 轴范围很怪(特别大/特别小)
|
||||
|
||||
### 可能原因
|
||||
|
||||
- Value 轴被锁死范围(min/max)
|
||||
- 只锁了一端但另一端的数据非常极端
|
||||
- rounding/unit 把范围吸附到不合适的单位
|
||||
|
||||
### 你应该怎么做
|
||||
|
||||
1. 先把范围回退到“全自动”,确认能显示
|
||||
2. 再逐步加入你的业务约束:
|
||||
- 柱状图常用:`minValue=0` + `autoRangeMax=true`
|
||||
3. 如果你看到很多奇怪的小数刻度:
|
||||
- 优先设置 `labelFormat`
|
||||
|
||||
---
|
||||
|
||||
## 4. 线条断断续续/整体不渲染
|
||||
|
||||
### 最常见原因
|
||||
|
||||
- 数据中存在 NaN / Infinity
|
||||
|
||||
### 你应该怎么做
|
||||
|
||||
- 在数据源侧过滤:
|
||||
- `float.IsNaN(x/y/z)`
|
||||
- `float.IsInfinity(x/y/z)`
|
||||
|
||||
---
|
||||
|
||||
## 5. 柱状图和标签就是对不齐
|
||||
|
||||
### 快速结论
|
||||
|
||||
- 99% 是 `LabelPlacement` 没配对
|
||||
|
||||
### 你应该怎么做
|
||||
|
||||
- Bar:优先 `LabelPlacement = CellCenter`
|
||||
- Line/Scatter:优先 `LabelPlacement = Tick`
|
||||
|
||||
---
|
||||
|
||||
## 6. Heatmap 全部一个颜色 / 看起来没有层次
|
||||
|
||||
### 可能原因
|
||||
|
||||
- `autoRange=false` 但 `minValue/maxValue` 设置不合理
|
||||
- `clamp=false` + 极端值导致颜色被拉爆
|
||||
- 数据点 `value` 全部相同(或全是 0)
|
||||
|
||||
### 你应该怎么做
|
||||
|
||||
1. 开启 `autoRange`
|
||||
2. 检查数据点 `value` 是否有变化
|
||||
3. 如果你需要固定范围:
|
||||
- 合理设置 `minValue/maxValue`
|
||||
|
||||
---
|
||||
|
||||
## 7. Radar 标签缺失/混乱
|
||||
|
||||
### 常见原因
|
||||
|
||||
- 维度标签来源不统一
|
||||
|
||||
### 推荐做法
|
||||
|
||||
- 每个 Radar 点:
|
||||
- `x = 维度索引`
|
||||
- `value = 数值`
|
||||
- `name = 维度名`
|
||||
|
||||
并确保 Radar 不依赖 Cartesian 的轴配置来取标签。
|
||||
|
||||
---
|
||||
|
||||
## 8. tooltip/hover/选中“指错点”或状态不稳定
|
||||
|
||||
### 常见原因
|
||||
|
||||
- 每次刷新数据都产生新的点标识
|
||||
|
||||
### 你应该怎么做
|
||||
|
||||
- 保证每个点的 `SeriesData.id` 稳定
|
||||
- 避免每次刷新都清空再 `Guid.NewGuid()` 生成一套全新的点
|
||||
|
||||
---
|
||||
|
||||
## 9. 我不知道应该看哪一章
|
||||
|
||||
- 你在“创建/克隆/预览/导出”的流程阶段:看 `02-EditorWorkflow.md`
|
||||
- 你在“轴/范围/对齐/单位/格式”:看 `00-WorkflowAndLibrary.md` 的第 7 节
|
||||
- 你在“某种图的 data 写法/SeriesData.x/y/z”:看 `00-WorkflowAndLibrary.md` 的第 8 节
|
||||
- 你只想直接照抄模板:看 `05-CommonRecipes.md`
|
||||
Reference in New Issue
Block a user