echarts-事件

echarts部分事件
在这里插入图片描述

添加点击事件

添加点击事件:

let options = {
    tooltip: {},
    xAxis: {
      type: "category",
      data: ["d1", "d2", "d3", "d4"],
    },
    yAxis: {},

    series: [
      {
        type: "line",
        data: d1,
      },
      {
        type: "bar",
        data: d2,
      },
    ],
  };
  myEcharts.on("click", (value) => {
    console.log(value);
  });

bar:
在这里插入图片描述
line:
在这里插入图片描述

过滤项

事件主要有两种写法:
myecharts.on(事件,监听执行的方法,this指向?) 或
myecharts.on(事件,过滤条件,监听执行的方法,this指向?)
第二种写法可以添加过滤条件,让特定的图表触发。
由于echarts的事件是绑定整个echarts的,所以如果想给不同的图表绑定不同的点击事件,就需要使用过滤项。
在这里插入图片描述

  1. 按照图标类型
    series.类型
 myEcharts.on("click", "series.line", (value) => {
    console.log("line");
  });
  myEcharts.on("click", "series.bar", (value) => {
    console.log("bar");
  });
  1. 图标顺序 seriesIndex
 myEcharts.on(
    "click",
    {
      seriesIndex: 0,
    },
    (value) => {
      console.log("line");
    }
  );
  myEcharts.on(
    "click",
    {
      seriesIndex: 1,
    },
    (value) => {
      console.log("bar");
    }
  );
  1. name 是data中数据的name,可以针对某一条数据触发

    series: [
      {
        type: "line",
        data: [
          {
            name: "lineD1",
            value: 10,
          },
          20,
          30,
          40,
        ],
      },
      {
        type: "bar",
        data: d2,
      },
    ],
     myEcharts.on(
    "click",
    {
      name: "lineD1",
    },
    (value) => {
      console.log("line");
    }
  );
  1. dataIndex data数组中的第几个数据
 myEcharts.on(
    "click",
    {
      seriesIndex: 0,
      dataIndex: 1,
    },
    (value) => {
      console.log("line");
    }
  );
  1. dataType 在关系图中有用,如果设为node就是节点触发,edge就是边触发。
 series: [
      {
        type: "line",
        data: [
          {
            name: "lineD1",
            value: 10,
          },
          20,
          30,
          40,
        ],
      },
      {
        type: "bar",
        data: d2,
      },
      {
        type: "graph",
        data: [
          {
            name: "1",
            x: 10,
            y: 10,
            value: 10,
          },
          {
            name: "2",
            x: 100,
            y: 100,
            value: 20,
          },
        ],
        links: [
          {
            source: "1",
            target: "2",
          },
        ],
      },
    ],
     myEcharts.on(
    "click",
    {
      dataType: "node",
    },
    (value) => {
      console.log("line");
    }
  );
  1. element 自定义图表, 规定自定义图表返回的那个节点绑定事件。
 {
        type: "custom",
        renderItem() {
          return {
            type: "circle",
            //  coordinateSystem: "none",
            name: "c1",
            shape: {
              cx: 20,
              cy: 10,
              r: 50,
            },
            style: {
              fill: "blue",
            },
          };
        },
      },
   myEcharts.on("click",{element:"c1"}, (value) => {
      console.log("c1");
    }
  );

使用echarts之外的按钮去触发

事件触发 dispatchAction(obj),只能触发图表行为。

 let options = {
    tooltip: {},
    legend: {
      show: true,
    },
    xAxis: {
      type: "category",
      data: ["d1", "d2", "d3", "d4"],
    },
    yAxis: {},

    series: [
      {
        type: "line",
        name: "line",
        data: [
          {
            name: "lineD1",
            value: 10,
          },
          20,
          30,
          40,
        ],
      },
      {
        type: "bar",
        name: "bar",
        data: d2,
      },
    ],
  };
const cli = () => {
  myEcharts.dispatchAction({ type: "legendUnSelect", name: "line" });
};
<button @click="cli">点击图例</button>

在这里插入图片描述

例子 点击柱状图展开详细的折线图

