echarts点击事件、柱状图设置区间颜色

news2024/11/29 0:50:39

实现echarts柱状图标记区域,并在单击柱状条时触发点击事件切换标记区域

//html
<div id="main" style="width: 600px;height:400px;"></div>

//js
let _chart = null;
letselectInfo = {};//选择的柱状条信息,可用于信息的获取

window.addEventListener('resize', () => {
    if (_chart) _chart.resize()
})

//自定义数据
let aAxisData = [],
    yAxisData1 = [],
    yAxisData2 = [];
for (var i = 0; i < 15; i++) {
    aAxisData.push({
        id: 'id_' + i,
        value: '测试' + (i + 1) + '组'
    })
    yAxisData1.push(i * 4 + 6);
    yAxisData2.push(i * 2 + 5);
}
this.initCharts('main', aAxisData, yAxisData1, yAxisData2);

//定义方法
function initCharts(_id, aAxisData, yAxisData1, yAxisData2) {
	  if (_chart) _chart.clear();
	  _chart = echarts.init(document.getElementById(_id));
	  const options = {
	      grid: { //位置
	          left: '5%',
	          right: '4%',
	          bottom: '30px',
	          top: '80px',
	          containLabel: true //是否包含坐标值
	      },
	      tooltip: {
	          trigger: 'axis',
	          axisPointer: {
	              type: 'shadow'
	          },
	      },
	      xAxis: [{
	          type: 'category',
	          data: aAxisData,
	          axisLabel: { //坐标轴刻度标签
	              show: true,
	              intervel: 0, //设置成 0 强制显示所有标签
	              rotate: 20, //刻度标签旋转的角度,-90 度到 90 度
	              width: 120, //文本显示宽度
	              height: 20, //文本显示高度
	              overflow: 'truncate', //文字超出宽度是否截断或者换行,配置width时有效.'truncate' 截断,'break' 换行,'breakAll' 换行
	              ellipsis: '...' //在overflow配置为'truncate'的时候,可以通过该属性配置末尾显示的文本
	          },
	          max: (value) => { //小于6个则按照6个来展示,防止只有一两个柱状条时会撑得很宽
	              value.max = value.max < 6 ? 6 : value.max;
	              return value.max;
	          }
	      }],
	      yAxis: [{
	          type: 'value',
	      }],
	      series: [{
	          name: '总数',
	          type: 'bar',
	          data: yAxisData1,
	          itemStyle: { //柱状条颜色
	              color: '#4E89EE'
	          },
	          barGap: 0, //柱状图间隔
	          markArea: { //图表标域,常用于标记图表中某个范围的数据
	              silent: true, //图形是否不响应和触发鼠标事件,默认为 false,即响应和触发鼠标事件
	              itemStyle: { //该标域的样式
	                  color: 'rgba(78, 137, 238, 0.19)'
	              },
	              data: [ //选择标域位置,我这里选择的是第一个柱状条区间
	                  [{
	                      xAxis: aAxisData[0].value
	                  }, {
	                      xAxis: aAxisData[0].value
	                  }]
	              ]
	          }
	      }, {
	          name: '已接入数',
	          type: 'bar',
	          data: yAxisData2,
	          itemStyle: { //柱状条颜色
	              color: '#bbd5ff'
	          },
	      }]
	  }
	  //将实例属性清空,为了解决图表还未渲染时切换页面,再切回来时图表不渲染问题
	  document.getElementById(_id).setAttribute('_echarts_instance_', '');
	  _chart.setOption(options);
	  this.barChartClick(_chart)
}
//定义点击事件
function barChartClick(chart) {
	//chart.on('click', function(params) {})也可以触发点击事件,但是当柱状条无数据时无法触发
  	chart.getZr().on('click', (params) => {
	      let pointInPixel = [params.offsetX, params.offsetY];
	      // 判断点击的是grid区域内
	      if (chart.containPixel('grid', pointInPixel)) {
	          let pointInGrid = chart.convertFromPixel({
	              seriesIndex: 0
	          }, pointInPixel);
	          let handleIndex = Number(pointInGrid[0]); //索引
	          let op = chart.getOption();
	          // 下面的数据可以根据需要进行获取
	          let dataX = op.xAxis[0].data[handleIndex]; //获取点击x轴的数据
	          let dataY = op.series[0].data[handleIndex]; //获取点击的柱状条的数据
	          selectInfo = dataX;
	          op.series[0].markArea.data = [
	              [{
	                  'xAxis': dataX.value
	              }, {
	                  'xAxis': dataX.value
	              }]
	          ]
	          chart.setOption(op);
	      }
	  })
}

