ECharts 事件处理
ECharts 提供了强大的 事件处理机制,可以响应用户的交互,支持 点击、鼠标悬停、数据项选择等操作,让图表更加动态和互动。
1. 事件类型
ECharts 支持多种常见的事件类型,主要包括:
- 点击事件 (
click
) - 鼠标悬停事件 (
mouseover
,mouseout
) - 数据项选择事件 (
select
,unselect
) - 图例切换事件 (
legendselectchanged
,legendselected
) - 区域缩放事件 (
datazoom
,brush
) - 滑动事件 (
mousemove
,mouseup
,mousedown
)
你可以通过监听这些事件并执行相应的操作。
2. 事件监听
ECharts 的事件监听采用了 on
方法,通常的语法如下:
chart.on('事件名', function (params) {
// 事件处理逻辑
});
chart.on()
:绑定事件事件名
:例如click
,mouseover
params
:事件的回调参数,包含了该事件的相关信息。
3. 事件处理示例
3.1 点击事件
当用户点击某个图表元素(如柱状图的某一柱、地图上的某个地区)时,触发 click
事件。
chart.on('click', function (params) {
console.log('点击事件', params);
alert('你点击了 ' + params.name + ',值为 ' + params.value);
});
📌 params
包含的信息:
params.name
:点击的项名称params.value
:点击的项的数值params.seriesType
:图表的类型(如'bar'
,'line'
)
3.2 鼠标悬停事件
当鼠标移到图表元素上时,触发 mouseover
事件。
chart.on('mouseover', function (params) {
console.log('鼠标悬停事件', params);
// 例如:高亮显示当前元素
chart.dispatchAction({
type: 'highlight',
seriesIndex: params.seriesIndex,
dataIndex: params.dataIndex
});
});
📌 params
还包括:
params.seriesIndex
:系列的索引(对于同类图表)params.dataIndex
:数据项的索引
3.3 数据项选择与取消选择
select
和 unselect
事件会在用户选择或取消选择图表中的数据项时触发,通常用于 数据项的高亮显示、筛选等。
chart.on('select', function (params) {
console.log('数据项被选择', params);
});
chart.on('unselect', function (params) {
console.log('数据项取消选择', params);
});
📌 params
包含:
params.selected
:返回数据项的选择状态
3.4 图例切换事件
当用户点击图例来隐藏或显示某个系列时,会触发 legendselectchanged
事件。
chart.on('legendselectchanged', function (params) {
console.log('图例切换事件', params);
// params.selected 是一个对象,表示每个系列的可见性
});
📌 params.selected
:
params.selected
是一个包含系列名称和对应选择状态的对象,true
表示该系列可见,false
表示不可见。
3.5 区域缩放事件
datazoom
用于数据区域的缩放。当用户使用鼠标拖动、滚动缩放图表时,会触发此事件。
chart.on('datazoom', function (params) {
console.log('数据区域缩放', params);
});
📌 params
包含的内容:
params.start
:缩放起始位置params.end
:缩放结束位置
3.6 区域选择事件(brush)
brush
事件可以用于 区域选择(如矩形选择区域),通常与 datazoom
联合使用。
chart.on('brush', function (params) {
console.log('区域选择事件', params);
});
📌 params
包含:
params.batch
:当前选择的区域批次
4. 事件触发与取消
除了绑定事件,ECharts 还提供了 手动触发事件 的功能,使用 dispatchAction
方法。
4.1 手动触发事件
chart.dispatchAction({
type: 'highlight', // 高亮
seriesIndex: 0, // 第一个系列
dataIndex: 0 // 第一个数据点
});
4.2 手动取消事件
chart.dispatchAction({
type: 'downplay', // 取消高亮
seriesIndex: 0,
dataIndex: 0
});
5. 事件绑定与解绑
可以使用 off
方法解绑事件监听,通常在图表销毁或切换数据时会使用。
5.1 解绑事件
chart.off('click', clickHandler); // 解绑点击事件
5.2 移除所有事件
chart.off(); // 移除所有绑定的事件
6. 事件响应参数
事件回调函数通常会接收到一个 params
对象,其中包含了有关事件发生的详细信息。
常见的 params
属性:
params.type
:事件类型params.componentType
:事件对应的组件类型(如series
,xAxis
)params.name
:数据项的名称params.value
:数据项的值params.dataIndex
:数据项的索引
7. 完整示例:综合事件处理
var chart = echarts.init(document.getElementById('main'));
var option = {
title: { text: 'ECharts 事件示例' },
tooltip: {},
legend: { data: ['销量'] },
xAxis: { data: ['周一', '周二', '周三', '周四', '周五', '周六', '周日'] },
yAxis: {},
series: [{
name: '销量',
type: 'bar',
data: [5, 20, 36, 10, 10, 20, 15]
}]
};
chart.setOption(option);
// 绑定点击事件
chart.on('click', function (params) {
alert('你点击了 ' + params.name + ',值为 ' + params.value);
});
// 绑定鼠标悬停事件
chart.on('mouseover', function (params) {
chart.dispatchAction({
type: 'highlight',
seriesIndex: params.seriesIndex,
dataIndex: params.dataIndex
});
});
8. 总结
ECharts 通过事件处理使得图表更加互动,常见的事件类型包括:
- 点击、鼠标悬停、选择、图例切换等。
- 可以使用
on()
方法绑定事件,使用dispatchAction()
手动触发事件。 - 事件响应参数 可以提供关于事件的详细信息,方便进行动态交互和更新图表。
🚀 你在 ECharts 图表中希望处理哪些具体事件?
发表回复