Echarts实现动态背景

news2025/3/12 6:55:20

最近在公司工作中,遇到一个图表的需求,要求实现背景图是可以动态跟随最高点而改变位置的。

好玩的是,我实现了效果,但是没在官方配置项看到我这个用法的出处,所以记录一下。

话不多说,配置项也没什么好解释的,直接上代码!!!

      that.chartOption = {
        grid: {
          left: '3%',
          top: '15%', //8原本
          right: '8%',
          bottom: '28%',
          containLabel: true,
          show: true,
          backgroundColor: {
            //这个就是控制背景色的,我使用的是渐变,offset是我动态计算的,后面会贴方法。
            colorStops: [
              { offset: 0, color: 'blue' },
              { offset: that.percentage, color: 'red' },
              { offset: 1, color: 'blue' }
            ]
          }
        },
        tooltip: {
          trigger: 'axis'
        },
        xAxis: {
          top: '15%',
          name: '距离',
          nameTextStyle: {
            color: '#fff'
          },
          type: 'category',
          boundaryGap: false, //是否留白
          axisLine: { show: true }, //显示轴
          axisTick: { show: false }, //轴刻度线
          axisLabel: { show: true, color: '#fff' }, //显示轴的数值和颜色
          data: xData
          // min: this.startPoint,
          // max: this.endPoint
        },
        yAxis: {
          name: '幅值',
          nameTextStyle: {
            color: '#fff'
          },
          type: 'value',
          // 定制折线图的范围
          max: 1000,
          min: 0,
          splitLine: { show: false }, //显示背景线轴
          axisLine: { show: true }, //显示轴
          axisTick: { show: false }, //轴刻度线
          axisLabel: { show: true, color: '#fff' } //显示轴的数值和颜色
        },
        dataZoom: [
          {
            type: 'inside',
            show: true,
            xAxisIndex: [0]
            // start: 2109,
            // end: 2150
          },
          {
            type: 'inside',
            show: true,
            yAxisIndex: [0],
            bottom: '30%'
          }
        ],
        series: [
          {
            symbol: 'none', //去折线上的点
            type: 'line',
            itemStyle: {
              normal: {
                color: '#3AFFF3',
                lineStyle: {
                  color: '#3AFFF3',
                  width: '1'
                }
              }
            },
            data: yData,
            markPoint: {
              symbolSize: 15, // 设置异常点的大小
              symbol: 'circle',
              data: errorLocations,
              label: {
                show: true,
                color: '#fff',
                position: 'right' // 将字样显示在标记点的上方
              },
              itemStyle: {
                borderWidth: 4, // 设置边框宽度
                borderColor: '#FF3400', // 设置边框颜色
                color: '#FFA500' // 设置标记点颜色为黄色
              }
            },
            markLine: {
              symbol: ['none', 'none'],
              label: { show: false },
              lineStyle: {
                color: '#608cc6',
                type: 'solid'
              },
              animation: false,
              data: [
                { xAxis: 1 },
                { xAxis: 2 },
                { xAxis: 3 },
                { xAxis: 4 },
                { xAxis: 5 },
                { xAxis: 6 },
                { xAxis: 7 },
                { xAxis: 8 },
                { xAxis: 9 },
                { xAxis: 10 },
                { xAxis: 11 },
                { xAxis: 12 },
                { xAxis: 13 },
                { xAxis: 14 },
                { xAxis: 15 },
                { xAxis: 16 },
                { xAxis: 17 },
                { xAxis: 18 },
                { xAxis: 19 },
                { yAxis: 10000 }
              ]
            }
          }

        ]
      }

下面是计算offset的方法,用来最大点位置整个x轴的相对位置。

      function calculatePercentageOfMax(array) {
        // 找到数组中的最大值及其索引位置
        const max = Math.max(...array)
        const index = array.indexOf(max)

        // 计算最大值位置相对于数组长度的百分比
        const percentage = index / (array.length - 1)

        return percentage
      }

这样就可以实现背景色动态跟随变化了。

echarts官网我确实没看到可以用那个api,可能是没写出来,没去看源码,有大佬知道的话,可以在下方留言!

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

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

相关文章

Redis的安装及详解

1.Redis介绍? 1.1 Redis是什么? Redis(Remote Dictionary Server,远程字典服务器)是一个开源免费的,用C语言编写的一个高性能的分布式内存数据库,基于内存运行并支持持久化的NoSQL数据库。是当前最热门的…

IPv6 address status lifetime

IPv6 地址状态转换 Address lifetime (地址生存期) 每个配置的 IPv6 单播地址都有一个生存期设置,该设置确定该地址在必须刷新或替换之前可以使用多长时间。某些地址设置为“永久”并且不会过期。“首选”和“有效”生存期用于指定其使用期限和可用性。 自动配置的…

开源与在线 M3U8 Downloader 项目介绍及使用指南

M3U8 是一种用于播放列表格式的文件类型,广泛应用于流媒体服务中,特别是 HLS(HTTP Live Streaming)协议。它包含了一系列的 TS(Transport Stream)视频片段地址,使得视频能够分段加载&#xff0c…

亿联 AM610 M.2 SSD PCIE 3.0X2 128GB测评

亿联 AM610 M.2 SSD PCIE 3.0X2 128GB测评 厂商:union memory国产固态硬盘SSD。 接口:PCIE 3.0X2 协议:支持NVME 1.协议 固件:固件版本号11.82 读取量:18TB左右 写入量:14TB左右,NAND闪存约被编…

win10/11磁盘管理

