ECharts饼状图中使用点击事件来跳转到新的页面链接

13 篇文章 0 订阅

   项目上的一个功能使用了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”属性:

    1-200G01FPT53.png

    2. 在给画饼状图的对象绑定一个点击事件,这里我们使用on来绑定一个事件,然后我们可以在浏览器中打印一下param这个形参,代码如下:     

// 饼图点击跳转到指定页面
myChart.on('click', function (param) {
    window.location.href = param.data.url;
});

    在浏览器中打印param参数,截图如下:

    1-200G01G623O4.png

    按以上步骤,完成代码后运行,点击饼状图对应的部分时,会执行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>
  • 7
    点赞
  • 39
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要实现点击饼状图进入对应的数据,可以通过 echarts 的事件监听来实现。具体步骤如下: 1. 在组件引入 echarts 库,并在 mounted 钩子函数初始化 echarts 实例: ```javascript import echarts from 'echarts' export default { data() { return { chartInstance: null } }, mounted() { // 获取容器元素 const container = this.$refs.chartContainer // 初始化 echarts 实例 this.chartInstance = echarts.init(container) // 渲染饼状图 this.renderPieChart() } } ``` 2. 在 renderPieChart 方法设置饼状图数据和事件监听: ```javascript renderPieChart() { const data = [ { value: 335, name: '直接访问' }, { value: 310, name: '邮件营销' }, { value: 234, name: '联盟广告' }, { value: 135, name: '视频广告' }, { value: 1548, name: '搜索引擎' } ] const option = { series: [ { type: 'pie', // 饼状图数据 data, // 饼状图每个扇形区域的点击事件 emphasis: { itemStyle: { borderWidth: 5, borderColor: '#fff' } }, label: { show: true, formatter: '{b}:{c} ({d}%)' } } ] } // 设置事件监听 this.chartInstance.on('click', params => { console.log(params) // 打印出被点击的扇形区域的信息,包括名称、值等 // 可以在这里根据点击的扇形区域进行跳转或其他操作 }) // 使用刚指定的配置项和数据显示图表。 this.chartInstance.setOption(option) } ``` 在这里,我们通过设置 `this.chartInstance.on('click', params => {...})` 监听饼状图点击事件,当用户点击饼状图的某个扇形区域时,会触发这个事件并执行回调函数。在回调函数,我们可以根据被点击的扇形区域的信息进行跳转或其他操作。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值