雷达图(Radar)

本章目标:把雷达图在 EasyChart 中“维度标签来源、数值范围如何计算、数据点顺序如何解释”的规则讲清楚,并对应到 Inspector 字段。


1. 适用场景

  • 多维指标对比
  • 能力/属性雷达

2. 最小可用配置(Checklist)

  1. ChartProfile.coordinateSystem = Polar2D
  2. Series
  3. - 添加 1 条 Serie - Serie.type = Radar - Serie.seriesData 建议至少 3 个点(少于等于 2 个维度运行时不会绘制/无法 hover)

  4. PolarAxes(推荐配置)
  5. - 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.Categorylabels[i]
  3. - 会优先匹配 Data.XAxisId 对应的 Category 轴

  4. seriesData[i].name
  5. 都没有时显示 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