赞
踩
项目上的一个功能使用了ECharts的统计饼状图表,展示各分组数据所占的比重。然后又提出了新的需求,在点击饼状图的各个部分时,需要跳转到对应的数据列表页面。
之前都只是做统计功能,对ECharts的关注点也在统计功能上,还没有处理过相应的点击功能。仔细翻了遍ECharts的api文档,找到了事件处理的相关部分。可以参考“https://echarts.apache.org/zh/api.html#events”。
在ECharts 中的事件有两种,一种是鼠标事件,在鼠标点击某个图形上会触发;还有一种是调用 dispatchAction 后触发的事件。本文关注的是第一种鼠标事件。
鼠标事件的事件参数是事件对象的数据的各个属性,对于图表的点击事件,基本参数如下,其它图表诸如饼图可能会有部分附加参数。例如饼图会有percent属性表示百分比,具体见各个图表类型的 label formatter 回调函数的 params。
{ // 当前点击的图形元素所属的组件名称, // 其值如 '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, // 用户自定义的数据。只在 graphic component 和自定义系列(custom series) // 中生效,如果节点定义上设置了如:{type: 'circle', info: {some: 123}}。 info: * }
根据以上介绍,我们可以实现饼状图的点击事件跳转功能:
1. 绘制饼状图,这一步根据自己需求设计(也可以参考ECharts官网示例),引入ECharts.js文件,在饼状图的“series”属性“data”中,添加一个“url”属性:
2. 在给画饼状图的对象绑定一个点击事件,这里我们使用on来绑定一个事件,然后我们可以在浏览器中打印一下param这个形参,代码如下:
// 饼图点击跳转到指定页面 myChart.on('click', function (param) { window.location.href = param.data.url; });
在浏览器中打印param参数,截图如下:
按以上步骤,完成代码后运行,点击饼状图对应的部分时,会执行click事件,跳转对应的页面。
最后,附上完整的测试代码:
<!doctype html> <html> <head> <meta charset="utf-8"> <script src="plugins/echarts/echarts.min.js" type="text/javascript"></script> </head> <body> <div id="mychart" style="width: 300px;height: 300px;"></div> <script> // 设置图表属性 option = { title: { text: '测试饼状图', x: 'center' }, tooltip: { trigger: 'item', formatter: "{a} <br/>{b} : {c} ({d}%)" }, legend: { orient: 'horizontal', left: 'center', top: '15%' }, series: [ { name: '测试饼状图', type: 'pie', radius: '55%', center: ['50%', '60%'], data: [ {value: 30.2, name: '合格', url: "http://www.baidu.com"}, {value: 69.7, name: '不合格', url: "http://www.withcoder.com"} ], itemStyle: { emphasis: { shadowBlur: 10, shadowOffsetX: 0, shadowColor: 'rgba(0, 0, 0, 0.5)' } } }] }; // 初始化图表 myChart = echarts.init(document.getElementById('mychart')); myChart.setOption(option); // 饼图点击跳转到指定页面 myChart.on('click', function (param) { window.location.href = param.data.url; }); </script> </body> </html>
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。