柱状图

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

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

相关文章

【iDRAC】突破错误信息壁垒,利用iDRAC提高效率

序 面对旧服务器上的黄色警示灯&#xff0c;工作人员往往陷入困惑。更糟糕的是&#xff0c;如果该服务器转手多次&#xff0c;缺少root用户密码和IP地址&#xff0c;那么要访问服务器iDRAC就更困难了。但是出现问题的硬件蕴含着重要信息&#xff0c;为了解开这个谜团&#xff…

Linux Docker图形化工具Portainer如何进行远程访问?

文章目录 前言1. 部署Portainer2. 本地访问Portainer3. Linux 安装cpolar4. 配置Portainer 公网访问地址5. 公网远程访问Portainer6. 固定Portainer公网地址 前言 Portainer 是一个轻量级的容器管理工具&#xff0c;可以通过 Web 界面对 Docker 容器进行管理和监控。它提供了可…

【教3妹学编程-算法题】最大化数组末位元素的最少操作次数

3妹&#xff1a;“太阳当空照&#xff0c;花儿对我笑&#xff0c;小鸟说早早早&#xff0c;你为什么背上炸药包” 2哥 :3妹&#xff0c;什么事呀这么开发。 3妹&#xff1a;2哥你看今天的天气多好啊&#xff0c;阳光明媚、万里无云、秋高气爽&#xff0c;适合秋游。 2哥&#x…

群晖7.2版本套件安装CloudDriver2

CloudDrive是一个强大的多云盘管理工具&#xff0c;为用户提供包含云盘本地挂载的一站式的多云盘解决方案。挂载到本地后&#xff0c;可以像本地文件一样进行操作。 一、套件库添加矿神源 二、安装CloudDriver2 1、搜索安装 搜索框输入【clouddrive】&#xff0c;搜索到Clou…

汽车 CAN\CANFD数据记录仪

CAN FD数据记录仪解决汽车电子数据记录与偶发性故障查找问题。 1、脱机离线记录两路CAN/CANFD通道数据 脱机离线记录两路CAN/CANFD通道数据&#xff0c;可记录6个月数据。每个通 道单独设置触发记录模式、触发前预记录报文个数&#xff08;默认1000帧&#xff09;及 过滤规则&a…

spring中的DI

【知识要点】 控制反转&#xff08;IOC&#xff09;将对象的创建权限交给第三方模块完成&#xff0c;第三方模块需要将创建好的对象&#xff0c;以某种合适的方式交给引用对象去使用&#xff0c;这个过程称为依赖注入&#xff08;DI&#xff09;。如&#xff1a;A对象如果需要…

【LeetCode刷题-滑动窗口】--1695.删除子数组的最大得分

1695.删除子数组的最大得分 注意&#xff1a;子数组为不同元素 方法&#xff1a;滑动窗口 使用变长滑动窗口寻找数组nums中的以每个下标作为结束下标的元素各不相同的最长子数组。用[start,end]表示滑动窗口&#xff0c;初始时startend0&#xff0c;将滑动窗口的右端点end向右…

北京君正客户应用案例:掌静脉3D人脸猫眼视屏智能锁

凯迪仕在今年4月发布了智能锁旗舰新品K70 Pro Max掌静脉3D人脸猫眼视屏智能锁&#xff0c;随即这款新品也成了行业热议的焦点。凯迪仕每次新品都力求突破精益求精&#xff0c;不仅追求科技感、高级感与品质感&#xff0c;而且赋予科技温度&#xff0c;带来人文化的关怀。K70 Pr…

矩阵起源到此一游:千岛湖(内含海量招聘岗位)

秋意渐浓&#xff0c;正值金秋时节&#xff0c;MO 也出去玩啦&#xff01; 海量招聘岗位&#xff0c;点击链接一键查看&#xff0c;就等您来&#xff1a; 「矩阵起源招聘」2023年矩阵起源招聘信息-BOSS直聘​www.zhipin.com/gongsi/job/59a68fecfe392c0d1nd93N-4EVU~.html​编…

