Echarts 指示器十字焦点固定在折线(数据)上

本文介绍了如何在Echarts中将指示器axisPointer的焦点固定在折线上,通过修改axisPointer类型为'line',结合mousemove和mousedown事件监听,动态调整markLine的位置。关键步骤包括:1) 设置axisPointer类型;2) 配置初始markLine,隐藏箭头并设为虚线;3) 添加Echarts事件监听,根据鼠标位置更新markLine。利用containPixel、convertFromPixel和setOption方法实现,注意在频繁更新时设置lazyUpdate以优化性能。
摘要由CSDN通过智能技术生成

一开始设置Echarts的指示器axisPointer,
焦点是跟着鼠标点击的位置,但是期望的焦点是在红色折线上,如下图所示
在这里插入图片描述

axisPointer设置的关键代码:

tooltip: {
   
        trigger: "axis",
        triggerOn: "mousemove",
        position: [-5, 0],
        axisPointer: {
   
          type: "cross",
          snap: true,
          label: {
   
            show: false,
          },
        },
        transitionDuration: 0,
        backgroundColor: "#FFFFFF",
        textStyle: {
   
          color: "#3C3C3C", // 设置文字颜色
          fontSize: 12,
          lineHeight: 20,
        },
}

查了下官方文档,没有看到可以设置axisPointer位置的属性,最后决定使用markLine来绘制axisPointer中横线

大概思路是先修改axisPointer的tpye为"line"(即只展示竖线),然后监听Echarts的mousemove、mousedown事件,根据鼠标位置获取坐标轴中对应的数据,改变markLine的位置,重新setOption(绘制横

  • 8
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
引用\[1\]:要实现Echarts十字准星指示器,可以先修改axisPointer的type为"line",然后监听Echarts的mousemove、mousedown事件,根据鼠标位置获取坐标轴中对应的数据,改变markLine的位置,重新setOption(绘制横线)。\[1\] 引用\[2\]:在使用pyecharts时,可以通过设置tooltip_opts参数来实现十字准星指示器。具体的代码如下所示: ```python import pyecharts as pct from pyecharts import options as opts x_data = \['Apple', 'Huawei', 'Xiaomi', 'Oppo', 'Vivo', 'Meizu'\] y_data = \[123, 153, 89, 107, 98, 23\] line = pct.charts.Line() line.add_xaxis(x_data) line.add_yaxis('', y_data) tooltip_opts = opts.TooltipOpts(is_show=True, trigger_on="mousemove | click", axis_pointer_type='cross') line.set_global_opts(tooltip_opts=tooltip_opts) line.render() ``` 这段代码会生成一个带有十字准星指示器折线图。\[2\] 引用\[3\]:如果使用原生的echarts库,可以通过设置tooltip的trigger为'axis',并且设置axisPointer的type为'shadow'来实现十字准星指示器。具体的代码如下所示: ```html <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>Tooltip组件</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 option = { title: { text: '这是主标题', subtext: '这是副标题', left: 'center' // 居中对齐 }, tooltip: { trigger: 'axis', axisPointer: { type: 'shadow' } }, legend: { data: \['各产品销量情况'\] }, xAxis: { data: \["产品A", "产品B", "产品C", "产品D", "产品E"\] }, yAxis: {}, series: \[{ name: '销量', type: 'bar', data: \[900, 700, 550, 1000, 200\] }\] }; // 使用刚指定的配置项和数据显示图表。 myChart.setOption(option); </script> </body> </html> ``` 这段代码会生成一个带有十字准星指示器的柱状图。\[3\] #### 引用[.reference_title] - *1* [Echarts 指示器十字焦点固定折线数据)上](https://blog.csdn.net/m0_59354754/article/details/118549034)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v4^insert_chatgpt"}} ] [.reference_item] - *2* [【Pyecharts】使用十字准星指示器(鼠标移动出现十字交叉并自动吸附)](https://blog.csdn.net/youduba7/article/details/118875193)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v4^insert_chatgpt"}} ] [.reference_item] - *3* [Echarts数据可视化 第3章 Echarts组件详解 3.2 提示框](https://blog.csdn.net/weixin_44226181/article/details/129312916)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v4^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值