echarts 点击事件

echarts 点击事件,官网中既有例子也有文档。但基本是关于,点击图形(不包括空地)上的位置的点击事件。

而点击图形的点击事件,参考echarts 文档,使用click 事件即可。如下。

myChart.on('click', function (params) {
    console.log(params);
});

但是,当我们有tooltip 时,鼠标即使放在空地上,页面上看起来也会选中附近的相应坐标轴中的点时,如下图,鼠标的位置是Loading的左上角。此时,点击鼠标的触发事件就不是上面的click 那样简单了。

此时,得使用zrender。获取zrender 的点击事件,再判断点击坐标是否在坐标范围内,即可。

附上完整代码。

<script>
	var myChart = echarts.init(document.getElementById("echarts-div"));
	
	option = {
    title: {
        text: '未来一周气温变化',
        subtext: '纯属虚构'
    },
    tooltip: {
        trigger: 'axis',
        formatter: function (params, ticket, callback) {
        	console.log("formatter params ",params);
        	console.log("formatter ticket ",ticket);
		    return 'Loading';
		}
    },
    legend: {
        data:['最高气温','最低气温']
    },
    toolbox: {
        show: true,
        feature: {
            dataZoom: {
                yAxisIndex: 'none'
            },
            dataView: {readOnly: false},
            magicType: {type: ['line', 'bar']},
            restore: {},
            saveAsImage: {}
        }
    },
    xAxis:  {
        type: 'category',
        boundaryGap: false,
        data: ['周一','周二','周三','周四','周五','周六','周日']
    },
    yAxis: {
        type: 'value',
        axisLabel: {
            formatter: '{value} °C'
        }
    },
    series: [
        {
            name:'最高气温',
            type:'line',
            data:[11, 11, 15, 13, 12, 13, 10],
            markPoint: {
                data: [
                    {type: 'max', name: '最大值'},
                    {type: 'min', name: '最小值'}
                ]
            },
            markLine: {
                data: [
                    {type: 'average', name: '平均值'}
                ]
            }
        },
        {
            name:'最低气温',
            type:'line',
            data:[1, -2, 2, 5, 3, 2, 0],
            markPoint: {
                data: [
                    {name: '周最低', value: -2, xAxis: 1, yAxis: -1.5}
                ]
            },
            markLine: {
                data: [
                    {type: 'average', name: '平均值'},
                    [{
                        symbol: 'none',
                        x: '90%',
                        yAxis: 'max'
                    }, {
                        symbol: 'circle',
                        label: {
                            normal: {
                                position: 'start',
                                formatter: '最大值'
                            }
                        },
                        type: 'max',
                        name: '最高点'
                    }]
                ]
            }
        }
    ]
	};
	
	var zr = myChart.getZr();
	myChart.setOption(option);

	zr.on('click', function (params) {
	    var pointInPixel = [params.offsetX, params.offsetY];
	    var pointInGrid = myChart.convertFromPixel('grid', pointInPixel);

	    if (myChart.containPixel('grid', pointInPixel)) {
	        console.log("point in grid ", pointInGrid);
	        console.log(params)
	        console.log(myChart.getOption().xAxis[0].data[pointInGrid[0]]);
	    }
	});

	zr.on('mousemove', function (params) {
	    var pointInPixel = [params.offsetX, params.offsetY];
	    zr.setCursorStyle(myChart.containPixel('grid', pointInPixel) ? 'copy' : 'default');
	});

</script>

 

ECharts 中为图表添加点击事件处理程序是一个常见的需求,尤其是在需要与用户进行交互时。ECharts 提供了灵活的事件绑定机制,允许开发者监听并处理各种用户交互事件,包括点击、悬停等。 ### 为 ECharts 图表添加点击事件处理程序的方法 ECharts 使用 `on` 方法来绑定事件处理程序。对于点击事件,可以使用 `'click'` 作为事件类型,并通过事件参数来判断点击的是图表的哪个部分。 以下是一个完整的示例代码,展示如何为 ECharts 图表添加点击事件处理程序: ```javascript // 初始化图表 const chart = echarts.init(document.getElementById('chart')); // 配置项 const option = { xAxis: { type: 'category', data: ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun'] }, yAxis: { type: 'value' }, series: [{ type: 'line', data: [150, 230, 224, 218, 135, 147, 260], // 显示数据点符号(确保节点可点击) symbol: 'circle', symbolSize: 10 }] }; // 设置配置项 chart.setOption(option); // 绑定点击事件 chart.on('click', (params) => { // 判断点击的是否是数据点 if (params.componentType === 'series' && params.seriesType === 'line') { console.log('点击的节点信息:', params); // 执行自定义操作(例如弹窗、跳转等) alert(`点击了 ${params.seriesName} 的节点 ${params.name},值为 ${params.value}`); } }); ``` ### 关键参数说明 - `params.componentType`: 用于判断点击的是哪个组件类型,例如 `'series'` 表示数据系列。 - `params.seriesType`: 用于判断点击的是哪种类型的数据系列,例如 `'line'` 表示折线图。 - `params.name`: 表示点击的数据点的名称,通常是 x 轴上的标签。 - `params.value`: 表示点击的数据点的值,通常是 y 轴上的数值。 - `params.seriesName`: 表示点击的数据系列的名称。 通过这些参数,可以实现对图表的精细控制,例如弹出详细信息、跳转到其他页面或更新图表数据等。 ### 相关问题 1. 如何在 ECharts 中为多个数据系列添加不同的点击事件处理程序? 2. 如何在 ECharts 中实现点击事件的动态数据更新? 3. 如何在 ECharts 中为图表的其他部分(如图例、坐标轴)添加点击事件? 4. 如何在 ECharts 中结合点击事件实现数据点的高亮显示? 5. 如何在 ECharts 中通过点击事件触发自定义的动画效果?
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值