let myEcharts;
let options;
const data = [
  {
    data: "2024-05-05",
    value: 20,
    detail: [
      {
        time: "07:00-09:00",
        value: 5,
      },
      {
        time: "12:00-13:00",
        value: 5,
      },
      {
        time: "14:00-18:00",
        value: 10,
      },
    ],
  },
  {
    data: "2024-06-06",
    value: 10,
    detail: [
      {
        time: "08:00-09:00",
        value: 5,
      },
      {
        time: "12:50-13:00",
        value: 4,
      },
      {
        time: "16:00-18:00",
        value: 1,
      },
    ],
  },
  {
    data: "2024-07-07",
    value: 15,
    detail: [
      {
        time: "08:00-10:00",
        value: 5,
      },
      {
        time: "11:00-132:00",
        value: 5,
      },
      {
        time: "15:00-15:50",
        value: 10,
      },
    ],
  },
  {
    data: "2024-08-08",
    value: 5,
    detail: [
      {
        time: "07:00-09:00",
        value: 2,
      },
      {
        time: "12:00-13:00",
        value: 2,
      },
      {
        time: "14:00-18:00",
        value: 1,
      },
    ],
  },
];
onMounted(() => {
  let canvas = document.getElementById("canvas");
  echarts.registerMap("china", china);
  myEcharts = echarts.init(canvas, null, {
    width: 800,
    height: 500,
    devicePixelRatio: window.devicePixelRatio,
    locale: "ZH",
  });

  options = {
    tooltip: {},
    legend: {
      show: true,
    },
    xAxis: {
      type: "category",
      data: data.map((item) => item.data),
    },
    yAxis: {},

    series: [
      {
        type: "bar",
        name: "bar",
        data: data.map((item) => item.value),
      },
    ],
  };
 
  myEcharts.on("click", "series.bar", (value) => {
    //匹配出当前点击的对象
    const date = value.name;
    const item = data.find((item) => {
      console.log(item.data);
      if (item.data == date) {
        return item;
      }
    });
    const detail = item.detail;
    //将detail渲染成折线
    myEcharts.setOption({
      xAxis: {
        type: "category",
        data: detail.map((item) => item.time),
      },
      yAxis: {},
      series: [
        {
          type: "line",
          data: detail.map((item) => item.value),
        },
      ],
    });
  });
  rednderEcharts(options);
});

function rednderEcharts(options) {
  myEcharts.setOption(options);
}
const cli = () => {
  rednderEcharts(options);
};
</script>

<template>
  <button @click="cli">返回</button>
  <div id="canvas" width="400" height="400"></div>
</template>

在这里插入图片描述

例子 随着鼠标移动,legend显示具体的数值

 options = {
    tooltip: {},
    legend: {
      show: true,
      formatter: (value) => {
        console.log(value);
        if (value == "line") {
          return (
            value +
            ":" +
            d1.reduce((pre, now) => {
              return pre + now;
            })
          );
        } else {
          return (
            value +
            ":" +
            d2.reduce((pre, now) => {
              return pre + now;
            })
          );
        }
      },
    },
    xAxis: {
      type: "category",
      data: data.map((item) => item.data),
    },
    yAxis: {},

    series: [
      {
        type: "bar",
        name: "bar",
        data: d2,
      },
      {
        type: "line",
        name: "line",
        data: d1,
      },
    ],
  };
  myEcharts.on("mouseout", "series.bar", (value) => {
    myEcharts.setOption({
      legend: {
        show: true,
        formatter: (value) => {
          console.log(value);
          if (value == "line") {
            return (
              value +
              ":" +
              d1.reduce((pre, now) => {
                return pre + now;
              })
            );
          } else {
            return (
              value +
              ":" +
              d2.reduce((pre, now) => {
                return pre + now;
              })
            );
          }
        },
      },
    });
  });
  myEcharts.on("mouseover", "series.bar", (value) => {
    console.log(value);
    let _data = value.data;
    let _index = value.dataIndex;
    let _linedata = d1[_index];
    myEcharts.setOption({
      legend: {
        formatter(value) {
          if (value == "line") {
            return value + ":" + _linedata;
          } else {
            return value + ":" + _data;
          }
        },
      },
    });
  });

在这里插入图片描述

动画

