在vue中Antv G2 折线图如何添加点击事件获取折线上点的值

news2024/11/15 13:33:10

 

在项目中有个需求是点击折线图的点,获取当前点的信息,其它图形都可以参考相关的API获取到,但area做的折线图怎么都获取不到点击的信息,只能获取全部的信息,最终解决如下:

实现思路

  1. 用户的鼠标在折线图上移动时,监听tooltip的变化,通过一个变量记录tooltip的当前值。
    对应的事件名称:tooltip:change
  2. 利用G2提供的组合事件,监听折线图的绘图区被 click 的时候。此时,拿到tooltip的当前值做任意你需要的操作即可。
    对应的事件名称:plot:click
import { Chart } from '@antv/g2';

const data = [
  { year: '1991', value: 3 },
  { year: '1992', value: 4 },
  { year: '1993', value: 3.5 },
  { year: '1994', value: 5 },
  { year: '1995', value: 4.9 },
  { year: '1996', value: 6 },
  { year: '1997', value: 7 },
  { year: '1998', value: 9 },
  { year: '1999', value: 13 },
];
const chart = new Chart({
  container: 'container',
  autoFit: true,
  height: 500,
});

let hoverData = {}; // new Add -- 如果是在vue中使用,把该变量定义在data中即可

chart.data(data);
chart.scale({
  year: {
    range: [0, 1],
  },
  value: {
    min: 0,
    nice: true,
  },
});

chart.tooltip({
  showCrosshairs: true, // 展示 Tooltip 辅助线
  shared: true,
});

chart.line().position('year*value').label('value');
chart.point().position('year*value');

// new Add -- 监听 tooltip:change 事件
chart.on('tooltip:change', ev => {
  // 自己可以在控制台打印一下ev,看下里面的结构,找到自己所需要的信息
  hoverData = ev.data.items[0].data;
})

// new Add -- 监听绘图区plot的点击事件
chart.on('plot:click', ev => {
  // 当用户在画布上点击时,这个时候用户看到tooltip上的数据其实已经被存在了hoverData里。拿到hoverData,相当于你拿到了折线上相关点的数据,之后再有什么需求都可以实现啦!
  console.log(JSON.stringify(hoverData));
})

chart.render();

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/854375.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

高中教师能去美国做访问学者吗?

美国作为世界上高等教育水平较高的国家之一,吸引了众多学者前往交流学习。那么高中教师是否能够成为美国访问学者,这是当然的,高中老师是可以出国访学的,但是出国做访问学者会涉及到多方面的因素。 首先,教师个人的学术…

带你Debug SpringApplication.run(MainApp.class, args) 看看SpringBoot 如何启动Tomcat

😀前言 本篇博文是关于SpringBoot 如何启动Tomcat的笔记,希望能够让你到SpringBoot印象深刻😊 🏠个人主页:晨犀主页 🧑个人简介:大家好,我是晨犀,希望我的文章可以帮助到…

2023深圳杯A题完整代码模型

已更新深圳杯A题全部版本,文末获取! 摘要 现代社会,随着生活方式的变化和工作压力的增大,慢性非传染性疾病日益成为威胁公众健康的主要问题。心脑血管疾病、糖尿病、恶性肿瘤及慢性阻塞性肺病等慢性病的发病率呈现出上升趋势。为…

Linux 安装部署Seata

标题:在Linux上安装部署Seata分布式事务解决方案 导语: Seata是一个开源的分布式事务解决方案,旨在解决分布式环境下的事务一致性问题。本文将为您介绍如何在Linux操作系统上安装和部署Seata,为您的分布式应用添加强大的事务支持。…

【【萌新的STM32学习-7】】

萌新的STM32学习-7 MAP 文件是MDK代码编译之后,产生的集程序,数据及IO 空间的一种映射列表文件 map 文件是编译器链接时生成的一个文件,它主要包含了交叉链接信息。通过.map 文 件,我们可以知道整个工程的函数调用关系、FLASH 和 …

ThingJS开发使用感受

封面来源于网络。 一、前言 1. 背景 出于为了实现有关厂区的数字孪生项目,断断续续使用ThingJS平台开发一年左右,做一个使用感受的总结。 2. 业务场景 开发一个基于厂区的数字孪生项目,基于ThingJS低代码开发的页面分为div3d、div2d结构&am…

【深度学习笔记】深度学习框架

本专栏是网易云课堂人工智能课程《神经网络与深度学习》的学习笔记,视频由网易云课堂与 deeplearning.ai 联合出品,主讲人是吴恩达 Andrew Ng 教授。感兴趣的网友可以观看网易云课堂的视频进行深入学习,视频的链接如下: 神经网络和…

【源码编译并安装RocketMQ Dashboard】

