拼ui 一些业务逻辑x实现
This commit is contained in:
@@ -0,0 +1,110 @@
|
||||
# 雷达图(Radar)
|
||||
|
||||
本章目标:把雷达图在 EasyChart 中“维度标签来源、数值范围如何计算、数据点顺序如何解释”的规则讲清楚,并对应到 Inspector 字段。
|
||||
|
||||
---
|
||||
|
||||
## 1. 适用场景
|
||||
|
||||
- 多维指标对比
|
||||
- 能力/属性雷达
|
||||
|
||||
---
|
||||
|
||||
## 2. 最小可用配置(Checklist)
|
||||
|
||||
1. `ChartProfile.coordinateSystem = Polar2D`
|
||||
2. Series
|
||||
- 添加 1 条 `Serie`
|
||||
- `Serie.type = Radar`
|
||||
- `Serie.seriesData` 建议至少 3 个点(少于等于 2 个维度运行时不会绘制/无法 hover)
|
||||
3. PolarAxes(推荐配置)
|
||||
- `polarAxes.angleAxis.labels`:维度名
|
||||
- `polarAxes.radiusAxis`:数值范围(可自动/手动)
|
||||
|
||||
---
|
||||
|
||||
## 3. Inspector 对应字段
|
||||
|
||||
- **ChartProfile / Coordinate System**
|
||||
- `coordinateSystem = Polar2D`
|
||||
|
||||
- **PolarAxes(建议用这套来配 Radar 的轴)**
|
||||
- `polarAxes.angleAxis.labels`:维度标签
|
||||
- `polarAxes.radiusAxis.autoRangeMin/autoRangeMax/minValue/maxValue/autoRangeRounding/labelFormat/...`
|
||||
|
||||
- **Series**
|
||||
- `series[i].type = Radar`
|
||||
- `series[i].settings`:实际类型为 `RadarSettings`
|
||||
- `radar`:布局(startAngleDeg / clockwise / innerRadius / outerRadius / plot / background)
|
||||
- `stroke`:折线样式
|
||||
- `area`:面积填充
|
||||
- `point`:点样式(点显示也会影响 hover 拾取半径)
|
||||
- `series[i].labelSettings`:数据点标签(可显示维度名与数值)
|
||||
|
||||
---
|
||||
|
||||
## 4. SeriesData 字段解释(按运行时代码)
|
||||
|
||||
Radar 的关键点是:**维度顺序由 `seriesData` 列表索引决定**。
|
||||
|
||||
- **数值**:使用 `SeriesData.value`
|
||||
- **维度索引**:使用“点在 `seriesData` 里的位置 i”(0..dimensionCount-1)
|
||||
- `SeriesData.x` 在 Radar 渲染中 **不参与定位**(不要依赖 x 来表达维度)
|
||||
|
||||
维度数量(dimensionCount)来源:
|
||||
|
||||
1. 优先 `Data.PolarAxes.angleAxis.labels.Count`
|
||||
2. 如果没配 angleAxis.labels,则使用(优先)某个 Category Axis 的 labels(见第 5 节)
|
||||
3. 再不行就用 `seriesData.Count`(或多条 serie 取最大 count)
|
||||
|
||||
---
|
||||
|
||||
## 5. 维度标签(Dimension Label)的真实来源顺序
|
||||
|
||||
运行时维度名按以下优先级解析:
|
||||
|
||||
1. `polarAxes.angleAxis.labels[i]`
|
||||
2. `axes[]` 里某个 `AxisType.Category` 的 `labels[i]`
|
||||
- 会优先匹配 `Data.XAxisId` 对应的 Category 轴
|
||||
3. `seriesData[i].name`
|
||||
4. 都没有时显示 `Dim i`
|
||||
|
||||
> 建议:做 Radar 时直接用 `polarAxes.angleAxis.labels` 统一管理维度名;`SeriesData.name` 作为兜底。
|
||||
|
||||
---
|
||||
|
||||
## 6. 数值范围(Radius Axis)如何计算
|
||||
|
||||
Radar 的半径值域使用 `SeriesData.value` 计算:
|
||||
|
||||
- 默认会对所有 Radar serie 的 value 做自动范围(auto range)
|
||||
- 如果你配置了 `polarAxes.radiusAxis`:
|
||||
- `autoRangeMin/autoRangeMax` 会决定 min/max 是否自动
|
||||
- `minValue/maxValue` 在对应 autoRange 关闭时生效
|
||||
- `autoRangeRounding` 会对自动出来的 min/max 做“整十/整百/自定义单位”的取整
|
||||
- `labelFormat` 会影响 tooltip/标签的格式化
|
||||
|
||||
---
|
||||
|
||||
## 7. 常见坑与排错
|
||||
|
||||
- **看不到雷达图**
|
||||
- 检查 `coordinateSystem` 是否为 `Polar2D`
|
||||
- 维度数必须大于 2(labels 或 seriesData 至少 3)
|
||||
|
||||
- **维度对不上/顺序错乱**
|
||||
- Radar 不看 `x`,它按 `seriesData` 的列表顺序当维度顺序
|
||||
- 需要你在 `seriesData` 里按维度顺序放点
|
||||
|
||||
- **hover 很难触发**
|
||||
- Radar 的拾取半径和 `RadarSettings.point.size` 相关
|
||||
- 如果 `point.show=false`,拾取半径会变成 0(基本不可 hover)
|
||||
|
||||
---
|
||||
|
||||
## 8. 深入参考
|
||||
|
||||
- Series 与数据:`00-WorkflowAndLibrary.md`
|
||||
- 常用配方:`05-CommonRecipes.md`
|
||||
- FAQ:`06-FAQ.md`
|
||||
Reference in New Issue
Block a user