在这里插入图片描述


    series: [
      {
        type: "bar",
        name: "bar",
        data: d2,
        animation: false,
        animationThreshold: 5,
      },
      {
        type: "line",
        name: "line",
        data: d1,
      },
    ],

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

推送镜像到私有harbor仓库

本地已制作镜像&#xff1a;tomcat-8.5.100-centos7.9:1.0。 本地已经搭建私有仓库&#xff1a;harbor.igmwx.com。 现在需要把镜像 tomcat-8.5.100-centos7.9:1.0 推送到harbor。 &#xff08;1&#xff09;查看本地镜像&#xff1a;sudo docker images zhangzkzhangzk:~/d…

Java Object类方法介绍

Object作为顶级类&#xff0c;所有的类都实现了该类的方法&#xff0c;包括数组。 查询Java文档&#xff1a; 1、object.eauqls(): 其作用与 有些类似。 &#xff1a; 是一个比较运算符&#xff0c;而不是一个方法。 ①可以判断基本类型&#xff0c;也可以判断引用类型。 ②若…

黑马python-面向对象程序设计

1.定义类 class 类名&#xff1a; 代码 ….. 注意&#xff1a;类名要满足标识符命名规则&#xff0c;同时遵循大驼峰命名习惯 2.self&#xff1a; self指调用该函数的对象 3.创建对象 对象名类&#xff08;&#xff09; 4.添加获取对象属性 对象名.属性名值 5._init_()方法&…

vs2010特殊字符‘’无法显示

记录一下&#xff0c;某天测试组的同事突然发了个邮件&#xff0c;说显示有问题 一看邮件内容&#xff0c;果然出bug了 修改办法如下&#xff1a; 把资源文件中的‘&’改成‘&&’&#xff0c;这样在使用的时候就能用了 成功

@RequestBody注解

文章目录 RequestBody注解基本概念在postman里如何发送接收端带有RequestBody的请求&#xff1f; RequestBody注解 基本概念 扩展&#xff1a; http报文会包含四部分&#xff0c;第一部分是请求行&#xff0c;第二部分是请求头&#xff0c;第三部分是空行&#xff0c;第四部分…

基于英飞凌BGT60LTR11AIP E6327芯片具低功耗的脉冲多普勒操作模式常用于汽车应用的雷达上

芯片特征&#xff1a; 60 GHz收发器MMIC&#xff0c;带一个发射器和一个接收器单元封装天线&#xff08;AIP&#xff09;&#xff08;6.73.30.56 mm3)低功耗的脉冲多普勒操作模式自主模式用于运动和运动方向的集成检测器运动检测信号的直接输出目标检测范围的15个可配置阈值检测…

富港银行 邀请码 兑换码 优惠码 分享

首次记得一定要扫码注册&#xff0c;扫码注册开户费50美金&#xff0c;每笔26美金手续费&#xff0c;目前能接收CBI银行资金的有&#xff1a;工行、交通、中行&#xff0c;请知悉 cbi帐户管理费&#xff1a;10美元/月&#xff0c;余额>500美元&#xff0c;1美元/月/&#x…

李廉洋:5.29黄金原油持续震荡,今日美盘行情走势分析及策略。

黄金消息面分析&#xff1a;美联储理事鲍曼周二表示&#xff0c;她支持要么先等等再开始放缓缩减资产负债表&#xff0c;要么采取比本月早些时候宣布的更温和的放慢缩表进程。鲍曼认为商业银行准备金水平仍然充足&#xff0c;这让官员们有更多时间来推进缩表进程。“在准备金接…

FJSP:粒子群优化算法PSO求解柔性作业车间调度问题(FJSP),提供MATLAB代码

一、柔性作业车间调度问题 柔性作业车间调度问题&#xff08;Flexible Job Shop Scheduling Problem&#xff0c;FJSP&#xff09;&#xff0c;是一种经典的组合优化问题。在FJSP问题中&#xff0c;有多个作业需要在多个机器上进行加工&#xff0c;每个作业由一系列工序组成&a…

电商API接口||电商数据连接器:一键连接,效率加倍!

电商数据API接口&#xff1a; 一键连接&#xff0c;效率加倍&#xff01; 打造智能数据生态&#xff0c;让数据流动更加高效 在数字化时代&#xff0c;数据已成为企业发展的核心驱动力。电商API数据采集接口&#xff0c;助力电商企业实现数据的高效管理和应用。 电商数据API…

