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

实现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);
	      }
	  })
}

柱状图

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

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

相关文章

linux下安装python3.8(有坑)

1安装包下载 ###直接官网下载linux版本&#xff0c;找到对应的包 https://www.python.org/downloads/source/2安装包解压 tar -zxvf Python-3.8.0.tgz 3编译安装 1&#xff09;设置安装目录&#xff0c;比如在此创建在 /usr/local/python3 &#xff1a; mkdir -p /usr/loca…

解决计算机丢失msvcr71.dll问题,总结5种解决方法分享

由于各种原因&#xff0c;计算机在使用的过程中可能会出现一些问题&#xff0c;其中之一就是丢失msvcr71.dll文件。这个问题可能会导致计算机无法正常运行某些程序或功能&#xff0c;给我们的生活和工作带来困扰。那么&#xff0c;当我们遇到这个问题时&#xff0c;应该如何解决…

ROS 学习应用篇(七)ROS中的坐标变换管理之tf初探

坐标变化是机器人中很重要的内容&#xff0c;但是要是概括下来无非就是旋转和平移矩阵。 小海龟跟随实验 做的是两个小海龟之间的跟随&#xff0c;其实就相当于视觉设备和本体设备见有一定的位置差在ros平台下tf坐标变化的实验 首先安装海龟tf变换包 新开终端输入 sudo apt…

某个订单项目记录,涉及MQ消息处理、分布式问题、幂等性等问题解决设计

文章目录 消息队列&#xff08;Message Queue&#xff09;什么场景下&#xff0c;使用消息队列&#xff1f;消息队列 概述 RabbitMQ 消息队列RabbitMQ 概念名词 概念RabbitMQ 流程 RabbitMQ 安装RabbitMQ 页面介绍Exchange 交换机类型Spring Boot 整合RabbitMQAmqpAdmin 与 Rab…

git 构建报错

钉钉插件]当前任务未配置机器人&#xff0c;已跳过 org.codehaus.groovy.control.MultipleCompilationErrorsException: startup failed: WorkflowScript: 4: Tool type “maven” does not have an install of “maven-3.8.8” configured - did you mean “Maven-3.8.8”? …

iOS项目集成RN(0)

iOS原有项目集成RN 环境安装RN环境搭建Node & Watchman 安装 创建新应用iOS项目集成RN如果没有iOS项目&#xff0c;新建一个 swift&#xff0c; storyboard项目&#xff0c; 名字&#xff1a;RNTest新建一个 RNDemo目录&#xff0c;一个iOS子目录&#xff0c; 把iOS相关的拷…

系列七、栈 堆

一、概述 栈也叫栈内存&#xff0c;主管Java程序的运行&#xff0c;是在线程创建时创建&#xff0c;线程销毁时销毁&#xff0c;它的生命周期是跟随线程的生命周期&#xff0c;线程结束&#xff0c;栈内存也就释放&#xff0c;对于栈来说不存在垃圾回收&#xff0c;只要线程一结…

Vue|props配置

props是Vue中用于传递数据的属性。通过在子组件的选项中定义props属性&#xff0c;可以指定子组件可以接收的数据以及其他配置选项。父组件可以通过在子组件上使用特定的属性来传递数据。 目录 目录 App.vue 什么是App.vue 组件引用 props配置 组件复用 案例1&#xff1a…

