Echarts Custom series
工作上一直都有在用 Echarts,但是基本上都是使用 Echarts 预设好的 series,例如 bar
、line
、pie
,然而最近因为工作需要,尝试使用了 custom
自定义图表,有必要记录一下。
renderItem
custom
series 大致设定上与其他 series 区别不大,详情可看配置项文档,最关键的设定就是 renderItem
,全靠它实现我们的自定义图像渲染逻辑。
renderItem
是一个函数,依据传入 series 的 data ,遍历并返回对应的渲染逻辑,它包含 params
和 api
这两个参数,需要当前数据属性和坐标系属性就从 params
中拿,需要获取当前数据维度值或将数据映射到坐标系中就从api
中拿对应的函数。
如官方配置项文档所说,api.coord
和 api.size
这两个函数很常用,前者传入数据得到对应映射到坐标系的坐标点,后者传入数据得到对应映射到坐标系的长度,当然还有 api.value
,可以通过这个拿到当前数据value
。
除了数据映射之外,我们还需要通过 echarts.graphic
中的函数生成要渲染的图形,例如想渲染矩形则使用 echarts.graphic.clipRectByRect
。
准备好上述内容之后,就可以设定 返回值
了,可以返回 rect
、line
等。
关于数据映射的理解
自己写的时候对文档中描述的数据映射的概念特别模糊,但后面想想其实很简单,示例代码如下:
1 | renderItem(params, api) { |
上述代码我将[0, 1]
作为参数传入 api.coord
中,分别得到 x 轴上第一个刻度的坐标点的横坐标值和 y 轴为第二个刻度的坐标点的纵坐标值。
需要留意的地方
- 把
0
作为参数传入api.coord
和api.size
,会返回 x 轴或 y 轴第一个刻度的数据信息,并不是原点。 - 把非整数作为参数传入
api.coord
和api.size
,参数会先进行取整,再进行换算,例如,0
和0.5
得到的结果是一样的。 api.value
的参数不能超过3
,无论当前 data 的 value 数组的长度是否超过3
。
series
Custom Series 大致设定与其他 Series 类似,但需特别注意 encode
的设定,这个设定非常重要,忽略这个设定可能会导致绘制的图片超出坐标系范围,造成图像的缺失。
encode
在 教程 中也有说明,实例代码如下:
1 | option = { |