浅说线性DP(上)

前言 在说线性dp之前&#xff0c;我们先来聊一聊动态规划是啥&#xff1f; 动态规划到底是啥&#xff1f; 动态规划是普及组内容中最难的一个部分&#xff0c;也是每年几乎必考的内容。它对思维的要求极高&#xff0c;它和图论、数据结构不同的地方在于它没有一个标准的数学…

IPC$横向移动

一. IPC$介绍和连接方式 1. IPC$介绍 IPC( Internet Process Connection)共享&#xff0c;是为了实现进程间通信而开放的命名管道。IPC可以通过验证用户名和密码获得相应的权限,通常在远程管理计算机和查看计算机的共享资源时使用。通过ipc$,可以与目标机器建立连接。利用这个…

项目开发-若依框架

文章目录 框架下载及运行项目学习需求修改左侧菜单栏增加标签-项目信息搭建过程问题解决 后续需要看的内容 框架下载及运行 下载安装&#xff1a; https://blog.csdn.net/anxiaoxiao61/article/details/122505963 https://blog.csdn.net/m0_67376124/article/details/12761749…

安全阀校准周期是多久?重要性、影响因素与周期建议

安全阀&#xff0c;作为阀门家族中特殊的分支&#xff0c;其重要性不言而喻。 在压力操控设备项目工程中&#xff0c;安全阀扮演着至关重要的角色。它不同于其他阀门仅起开关作用&#xff0c;更重要的是能够保护设备的安全。 安全阀根据压力系统的工作压力自动启闭&#xff0…

RT_Thread内核源码分析(一)——CM3内核和上下文切换

目录 一、程序存储分析 1.1 CM3内核寻址空间映射 1.2 程序静态存储和动态执行 二、CM3内核相关知识 2.1 操作模式和特权极别 2.2 环境相关寄存器 2.2.1 通用寄存器组&#xff0c; 2.2.2 状态寄存器组 2.2.3 模式切换环境自动保存 2.2.4 函数调用形参位置 2.3 …

本特利330180-51-00前置器在工业自动化中的应用与优势

本特利330180-51-00前置器在工业自动化中的应用与优势 作为PLC技术员&#xff0c;在工业自动化领域中&#xff0c;我们经常接触到各种传感器和前置器。其中&#xff0c;本特利330180-51-00前置器以其卓越的性能和广泛的应用领域&#xff0c;受到了业界的广泛关注。本文将详细介…

野外作战武器操作3D模拟实操仿真训练以便老兵能适应不同的训练需求

强国必须强军&#xff0c;我国在军事方面的投入持续加大&#xff0c;自然在军事武器培训方面不容忽视&#xff0c;在军事领域&#xff0c;3D模拟展示不仅提升了军事训练的效率&#xff0c;还为我们提供了更加直观、真实的武器体验。 首先&#xff0c;3D军事武器模拟展示能够提供…

Kyndryl 与 Nvidia 建立新的人工智能基础设施合作伙伴关系

Kyndryl与Nvidia宣布达成新的人工智能基础设施战略合作&#xff0c;共同推动AI技术的广泛应用。根据这一合作&#xff0c;Nvidia的先进AI软件解决方案将被引入Kyndryl的开放集成平台——Kyndryl Bridge&#xff0c;以优化基础设施工作负载&#xff0c;并为客户提供更高效的IT服…

青岛有哪些媒体资源?参展参会邀约报道

传媒如春雨&#xff0c;润物细无声&#xff0c;大家好&#xff0c;我是51媒体网胡老师。 青岛&#xff0c;以其优越的地理位置、丰富的产业资源、高度国际化的开放程度以及完善的会展设施&#xff0c;成为国内外知名的展览展会举办地。 此外&#xff0c;青岛作为中国重要的沿海…

leetCode.82. 删除排序链表中的重复元素 II

leetCode.82. 删除排序链表中的重复元素 II 题目思路&#xff1a; 代码 class Solution { public:ListNode* deleteDuplicates(ListNode* head) {auto dummy new ListNode(-1);dummy->next head;auto p dummy;while(p->next){auto q p->next->next;while(q …