一、前言
在 ECharts 的图表中用户的操作将会触发相应的事件。开发者可以监听这些事件,然后通过回调函数做相应的处理,
比如跳转到一个地址,或者弹出对话框,或者做数据下钻等等。
下面一起来实现一下最常用的 click 事件 !!!
好文章 记得收藏+点赞+关注额 !!!---- Nick.Peng
二、简介
- 在 ECharts 中事件分为两种类型:
- 一种是用户鼠标操作点击,或者
hover
图表的图形时触发的事件; - 另一种是用户在使用可以交互的组件后触发的行为事件,例如在切换图例开关时触发的
legendselectchanged
事件(这里需要注意切换图例开关是不会触发legendselected
事件的),数据区域缩放时触发的datazoom
事件等等;
- 一种是用户鼠标操作点击,或者
- 常见的事件类型:
click
、dblclick
、mousedown
、mousemove
、mouseup
、mouseover
、mouseout
、globalout
、contextmenu
事件等;
三、Click事件实现步骤
- 具体步骤如下
<script> // 1. 基于准备好的dom,初始化ECharts实例 var myChart = echarts.init(document.getElementById('main')); // 2. 指定图表的配置项和数据 var option = { ...... }; // 3. 使用刚指定的配置项和数据显示图表。 myChart.setOption(option); // 4. 处理点击事件并且跳转到相应的百度搜索页面 myChart.on('click', function (params) { // 此处一般写:click事件触发后的回调,来完成额外的功能 }); </script>
四、Click事件触发效果图
五、完整源代码及解析
-
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>Echarts事件与行为</title> <!-- 引入 echarts.js --> <script src="js/echarts.js"></script> </head> <body> <!-- 为ECharts准备一个具备大小(宽高)的Dom --> <div id="main" style="width: 600px;height:400px;"></div> <script type="text/javascript"> // 基于准备好的dom,初始化echarts实例 var myChart = echarts.init(document.getElementById('main')); // 准备图表展示数据 var data_name = ["衬衫","羊毛衫","雪纺衫","裤子","高跟鞋","袜子"] var data_num = [5, 20, 36, 10, 10, 20] // 指定图表的配置项和数据 var option = { title: { text: 'ECharts事件与行为示例' // 图表标题 }, tooltip: {}, legend: { data:['销量'] // 图例 }, xAxis: { data: data_name // x轴数据 }, yAxis: {}, // y轴默认自动 series: [{ // 柱状图 type: 'bar', data: data_num, // 显示标签数量 label: { normal: { show: true, position: 'top' // 显示位置 } }, //配置样式 itemStyle: { //通常情况下样式 normal:{ //每个柱子的颜色即为colorList数组里的每一项,如果柱子数目多于colorList的长度,则柱子颜色循环使用该数组 color: function (params){ var colorList = ['#8dc63f','#add8e6','#ffb6c1','#f37b1d','#A6A6D2','#F0E68C']; return colorList[params.dataIndex]; } }, //鼠标悬停时,显示强调效果 emphasis: { shadowBlur: 10, shadowOffsetX: 0, shadowColor: 'rgba(0, 0, 0, 0.5)' } }, }], }; // 使用刚指定的配置项和数据显示图表。 myChart.setOption(option); // 处理点击事件并且跳转到相应的搜索页面 myChart.on('click', function(params){ // 跳转百度搜素 // window.open('https://www.baidu.com/s?wd=' + encodeURIComponent(params.name)) // 跳转淘宝搜索 window.open('https://s.taobao.com/search?q=' + encodeURIComponent(params.name)) }) </script> </body> </html>
六、附录 - 事件参数params
- 所有的鼠标事件包含参数的 params,都是一个数据信息对象,我们一般可以在控制台输出看一看;
<script>
......
myChart.on('click', function(params){
// 当鼠标点击事件触发时,在控制台输出params
console.log(params);
})
</script>
- 格式如下:
{
// 当前点击的图形元素所属的组件名称,
// 其值如 'series'、'markLine'、'markPoint'、'timeLine' 等。
componentType: string,
// 系列类型。值可能为:'line'、'bar'、'pie' 等。当 componentType 为 'series' 时有意义。
seriesType: string,
// 系列在传入的 option.series 中的 index。当 componentType 为 'series' 时有意义。
seriesIndex: number,
// 系列名称。当 componentType 为 'series' 时有意义。
seriesName: string,
// 数据名,类目名
name: string,
// 数据在传入的 data 数组中的 index
dataIndex: number,
// 传入的原始数据项
data: Object,
// sankey、graph 等图表同时含有 nodeData 和 edgeData 两种 data,
// dataType 的值会是 'node' 或者 'edge',表示当前点击在 node 还是 edge 上。
// 其他大部分图表中只有一种 data,dataType 无意义。
dataType: string,
// 传入的数据值
value: number|Array
// 数据图形的颜色。当 componentType 为 'series' 时有意义。
color: string
}