如何快速查找相应的配置
当你想改某个位置,但又不知道这部位配置叫什么,可以优先查找术语手册,常用的组件说明都有,点击后即跳转配置文档相应位置;
当然,如果再手册上找不着,可以去示例页面查找类似的demo,然后根据其配置内容查找。
Examples - Apache ECharts - 官方示例
如果碰到那些骚里骚气的图表,官方示例找不到,可以试试下方链接。
常用配置简要
对于绘制大部分常用的统计图,其实只需要留意几个配置即可
- legend - 图例
- grid - 绘图网格
- xAxis 、yAxis、series - x 轴 y轴 和 数据系列集
- dataZoom - 缩放区域
grid 和 dataZoom 多数用于图表绘制的位置控制(另外是X和Y轴边缘线可以利用grid.border处理,就不需要特意掐准x轴和y轴的数值了)
xAxis 、yAxis、series 才是主要数据处理配置 ,三者配置相互作用。 xyAxis 有三种类型( type)
'value'
数值轴,适用于连续数据。'category'
类目轴,适用于离散的类目数据。为该类型时类目数据可自动从 series.data 或 dataset.source 中取,或者可通过 xAxis.data 设置类目数据。'time'
时间轴,适用于连续的时序数据,时间刻度会根据轴自动转换。虽然时间类型数据也可以用value和category 实现,但是如果时间换算的逻辑写得不好,会对后续的维护非常不友好,比如数据类型、数据范围的变化,基本都需要重新转换。 所以涉及会变动的时间,建议还是直接使用time类
'log'
对数轴。适用于对数数据。
关于交互事件
碰到需要做图表交互的需求,可以使用官方提供的API ,大部分描述都可以在文档中查阅, 这里就只简单讲讲自定义点击事件。
echarts 有提供了click 的鼠标点击事件, 但其只能作用域具体组件(比如线图的线,条状图的条形) ,如果没有数据时, 点什么也不会触发。
如果碰到硬性需求, 可以使用 getZr ,获取整个画布的原生点击事件 ,然后可以利用其原生event进行下一步操作,下方代码demo罗列了几个常用判断。
// 画布原生点击事件处理
myChart.getZr().on('click', (event) => {
// 获取根据点击的位置
const pointInPixel = [event.offsetX, event.offsetY];
// 没有 target 意味着鼠标/指针不在任何一个图形元素上,是点击空白处。
if (eventStop?.gridClick || !event.target) {}
// 判断是否在grid表格范围内
if (myChart.containPixel('grid', pointInPixel)) {}
// 获取到所点击的轴下标 dataIndex 数据类型[ int,int ] , 分别时x轴和y轴下标
//传入坐标到convertFromPixel 方法
let dataIndex = myChart.convertFromPixel({ seriesIndex: 0 }, pointInPixel);
});
关于插件
官方直接提供的echarts是基础图表工具 , 所以提供了扩展功能 ,比如词云、地图、特效等。