【源码编译并安装RocketMQ Dashboard】 一、环境说明二、源码编译并执行三、小结 一、环境说明 安装环境:虚拟机VMWare Centos7.6 Maven3.6.3 JDK1.8已经安装了RocketMQ-5.1.3 单Master集群,且使用Local模式部署,即Broker和Proxy同进程部署…

【Java】CAS数据交换流程

CAS的全称是: Compare And Swap(比较再交换),它体现的一种乐观锁的思想,在无锁情况下保证线程操作共享数据的原子性。 CAS数据交换流程: 此时线程A和线程B都从主内存中拷贝了一份a100的共享变量到自己的工作内存中 线程A操作了变…

手势识别rtos小车(1)----手部识别

1.安装mediapipe库和cv2库 pip install opencv-python -i https://pypi.tuna.tsinghua.edu.cn/simplepip install Mediapipe0.8.9.1 -i https://pypi.tuna.tsinghua.edu.cn/simple some-package 这里我主要还是弄明白了这个pycharm编辑器和项目之间的关系,我在这里…

联盟CPS聚合联盟聚推客推广项目赚钱吗?揭秘有人月入10万+

大家好,我是巧匠!最近因为忙碌于项目,都没来得及发布新的文章。不过现在,我给大家带来了一个新的项目玩法——那就是我们常说的淘客CPS系统。相信大家对“聚推客联盟”这个系统都有所了解。这个系统的模式真的很棒,让我…

nodejs登录生成token并验证

目录 一、基础概念 二、JTW 三、实践 一、基础概念 "token": 是一个通用的术语,指代一种用于表示身份、权限或访问凭证的数据结构。它可以是一个字符串、数字或其他形式的数据。 主要用途: 身份验证:在身份验证过程…

ruoyi若依 组织架构设计--[ 角色管理 ]

ruoyi若依 组织架构设计--[ 角色管理 ] 角色新增后端代码 角色修改后端代码 角色查询角色删除角色分配数据权限后端代码 角色分配用户 角色新增 后端代码 有一点,我认为新增的时候,也需要修改redis中的权限。 角色修改 后端代码 因为修改了role_menu表了…

Database Comparer VCL for Delphi crack

Database Comparer VCL for Delphi crack 数据库比较器VCL比较并同步许多流行数据库的数据库结构(元数据)和表数据。支持的数据库列表不断更新,包括InterBase、FireBird、MySQL、MSSQL、Oracle、Sybase、PostgreSQL、DB2、PervasiveSQL、MSAccess、Paradox、DBASE以…

Java多线程(2)---线程控制和线程安全的详细讲解

目录 前言 一.线程控制方法 1.1启动线程--start() 1.2线程睡眠---sleep()方法 1.3中断线程--interrupt() 方法 1.4等待线程---join() 二.线程安全 2.1数据不安全---数据共享 ⭐不安全的演示和原因 ⭐不安全的处理方法 ⭐synchronize的使用 2.2数据不安全---内存可见…

条条大路通罗马系列—— 使用 Hiredis-cluster 连接 Amazon ElastiCache for Redis 集群

前言 Amazon ElastiCache for Redis 是速度超快的内存数据存储,能够提供亚毫秒级延迟来支持 实时应用程序。适用于 Redis 的 ElastiCache 基于开源 Redis 构建,可与 Redis API 兼容,能够与 Redis 客户端配合工作,并使用开放的 Re…

【动态规划】最长上升子序列 LIS

算法提高课笔记。 目录 问题的开始:最长上升子序列思路代码 怪盗基德的滑翔翼题意思路代码 登山题意思路代码 友好城市题意思路代码 拦截导弹题意思路代码 导弹防御系统题意思路代码 最长公共上升子序列题意思路代码 问题的开始:最长上升子序列 原题链…

linux后台运行程序命令screen

前言 我们在服务器终端或者是使用ssh连接服务器的时候,需要长期后台运行项目,但是我们一关终端可能程序进程就会被kill掉了,我们之前学习过2>&1 &后台部署的命令,但是这样我们查看项目进程的时候还需要去查询运行的PI…

TartanVO: A Generalizable Learning-based VO 论文阅读

论文信息 题目:TartanVO: A Generalizable Learning-based VO 作者:Wenshan Wang, Yaoyu Hu 来源:ICRL 时间:2021 代码地址:https://github.com/castacks/tartanvo Abstract 我们提出了第一个基于学习的视觉里程计&…

Netty使用和常用组件辨析

Netty 使用和常用组件 简述 <dependency> <groupId>io.netty</groupId> <artifactId>netty-all</artifactId <version>4.1.42.Final </version> <scope>compile</scope> </dependency> Netty 的优势 1 、 AP…