echarts 绘制垂直滚动热力图

news2024/11/16 3:15:49

问题1:提示功能无效
问题2:值筛选无效

  • 效果 在线浏览
    在这里插入图片描述

  • 下载echarts官网例子(heatmap Examples - Apache ECharts)
    稍作改动:

    • generateData 入参改为长度和宽度
    • noise.perlin2(i / 40, j / 20) + Math.random() * 5
    • y轴倒置
    • 指定zlevel为2
  • 通过定时器绘制第一行数据,并将绘制前的图像内容拷贝并下移一个单位

          const loop = (layers) => {
          // 计算每个像素的大小, 代码来自node_modules\echarts\lib\chart\heatmap\HeatmapView.js->_renderOnCartesianAndCalendar
          const coordSys = myChart._chartsViews[0].__model.coordinateSystem;
          var xAxis = coordSys.getAxis("x");
          var yAxis = coordSys.getAxis("y");
          // 图表图形区域一个单位像素的长宽
          let pWidth = xAxis.getBandWidth() + 0.5;
          let pHeight = yAxis.getBandWidth() + 0.5;
          
          // y轴倒置;左上角0,0;右下角199,99
          const ltP = myChart.convertToPixel({ seriesIndex: 0 }, [0, 0]);
          const rbP = myChart.convertToPixel({ seriesIndex: 0 }, [199, 99]);
          // 下移时的第一个单位像素(pixel为其中心,故需要修复)
          const insertP = myChart.convertToPixel({ seriesIndex: 0 }, [0, 1]);
    
          const width = rbP[0] - ltP[0] + pWidth;
          // const height = rbP[1] - ltP[1] + pHeight;
          const height = rbP[1] - ltP[1]; // 整体下移一行,舍去最后一行数据,故不加pHeight
    
          const imgData = getImgData(
            layers,
            width,
            height,
            ltP[0] - pWidth / 2, // 中点修复
            ltP[1] - pHeight / 2, // 中点修复
            pHeight
          );
          // 创建一行数据
          const data = generateData(200, 1);
          myChart.setOption({ series: [{ data }] });
          myChart._zr.painter._layers[layers.at(-1)].dom
            .getContext("2d")
            .putImageData(
              imgData,
              insertP[0] - pWidth / 2,
              insertP[1] - pHeight / 2
            );
          // [2,2.001] 2为zlevel数值,2.001应该为首次绘制创建的图层(首次绘制之后,数据更新会在2图层进行渲染;因此选择2.001作为每次旧数据渲染的图层)
          setTimeout(loop, 1000, [2, 2.001]);
        };
    
        const getImgData = (layers, width, height, offsetX, offsetY, pHeight) => {
          const canvas = document.createElement("canvas");
          canvas.height = height;
          canvas.width = width;
          const ctx = canvas.getContext("2d", { willReadFrequently: true });
          layers.forEach((it, i) => {
            const ctxTemp = myChart._zr.painter._layers[it].dom.getContext("2d");
            const da = ctxTemp.getImageData(
              offsetX,
              offsetY + pHeight * i,
              width,
              height - pHeight * i
            );
            ctx.putImageData(da, 0, pHeight * i);
          });
    
          return ctx.getImageData(0, 0, width, height);
        };
        
        // 启动定时器;第一次只截2.001图层的图片
        setTimeout(loop, 1000, [2.001]);
    

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

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

相关文章

如何使用Jellyfin+cpolar搭建私人影音平台实现无公网ip远程访问

文章目录 1. 前言2. Jellyfin服务网站搭建2.1. Jellyfin下载和安装2.2. Jellyfin网页测试 3.本地网页发布3.1 cpolar的安装和注册3.2 Cpolar云端设置3.3 Cpolar本地设置 4.公网访问测试5. 结语 1. 前言 随着移动智能设备的普及,各种各样的使用需求也被开发出来&…

2024年广东省安全员A证第四批(主要负责人)证模拟考试题库及广东省安全员A证第四批(主要负责人)理论考试试题

题库来源:安全生产模拟考试一点通公众号小程序 2024年广东省安全员A证第四批(主要负责人)证模拟考试题库及广东省安全员A证第四批(主要负责人)理论考试试题是由安全生产模拟考试一点通提供,广东省安全员A证…

HCIE之BGP路由策略(三)

BGP 一、路由控制工具ACLIP-PREFIXRoute-Policy 二、BGP路由控制通过更改MED属性调节选路通过更改Local_Pref属性调节选路理解ACL、IP-PREFIX和Route-Policy中permit、deny的含义 三、BGP属性特点-团体属性练习no-advertise属性ORF 一、路由控制工具 在对BGP进行路由控制之前&…

你认识哪几种树结构

二叉树,B,B,B*,R树 二叉树 使用二分结构存储数据,查找数据时,耗时最好可达到O(log2N)。但是二叉树没有平衡的特性,所以在经过一系列的增删后,可能会出现极端的情况,耗时…

利用Python实现中文文本关键词抽取的三种方法

文本关键词抽取,是对文本信息进行高度凝练的一种有效手段,通过3-5个词语准确概括文本的主题,帮助读者快速理解文本信息。目前,用于文本关键词提取的主要方法有四种:基于TF-IDF的关键词抽取、基于TextRank的关键词抽取、…

代理模式-C#实现

