散点图(Scatter)

本章目标:把散点图在 EasyChart 的“数据字段约定”说清楚,尤其是 SeriesData.y/value 的兼容逻辑,以及 z 维度如何驱动 sizeMapping


1. 适用场景

  • 相关性分析(X/Y 两个数值维度)
  • 分布展示(点云)
  • 异常点识别(离群点)

2. 最小可用配置(Checklist)

  1. ChartProfile.coordinateSystem = Cartesian2D
  2. - 常见:X=Value,Y=Value

  3. Series
  4. - 添加 1 条 Serie - Serie.type = Scatter - Serie.seriesData 至少 2 个点


3. Inspector 对应字段

  • series[i].type = Scatter
  • series[i].settings:实际类型为 ScatterSettings
  • - point:点样式(显示/大小/纹理) - hover:悬停高亮(enabled/pickRadius/scale 等,具体字段以版本为准) - sizeMapping:点大小映射


4. SeriesData 字段解释(按运行时代码)

散点图渲染时使用:

  • X 坐标SeriesData.x
  • Y 坐标:优先使用 SeriesData.y
  • - 兼容逻辑:如果 y == 0value != 0,运行时会把 value 当成 y 来用

  • 点大小映射维度SeriesData.z(当 sizeMapping.enabled=true 时)

因此你有两种常见写法:

4.1 推荐写法(显式 X/Y)

  • x = X 值
  • y = Y 值

4.2 兼容写法(旧数据:用 value 当 y)

  • x = X 值
  • value = Y 值
  • y = 0
建议:新数据直接写 y,这样不会跟“点的其他含义(value)”混在一起。

5. 标准模板:Value X + Value Y

  • X 轴:AxisType = Value
  • Y 轴:AxisType = Value
  • 数据:使用 4.1 的写法(x/y)

6. sizeMapping(点大小映射)的真实规则

ScatterSettings.sizeMapping.enabled = true 时:

  • 点半径会根据 SeriesData.z 映射得到
  • 映射范围:minValue/maxValueminSize/maxSize
  • clamp = true,会把超范围的 t 值夹到 0..1
  • curve 会对 t 做一次曲线变换(用于非线性映射)

如果你发现 sizeMapping “没效果”,优先检查:

  • 是否真的给了 z 值(默认 0)
  • minValue/maxValue 是否相等(相等会导致映射退化)

7. 常见坑与排错

  • 点全在一条水平线
  • - 你可能只填了 value,但又把 y 也写成了非 0(兼容逻辑不会触发) - 建议统一用 y 作为纵坐标

  • hover 没反应
  • - ScatterSettings.hover.enabled 必须开启 - pickRadius 太小也会导致很难拾取

  • 点太小/太大
  • - 调整 ScatterSettings.point.size - 或检查 sizeMapping 的 minSize/maxSize


8. 深入参考

  • 轴与范围、Series 与数据:00-WorkflowAndLibrary.md
  • 常用配方:05-CommonRecipes.md
  • FAQ:06-FAQ.md