Files
zhixing-system/.trellis/tasks/archive/2026-09/09-01-stock-chart-display/research/echarts.md
T
2026-09-01 13:38:45 +08:00

2.5 KiB
Raw Blame History

Apache ECharts 复合行情图研究

结论

本任务使用 echarts 本体并通过 echarts/core 按需注册,不引入 React 包装库。一个 ECharts 实例通过三个 grid、三组 category xAxis/value yAxis,以及分别绑定索引的 candlestick、bar、line series 组合日线、成交量和 KDJ。inside 与 slider 两个 dataZoom 同时控制三个 x 轴,使三个区域保持同一数据窗口。

前端组件在 DOM 挂载后调用 echarts.init 和 setOption,容器尺寸变化时调用 resize,卸载时调用 dispose。配置与数据转换应提取为纯函数,便于在 Vitest/jsdom 中验证 series、axis、数据顺序和初始缩放,而不依赖 Canvas 像素结果。

所需模块

  • charts:CandlestickChart、BarChart、LineChart
  • components:GridComponent、TooltipComponent、LegendComponent、DataZoomComponent
  • renderer:CanvasRenderer
  • 类型:使用 ECharts 提供的 ComposeOption 组合已注册组件的 option 类型

数据约定

  • K 线数据顺序为 [open, close, low, high]。
  • 日线、成交量、K、D、J 共用升序交易日 category 数据。
  • 后端最多返回 250 点;前端用 category 的 startValue 和 endValue 精确选择最后 120 个点,不足 120 点时展示全部。
  • 三组 series 通过 xAxisIndex/yAxisIndex 绑定各自 grid;两个 dataZoom 的 xAxisIndex 同时包含 [0, 1, 2]。
  • OHLC 不完整的日期使用 ECharts 缺失数据占位,不绘制蜡烛;volume/K/D/J 的空值保持空点,KDJ series 设置 connectNulls: false,禁止跨缺失日期连线。

资料来源

2026-09-01 通过 Context7 查询官方 Apache ECharts 文档 /apache/echarts-doc。相关官方资料包括:

  • en/tutorial/data-zoom.md:slider 与 inside dataZoom 组合,以及用 axis index 控制指定轴。
  • en/option/component/data-zoom.md:一个 dataZoom 同时控制多个轴。
  • slides/arch-brief/asset/ec-demo/list-sample1.html:candlestick、volume、多 grid、多 xAxis/yAxis 和 dataZoom 的金融图表示例。
  • en/tutorial/basic-concepts-overview.md:echarts.init、option、多个 axis/series 与 setOption 的基本实例生命周期。
  • zh/tutorial/whats-new-in-echarts-v5.md:按需引入时通过 ComposeOption 获得严格 TypeScript 类型。

本仓库约束

前端为 React 19、TypeScript strict、Vite 8;服务器状态应通过 TanStack Query 获取,API 走同源 /api/v1。图表属于 selection feature,不提升为 shared primitive。