该实例基于WPF实现,直接上代码,下面为三层架构的代码。 目录 一 Model 二 View 三 ViewModel 一 Model using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks;namespace 设计模式练…

像搭乐高一样把模型拼在一起

琳琅满目的乐高积木,通过一块又一块的叠加,可以创造出各种栩栩如生的人物、景观等,不同的乐高作品相互组合,又能为爱好者带来新的创意。 我们把思路打开一点,在大模型(LLM)爆发的当下&#xff0…

SpringBlade微服务开发平台

采用前后端分离的模式,前端开源两个框架:Sword (基于 React、Ant Design)、Saber (基于 Vue、Element-UI)后端采用SpringCloud全家桶,并同时对其基础组件做了高度的封装,单独开源出一个框架:BladeToolBladeTool已推送至…

Nginx部署、Jenkins自动发布、搜索服务概述、ES部署与使用、消息队列概述、RabbitMQ部署及使用

案例1:HIS前端代码测试 Fontend主机部署Nginx #HIS前端代码为编译后代码,可直接部署在nginx上查看效果[rootFontend ~]# yum clean all; yum repolist -vTotal packages: 8,265[rootFontend ~]# yum -y install nginx.x86_64 #安装nginx…

第13章_泛型(集合中使用泛型,比较器中使用泛型,自定义泛型结构,泛型在继承上的体现,通配符的使用)

文章目录 第13章_泛型(Generic)本章专题与脉络1. 泛型概述1.1 生活中的例子1.2 泛型的引入 2. 使用泛型举例2.1 集合中使用泛型2.1.1 举例2.1.2 练习 2.2 比较器中使用泛型2.2.1 举例2.2.2 练习 2.3 相关使用说明 3. 自定义泛型结构3.1 泛型的基础说明3.2 自定义泛型类或泛型接…

[git] windows系统安装git教程和配置

一、何为Git Git(读音为/gɪt/)是一个开源的分布式版本控制系统,可以有效、高速地处理从很小到非常大的项目版本管理。 二、git安装包 有2种版本,Git for Windows Setup和Git for Windows Portable(便携版)两个版本都可以。 三、Git for Windows Por…

【GPU】深入理解GPU硬件架构及运行机制

深入理解GPU硬件架构及运行机制 作者:Tim在路上​ 曾看到有一篇名为《The evolution of a GPU: from gaming to computing》的文章。 这篇文章非常热烈的讨论了这些年GPU的进步,这引发了我们的一些思考: 为什么我们总说GPU比CPU要强大,既然…

ISCTF2023 RE FloweyRSA WP

64位无壳,但是进去连main函数都没有 这里应该是main的头部 这里是一个jmp的花指令 jnz short labela 跳转到labela是一段没用的代码 所以把它和labela全部NOP 往下翻,又是必然跳转至label1 把jz short label1到db 0的花指令全部NOP label3这里也是类似的…

【mongoDB】下载与安装教程

目录 1. 下载 2.安装 3.启动 mangoDB是否启动成功 ? 1. 下载 官网地址:https://www.mongodb.com/try/download/community 2.安装 3.启动 在此输入命令操作数据库 mangoDB是否启动成功 ? 在浏览器访问:http://127.0.0.1:27017/ 出现该页面表示m…

jQuery之ajax发送请求(table数据)

一般后端给我们的数据是这样的 比如下面是所有学员信息 访问网址:http://localhost:8080/student/all 前端,我们需要通过点击查询所有学员信息即可显示到下面列表中, 给查询全部学员按钮设置点击事件,点击就发送请求 $("…

Python模块与包:扩展功能、提高效率的利器

文章目录 一、引言1.1 模块与包对于Python开发的重要性1.2 Python作为拥有丰富生态系统的编程语言 二、为什么学习模块与包2.1 复用代码:利用现有模块与包加速开发过程2.2 扩展功能:通过模块与包提供的功能增强应用的能力 三、模块的使用3.1 导入模块&am…

OPENMV驱动云台实现颜色追踪

前言 本篇文章旨在记录我电赛期间学习OPENMV对颜色识别,以及通过串口通信的方式将坐标数据传给单片机,从而驱动舵机云台进行颜色追踪。 一、OPENMV色块识别追踪代码 # Single Color RGB565 Blob Tracking Example # # This example shows off single co…

防御保护---防火墙(安全策略、NAT策略实验)

防御保护---防火墙(安全策略、NAT策略实验) 1.实验需求2.实验说明及思路3.实验配置3.1 配置IP地址以及VLAN3.2 配置防火墙IP地址及划分区域3.3 配置防火墙安全策略3.4 配置防火墙NAT策略 1.实验需求 1.生产区在工作时间内可以访问服务器区,仅…

RabbitMQ 笔记一

概览: MQ基本概念 RabbitMQ入门 基本工作模 1.MQ是什么? MQ:Message Queue, 存储消息的中间件,是消息发送过程中的暂存容器,主要用于解决分布式系统进程间的通信。 分布式系统通信的两种方式:直接远程调用、借助第三…

npm,cnpm install报:Error: certificate has expired at TLSSocket.onConnectSecure

问题描述 最近发现前端项目 CI/CD 时失败,报下面的错误。npm淘宝镜像源证书过期导致的。 [npminstall:get] retry GET https://registry.npm.taobao.org/vue-router after 400ms, retry left 1, error: ResponseError: certificate has expired, GET https://reg…