【Unity】文件信息的存储和解析(C#代码)

目录 文件存储 两种文件信息解析方法 文件加密处理 文件解密处理 全部代码 文件存储 一些游戏案例开发过程中的一些数据转换成Json格式&#xff0c;然后存到指定的位置 //3.将对象转化为JsonList<Hokag> hokagList new List<Hokag>(){new Hokag(){Name"…

来听B站音乐UP主从容老师讲解GuitarPro和Earmaster

许久没发文了&#xff0c;最近在B站刷到了一位音乐UP主从容Free&#xff0c;他把自己对GuitarPro和Earmaster这2款软件的使用感受进行了详细分享&#xff0c;还没看过的朋友可以戳下面的链接跳转到小破站看完整的&#xff1a; 我不允许还有人不知道这个学吉他的神器&#xff0…

【EI会议征稿】第九届电气、电子和计算机工程研究国际学术研讨会 (ISAEECE 2024)

第九届电气、电子和计算机工程研究国际学术研讨会 (ISAEECE 2024) 2024 9th International Symposium on Advances in Electrical, Electronics and Computer Engineering 第九届电气、电子和计算机工程研究国际学术研讨会(ISAEECE 2024&#xff09;将于2024年3月1-5日在南…

接口测试自动化测试的总结与思考,超详细的~

服务端接口测试介绍 什么是服务端? 一般所说的服务端是指为用户在 APP 或 PC 使用的互联网功能提供数据服务的背后的一切。以天猫精灵智能音箱系列的产品链路为例&#xff0c;服务端便是网关&#xff08;包括网关在内&#xff09;之后的链路。 什么是接口? 官方点说&#…

这种考勤方式,居然能轻松实现!

随着科技的不断发展&#xff0c;人脸识别技术在各个领域得到了广泛的应用&#xff0c;其中之一就是人脸考勤系统。 传统的考勤方式可能存在一些不便之处&#xff0c;例如卡片丢失、打卡漏报等问题&#xff0c;而三维人脸考勤系统以其高精度、高安全性的特点&#xff0c;逐渐成为…

Unittest框架--自动化

Python中方法的传递 参数化 pip install parameterized -i https://pypi.douban.com/simple需求&#xff1a;验证Tpshop登录 # 断言参数化 import time import unittest from parameterized import parameterized from selenium import webdriver from selenium.webdriver.co…

【开源】基于JAVA的智能停车场管理系统

项目编号&#xff1a; S 005 &#xff0c;文末获取源码。 \color{red}{项目编号&#xff1a;S005&#xff0c;文末获取源码。} 项目编号&#xff1a;S005&#xff0c;文末获取源码。 目录 一、摘要1.1 项目介绍1.2 项目录屏 二、研究内容A. 车主端功能B. 停车工作人员功能C. 系…

Docker 容器中的网络优化与 DNS 缓存清理

在使用Docker 18.03.1-ce版本在Ubuntu 18.04 LTS上运行多个Docker容器时&#xff0c;我发现当使用requests库发送请求到某个主机名时&#xff0c;响应速度非常慢。在本例中&#xff0c;每个容器都有自己的CherryPy服务器&#xff0c;并通过requests.get(http://main:8083)或req…

2022CCPC绵阳 ACGHM

Dashboard - 2022 China Collegiate Programming Contest (CCPC) Mianyang Onsite - Codeforces C.Catch You Catch Me 题意 思路 首先注意到贡献可以按深度统计&#xff0c;对于每个深度dep&#xff0c;贡献是在dep深度中属于的子树种类数&#xff0c;如果在该深度中子树存在…

python文件读写练习题--随机出10套试卷

要求就是&#xff1a;10套试卷题目顺序不同&#xff0c;答案顺序不同 import random import os city {河北省:石家庄市,山西省:太原市,辽宁省:沈阳市,吉林省:长春市,黑龙江省:哈尔滨市,江苏省:南京市,浙江省:杭州市,安徽省:合肥市,福建省:福州市,江西省:南昌市}#在当前路径下…

如何深度了解汤泉场所?VR全景给你答案

天气逐步转凉&#xff0c;温泉、水会这些室内汤泉场所开始登上消费的主战场。伴随着人们物质生活水平的提高&#xff0c;人们对休闲养生会馆的要求也愈发旺盛&#xff0c;汤泉场所也逐渐从单一的洗浴开始向休闲、娱乐、保健、桑拿等多种业态形式发展&#xff0c;那么大家如何深…

如何利用SD-WAN优化云时代的网络连接

在多云时代下&#xff0c;企业的网络连接需求面临着诸多挑战和变化。随着企业应用的日益复杂和分散&#xff0c;网络连接也变得更加复杂。企业需要同时连接多个云服务商、数据中心、分支机构和移动用户等&#xff0c;并保证网络连接的稳定性和可靠性。同时&#xff0c;企业对于…