微软Surface/Surface pro笔记本电脑进入bios界面

微软Surface笔记本电脑进入bios界面 方法一推薦這種方法&#xff1a;Surface laptop 进BIOS步骤 开机后&#xff0c;不停按音量键进bios界面。 方法二&#xff1a;Surface Book、Surface Pro进bios步骤 1、关闭Surface&#xff0c;然后等待大约10秒钟以确保其处于关闭状态。…

智能运维监控告警6大优势

随着云计算和互联网的高速发展&#xff0c;大量应用需要横跨不同网络终端&#xff0c;并广泛接入第三方服务(如支付、登录、导航等)&#xff0c;IT系统架构越来越复杂。 快速迭代的产品需求和良好的用户体验&#xff0c;需要IT运维管理者时刻保障核心业务稳定可用&#xff0c;…

二叉树题目:统计二叉树中好结点的数目

文章目录 题目标题和出处难度题目描述要求示例数据范围 解法一思路和算法代码复杂度分析 解法二思路和算法代码复杂度分析 题目 标题和出处 标题&#xff1a;统计二叉树中好结点的数目 出处&#xff1a;1448. 统计二叉树中好结点的数目 难度 5 级 题目描述 要求 给定一…

网络编程TCP/UDP

1 网络通信概述 1.1 IP 和端口 所有的数据传输&#xff0c;都有三个要素 &#xff1a;源、目的、长度。 怎么表示源或者目的呢&#xff1f;请看图 所以&#xff0c;在网络传输中需要使用“IP 和端口”来表示源或目的。 1.2 网络传输中的 2 个对象&#xff1a;server 和 clie…

CodeMeter软件保护及授权管理解决方案(一)

概述 CodeMeter是德国威步&#xff08;Wibu-Systems AG&#xff09;2004年1月推出的软件加密及授权管理综合解决方案&#xff0c;用于软件保护实现防盗版、软件授权管理实现软件货币化、以及数据加密实现数字资产保护。 使用CodeMeter综合解决方案&#xff0c;可以实现以下价…

Java中的Maven项目使依赖和自己写的代码的分开的部署的部署方式

文章目录 优点maven中配置执行maven 打包项目部署查看服务启动状态 优点 随着项目的功能越来越多&#xff0c;如果把所有代码都打包到一个jar里&#xff0c;这样不利于传输。把源码和依赖包分开。这样如果依赖包没有变化的话&#xff0c;再此部署时&#xff0c;就不需要往服务…

C++之使用std::move与否实例区别(二百五十五)

简介&#xff1a; CSDN博客专家&#xff0c;专注Android/Linux系统&#xff0c;分享多mic语音方案、音视频、编解码等技术&#xff0c;与大家一起成长&#xff01; 优质专栏&#xff1a;Audio工程师进阶系列【原创干货持续更新中……】&#x1f680; 人生格言&#xff1a; 人生…

香港优才计划获批概率跌破20%,拿香港身份越来越难了?

香港优才计划获批概率跌破20%&#xff0c;拿香港身份越来越难了&#xff1f; 截止10月31日&#xff0c;香港各类人才引进计划共收到18万4538宗申请&#xff0c;获批11万5741宗&#xff0c;整体“获批率”为62.72%。 具体到项目获批率&#xff1a; ①优才计划共收到63979宗申请&…

最终方案(乱)

为什么要在mos管上并一个快恢复二极管 因为电机成感性&#xff0c;为了在关断期间给它提供一个续流回路

单片机编程原则

多任务编程的概念 方式一&#xff1a;实时操作系统&#xff08;不建议新手使用&#xff09; 方式二 &#xff1a;裸机多任务模型 逻辑多任务的基本原理 把三个任务分别分为一个一个的片段 然后先执行任务一的第一个切片 执行第二个任务的第一个片段 执行第三个任务的第一个片…

SystemC 学习之与 Verilog 的混合仿真(十)

1、SC 与 Verilog 的通信方式 Systemc 和 verilog 通信方式有两种&#xff0c;一种是 PLI&#xff0c;但是 PLI 只能 verilog 调用 c/c&#xff0c;不能从 c/c 直接调用 verilog&#xff0c;想要从 c/c 调用 verilog 的话&#xff0c;需要先用 verilog 调用 c/c 函数&#xff…