echart 图表添加数据分析功能,(右上控制选择)

echart 图表添加数据分析功能,可区域选择数据,右上按钮,控制echart行为

    chart.on('globalcursortaken', onGlobalcursortaken); //绑定事件chart.off("brushSelected");//解绑事件处理函数chart.on('brushSelected', renderBrushed);

在这里插入图片描述

   getBarDev2(eIndex, eTimeArr, eSeriesArr, eSensorId, eDeviceId, eDeviceType) {//console.log('EEEEEEE', eIndex, eTimeArr, eSeriesArr, eSensorId, eDeviceId, eDeviceType)this.$refs.chart.removeAttribute('_echarts_instance_')const chart = this.$echarts.init(this.$refs.chart, 'light')var option;option = {title: {text: eSensorId + " : " + eDeviceId,textStyle: {//文字颜色color: '#fff',}},textStyle: {color: '#fff',//'red',字体颜色},legend: {textStyle: {//文字颜色color: '#fff',}},tooltip: {trigger: 'axis',show: true,formatter: (params) => {var listData = paramsvar list = []var listItem = ''var html = ''html += '<span>' + listData[0].name + '<span><br>'for (var i = 0; i < listData.length; i++) {html += '<i style="display: inline-block;width: 10px;height: 10px;background: ' +listData[i].color +';margin-right: 5px;border-radius: 50%;}"></i><span style="width:70px; display:inline-block;">' +listData[i].seriesName +': ' +listData[i].data +'</span><br>'}list.push(html)listItem = list.join('<br>')return '<div class="showBox">' + listItem + '</div>'}},grid: {left: '3%',right: '4%',// bottom: '5%',// containLabel: true},xAxis: {type: 'category',boundaryGap: false,data: eTimeArr,axisLabel: {textStyle: {color: "#2afcfd",},},axisLine: {lineStyle: {color: ["#2afcfd"],width: 0,type: "dashed",},},splitLine: {show: true,lineStyle: {color: ["#315070"],width: 1,type: "dashed",},},},yAxis: {type: 'value',min: 'dataMin',max: "dataMax",axisLabel: {textStyle: {color: "#fff",},boundaryGap: [0, '100%']},axisLine: {lineStyle: {onZero: false,color: ["#859fce"],// width: 0,// type: "dashed",},},splitLine: {show: true,lineStyle: {color: ["#315070"],width: 1,type: "dashed",},},},dataZoom: [{type: 'slider',show: true,xAxisIndex: [0],bottom: "auto",}],toolbox: {feature: {brush: {title: {lineX: '数据分析'}},//自定义关闭按钮myClear: {show: true,title: '退出分析',icon: 'path://M22,14.7l30.9,31 M52.9,14.7L22,45.7 M4.7,16.8V4.2h13.1 M26,4.2h7.8 M41.6,4.2h7.8 M70.3,16.8V4.2H57.2 M4.7,25.9v8.6 M70.3,25.9v8.6 M4.7,43.2v12.6h13.1 M26,55.8h7.8 M41.6,55.8h7.8 M70.3,43.2v12.6H57.2',onclick: function () {//brush状态chart.dispatchAction({type: 'takeGlobalCursor'});//清除选区chart.dispatchAction({type: 'brush',areas: []});}},}},brush: {toolbox: ['lineX'],xAxisIndex: 0,throttleType: 'debounce',throttleDelay: 600,//『单击清除所有选框』removeOnClick: false},series: eSeriesArr};chart.setOption(option, true)//brush状态事件chart.on('globalcursortaken', onGlobalcursortaken);function onGlobalcursortaken(params) {//可以根据 params.brushOption.brushType = false 来判断是否退出刷选状态。此处无论进入或者退出状态都清空选取即可chart.dispatchAction({type: 'brush',areas: []});}chart.off("brushSelected");//解绑事件处理函数(可根据情况而定是否需要,这里我这边会重绘几次表,所以需要解绑事件处理函数)。chart.on('brushSelected', renderBrushed);function renderBrushed(params) {// console.log('renderBrushed', params);var brushed = [];var brushComponent = params.batch[0];var selArea = params.batch[0].areas[0] ? params.batch[0].areas[0].coordRange : ''var selIdxs = []var selTimes = []var selDatas = []for (var sIdx = selArea[0]; sIdx <= selArea[1]; sIdx++) {selIdxs.push(sIdx)selTimes.push(eTimeArr[sIdx])}eSeriesArr.forEach((e, i) => {var obj = {name: e.name,data: []}selDatas.push(obj)selIdxs.forEach(item => {selDatas[i].data.push(e.data[item])});});// console.log('selTimes', selTimes)// console.log('selDatas', selDatas)//最大值,最小值,最大相邻差,最大差值// var paramsArr = params.batch[0].selected// console.log('paramsArr', paramsArr)selDatas.forEach((e, i) => {e['startTime'] = selTimes[0]e['endTime'] = selTimes[selTimes.length - 1]e['maxVal'] = Math.max(...e.data)e['minVal'] = Math.min(...e.data)e['maxGap'] = maximumGap(e.data)e['maxDiff'] = maximunDiff(e.data)});// console.log('selDatas', selDatas)// console.log('params', params)if (selIdxs.length > 0) {chart.setOption({tooltip: {show: true,formatter: function (params) {selDatas.forEach((e, i) => {params.forEach((pe, pi) => {if (e.name == pe.seriesName) {e['color'] = pe.color}});});var list = []var listItem = ''var html = ''html += '<span>' + selDatas[0].startTime + '~' + selDatas[0].endTime + '<span><br>'selDatas.forEach((e, i) => {if (e.color) {html +="<div style='font-size: 14px; font-weight:bold;'>" +"<div class='yuan' style='width: 12px;height: 12px;background: #ffffff;border-radius: 50%;display: inline-block;border: 3px solid " + e.color + "; '></div>" +" 曲线: <span>" + e.name + "</span>" +"</div>" +"<p style='font-size: 12px;'>最大值: " + e.maxVal + "; 最小值: " + e.minVal + "</p>" +"<p style='font-size: 12px;'>最大相邻差: " + e.maxGap + "; 最大差值: " + e.maxDiff + "</p>"}});list.push(html)listItem = list.join('<br>')return '<div style="margin: 0px 10px 10px 10px; ">' + listItem + '</div>'},}});} else {chart.setOption({tooltip: {show: true,formatter: (params) => {var listData = paramsvar list = []var listItem = ''var html = ''html += '<span>' + listData[0].name + '<span><br>'for (var i = 0; i < listData.length; i++) {html += '<i style="display: inline-block;width: 10px;height: 10px;background: ' +listData[i].color +';margin-right: 5px;border-radius: 50%;}"></i><span style="width:70px; display:inline-block;">' +listData[i].seriesName +': ' +listData[i].data +'</span><br>'}list.push(html)listItem = list.join('<br>')return '<div class="showBox">' + listItem + '</div>'}}});}function maximumGap(nums) {if (nums) {if (nums.length < 2) return 0nums.sort((a, b) => a - b)let max = nums[1] - nums[0]for (let i = 0; i < nums.length - 1; i++) {max = Math.max(max, nums[i + 1] - nums[i])}return max.toFixed(2)}}function maximunDiff(arr) {var max = Math.max.apply(null, arr);var min = Math.min.apply(null, arr);return (max - min).toFixed(2);}// brushSelected over }//over},

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

mmdetection基于 PyTorch 的目标检测开源工具箱 入门教程

安装环境 MMDetection 支持在 Linux&#xff0c;Windows 和 macOS 上运行。它需要 Python 3.7 以上&#xff0c;CUDA 9.2 以上和 PyTorch 1.8 及其以上。 1、安装依赖 步骤 0. 从官方网站下载并安装 Miniconda。 步骤 1. 创建并激活一个 conda 环境。 conda create --name…

Java 中使用 ES 高级客户端库 RestHighLevelClient 清理百万级规模历史数据

&#x1f389;工作中遇到这样一个需求场景&#xff1a;由于ES数据库中历史数据过多&#xff0c;占用太多的磁盘空间&#xff0c;需要定期地进行清理&#xff0c;在一定程度上可以释放磁盘空间&#xff0c;减轻磁盘空间压力。 &#x1f388;在经过调研之后发现&#xff0c;某服务…

SpringCloud学习笔记(四)_ZooKeeper注册中心

基于Spring Cloud实现服务的发布与调用。而在18年7月份&#xff0c;Eureka2.0宣布停更了&#xff0c;将不再进行开发&#xff0c;所以对于公司技术选型来说&#xff0c;可能会换用其他方案做注册中心。本章学习便是使用ZooKeeper作为注册中心。 本章使用的zookeeper版本是 3.6…

vue中form和table标签过长

form标签过长 效果&#xff1a; 代码&#xff1a; <el-form-item v-for"(item,index) in ticketEditTable1" :label"item.fieldNameCn" :propitem.fieldName :key"item.fieldNameCn" overflow"":rules"form[item.fieldName…

【Unity】Text文本组件的一些操作

Unity的Text组件的几种常见的操作方法 Text组件是Unity中用于在UI界面上显示文本的组件。它包含了一些常见的属性和方法&#xff0c;可以用来控制文本的内容、外观和交互。以下是一些常见的Text组件的操作&#xff1a; 设置文本内容&#xff1a;通过直接在Unity编辑器中的Text…

【方案】基于AI边缘计算的智慧工地解决方案

一、方案背景 在工程项目管理中&#xff0c;工程施工现场涉及面广&#xff0c;多种元素交叉&#xff0c;状况较为复杂&#xff0c;如人员出入、机械运行、物料运输等。特别是传统的现场管理模式依赖于管理人员的现场巡查。当发现安全风险时&#xff0c;需要提前报告&#xff0…

C语言基础之——操作符(上)

本篇文章&#xff0c;我们将展开讲解C语言中的各种常用操作符&#xff0c;帮助大家更容易的解决一些运算类问题。 这里提醒一下小伙伴们&#xff0c;本章知识会大量涉及到二进制序列&#xff0c;不清楚二进制序列的小伙伴&#xff0c;可以去阅读我的另一篇文章《数据在内存中的…

行业追踪,2023-08-23

自动复盘 2023-08-23 凡所有相&#xff0c;皆是虚妄。若见诸相非相&#xff0c;即见如来。 k 线图是最好的老师&#xff0c;每天持续发布板块的rps排名&#xff0c;追踪板块&#xff0c;板块来开仓&#xff0c;板块去清仓&#xff0c;丢弃自以为是的想法&#xff0c;板块去留让…

养号自动化,指纹浏览器和RPA机器人解除烦恼

在这个充满科技魔力的时代&#xff0c;社交媒体已经成为人们生活的一部分&#xff0c;而Facebook更是我们分享欢乐、联络亲友的重要平台。然而&#xff0c;随之而来的是一个棘手的问题&#xff1a;如何保持账号的活跃度&#xff0c;而又不被沉重的养号工作压垮&#xff1f;别担…

江西抚州新能源汽车3d扫描零部件逆向抄数测量改装-CASAIM中科广电

汽车改装除了在外观方面越来越受到消费者的青睐&#xff0c;在性能和实用性提升上面的需求也是日趋增多&#xff0c;能快速有效地对客户指定汽车零部件进行一个改装&#xff0c;是每一个汽车改装企业和工程师的追求&#xff0c;也是未来消费者个性化差异化的要求。下面CASAIM中…

【Modbus通信实验三】数据切片问题

在做两个串口相互通信的实验中&#xff0c;当发送频率快一点时偶尔会遇到以下情景&#xff0c;即一次send中把原数据拆成两份发送&#xff0c;就会导致CRC校验错误。下图中6字节数据拆成42是把SetRThreshold()阈值设为2&#xff0c;当设为1的情况下则会拆成51。 一开始以为是缓…

有趣的数学 数学建模入门二 一些理论基础

一、什么是数学建模? 现实世界中混乱的问题可以用数学来解决&#xff0c;从而产生一系列可能的解决方案来帮助指导决策。大多数人对数学建模的概念感到不舒服&#xff0c;因为它是如此开放。如此多的未知信息似乎令人望而却步。哪些因素最相关&#xff1f;但正是现实世界问题的…

【网络】DNS | ICMP | NAT | 代理服务器

&#x1f431;作者&#xff1a;一只大喵咪1201 &#x1f431;专栏&#xff1a;《网络》 &#x1f525;格言&#xff1a;你只管努力&#xff0c;剩下的交给时间&#xff01; 前面几篇文章虽然讲介绍了整个网络通信的协议栈&#xff0c;我们也知道了完整的网络通信过程&#xff…

【Java 高阶】一文精通 Spring MVC - 数据验证(七)

&#x1f449;博主介绍&#xff1a; 博主从事应用安全和大数据领域&#xff0c;有8年研发经验&#xff0c;5年面试官经验&#xff0c;Java技术专家&#xff0c;WEB架构师&#xff0c;阿里云专家博主&#xff0c;华为云云享专家&#xff0c;51CTO 专家博主 ⛪️ 个人社区&#x…

数字化技术无限延伸,VR全景点亮智慧生活

随着互联网的发展&#xff0c;我们无时无刻不再享受着互联网给我们带来的便利&#xff0c;数字化生活正在无限延伸&#xff0c;各行各业也开始积极布局智能生活。要说智慧生活哪个方面应用的比较多&#xff0c;那应该就是VR全景了&#xff0c;目前VR全景已经被各个行业广泛应用…

android studio安装教程

1、android studio 下载 下载网址&#xff1a;Download Android Studio & App Tools - Android Developers 2、开始安装 因为不需要每次连接手机进行调试&#xff0c;android studio给我们提供了模拟器调试环境。 一般选择自定义安装&#xff0c;这样可选sdk以及下载路径…

Idea Maven 构建,运行Java程序,二次开发Jmeter

Idea Maven 构建 1. maven下载2. Idea 配置3. 配置Maven镜像4. 在Maven项目pom.xml中添加依赖5. 创建jar包&#xff0c;更新pom&#xff0c;执行代码 1. maven下载 【官网】https://maven.apache.org/download.cgi 【其他版本】https://dlcdn.apache.org/maven/maven-3/ 2. …

【案例】登录注册

<template><div class"loginhome"><Header :butShow"butShow"></Header><div class"formdiv"><div style"text-align:center;padding:10px;"><h3>你好登录账号{{ stauts 3? 注册:登录 }}…

servlet介绍,tomcat容器下载启动

1.1servlet是什么&#xff1f; servlet是一种java程序类&#xff0c;这些类继承了httpservlet类。这些类没有main方法&#xff0c;有两大对象request请求&#xff0c; response响应对象。这些类需要servlet容器才可以运行。 servlet 2.5 servlet 3.0 WEB-INF/web.xml <…

UE4与pycharm联合仿真的调试问题及一些仿真经验

文章目录 ue4与pycharm联合仿真的调试问题前言ue4端的debug过程pycharm端 一些仿真经验小结 ue4与pycharm联合仿真的调试问题 前言 因为在实验中我需要用到py代码输出控制信息给到ue4中&#xff0c;并且希望看到py端和ue端分别在运行过程中的输出以及debug调试。所以&#xf…