win10/11磁盘管理 合并磁盘分区的前提是你的两个磁盘区域是相邻的,比如如下: 如果需要吧这个磁盘进行分解,你可以选择压缩一部分磁盘或者是直接删除卷 我这里的话,因为压缩出来的卷和C盘好像是不相邻的(我之前做过&…

kettle从入门到精通 第七十三课 ETL之kettle kettle调用http分页接口教程

场景:kettle调用http接口获取数据(由于数据量比较大,鉴于网络和性能考虑,所以接口是个分页接口)。 方案:构造页码list,然后循环调用接口。 1、总体设计 1)、初始化分页参数pageNum1…

ICP、ISP及IAP烧录介绍

文章目录 不同的程序下载方式一、ICP:In-Circuit Programming二、ISP:In-System Programming三、IAP:In-Application ProgrammingIAP方案设计不同的程序下载方式 目前,单片机的程序烧录方式可以分为三种:ICP、ISP、IAP。 ICP:In Circuit Programing,在电路编程; ISP:…

【LLM】PISSA:一种高效的微调方法

前言 介绍PISSA前,先简单过一下LLMs微调经常采用的LoRA(Low-Rank Adaptation)微调的方法,LoRA 假设权重更新的过程中有一个较低的本征秩,对于预训练的权重参数矩阵 W 0 ∈ R d k W_0 ∈ R^{dk} W0​∈Rdk&#xff0c…

git常用操作汇总大全

👏作者简介:大家好,我是爱吃芝士的土豆倪,24届校招生Java选手,入职小红书广告投放开发,很高兴认识大家🔥如果感觉博主的文章还不错的话,请👍三连支持👍一下博…

一图解释:监听dom滚动条是否滚动到底部

scrollTop:一个元素的内容垂直滚动的高度;scrollHeight :一个元素在不使用滚动条的情况下为了适应视口中所用内容所需的最小高度,包含内边距(padding),不包含外边距(margin&#xff…

NIST 电子病历中的临床决策部分的认证

写在正文之前 关于临床决策,有专门的行业协会收集并发布,我曾经注册过美国的一个网站,然后定期就会收到邮件通知新增了多少条临床决策。我记得我注册的是 NQF: Home (qualityforum.org) NQF: Home 美国国家标准与技术研究院(Nat…

【SpringCloud-Seata源码分析2】

文章目录 分支事务注册-客户端分支事务服务端的执行 分支事务注册-客户端 第一篇我们将全局事务启动,以及开启源码分析完成了,现在我们需要看一下分支事务注册。 我们分支事务的开始需要从PreparedStatementProxy#executeUpdate中去看。 public class…

MatLab手把手搭建FOC控制环路(全部使用matlab自带模块)

MatLab手把手搭建FOC控制环路(全部使用matlab自带模块) Matlab添加模块只需要在空白处双击鼠标左键,输入模块的名字。 添加PMSM模块: Permanent Magnet Synchronous Machine 参数选择: 添加逆变器Two-Level Conver…

CentOS 7 安装部署Cassandra4.1.5

一、Cassandra的介绍 Cassandra是一套开源分布式NoSQL数据库系统。它最初由Facebook开发,用于储存收件箱等简单格式数据,集GoogleBigTable的数据模型与Amazon Dynamo的完全分布式的架构于一身Facebook于2008将 Cassandra 开源,此后&#xff0…

Jmeter5.X性能测试【完整版】

目录 一、Http基础协议和解析 1、浏览器的B/S架构和C/S架构 (1)CS架构 (2)BS架构 (3)URL理解 2、Http超文本传输协议 (1)含义 # 协议 # json协议 # xml协议 (…

unity中使用commandbuffer将自定义画面渲染到主相机上

CommandBuffer 保存渲染命令列表(例如设置渲染目标或绘制给定网格)。您可以指示 Unity 在内置渲染管线中的各个点安排和执行这些命令,因此,您可以自定义和扩展 Unity 的渲染功能。 这句话意味着你可以通过command buffer让相机渲…

视频汇聚安防综合管理平台EasyCVR支持GA/T 1400视图库标准及设备接入配置

一、概述 视频汇聚安防综合管理平台EasyCVR视频监控系统已经与公安部GA/T 1400视图库标准协议实现了对接,即《公安视频图像信息应用系统》。 安防监控系统EasyCVR支持采用GA/T 1400进行对接,可实现人脸数据使用的标准化、合规化。其采用统一接口对接雪…

替换或重写Tomcat内置的404页面

替换或重写Tomcat内置的404页面 准备一个Tomcat隐藏Tomcat的相关信息纯净版的Tomcat解决Tomcat启动乱码的问题 替换或重写Tomcat内置的404页面创建新的首页和错误页面页面代码如下所示:创建首页index.html创建error_404.html页面创建其他错误页面创建编写web.xml&am…

【C++】优先队列的使用及模拟实现

💗个人主页💗 ⭐个人专栏——C学习⭐ 💫点击关注🤩一起学习C语言💯💫 目录 导读 一、什么是优先队列 二、优先队列的使用 1. 优先队列的构造 2. 优先队列的基本操作 3. 使用示例 三、优先队列模拟实…

C++初学者指南第一步---12.引用

C初学者指南第一步—12.引用 文章目录 C初学者指南第一步---12.引用1. 功能(和限制)1.1 非常量引用1.2 常量引用1.3 auto引用 2.用法2.1 范围for循环中的引用2.2 常量引用的函数形参2.3 非常量引用的函数形参2.4 函数参数的选择:copy / const…