跳到主要内容

埋点统计

本节内容为使用标准范式图表组件库时的埋点场景应用案例。

大部分埋点统计可以通过 ECharts 提供的事件实现,这里列举一下特殊场景下的实现方案。

图表曝光

可利用 dv:afterinit 事件实现。

提示

dv:afterinit 事件触发时只是完成了图表实例的创建,等待第一次调用 chart.play() 触发 dv:afterupdate 事件时图表才会渲染出来,所以具体是使用 dv:afterinit 还是 dv:afterupdate 事件结合埋点需求进行选择。

点击出现十字光标(axisPointer)

可以利用 dv:click 事件监听画布的点击交互,并判断点击位置是否处于 Grid 组件内即可实现(因为点击交互默认会触发 axisPointer,而图表的绘制区域就是 Grid 区域)。

chart.on('dv:click', (event) => {
const inGrid = chart
.getECharts()
.containPixel({ gridIndex: 0 }, [event.offsetX, event.offsetY]);

console.log('dv:click', inGrid);
});
注意

请确保配置了 axisPointer 并可以正常展示,否则没有意义。

dataZoom 交互

对于 dataZoom 的交互可以简单分类为:

  • 改变最小范围值(左侧滑块)
  • 改变最大范围值(右侧滑块)
  • 不改变范围大小,但改变范围区间(滑动中间部分)

可以利用 echarts 的 dataZoom 事件实现。

chart.on('dv:afterinit', () => {
chart.getECharts().on('dataZoom', (event) => {
console.log('dataZoom', event);

// * 存在多个 dataZoom 组件时,可以利用 event.dataZoomId 进行区分,其与调用 chart.play() 时传递的 dataZoom.id 一致
event.dataZoomId;

// * 记录每次事件触发时的 event.start 与 event.end 值,将当前值与上一次值进行对比判断属于三类交互中的哪一类
});
});