echarts 绘制垂直滚动热力图

问题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.mfbz.cn/a/349001.html

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

相关文章

链表--226. 翻转二叉树/medium 理解度A

226. 翻转二叉树 1、题目2、题目分析3、复杂度最优解代码示例4、适用场景 1、题目 给你一棵二叉树的根节点 root ,翻转这棵二叉树,并返回其根节点。 示例 1: 输入:root [4,2,7,1,3,6,9] 输出:[4,7,2,9,6,3,1]示例 2&…

python:socket基础操作(3)-《udp接收消息》

收跟发基本核心思想差不多,只不过收信息需要去绑定一下端口,如果我们发信息没有绑定端口,那系统会随机分配一个,如果是收信息,那我们必须要求自己绑定端口才行 基础的接收数据 import socketudp_socket socket.socke…

华清远见作业第三十三天——C++(第二天)

思维导图: 题目: 自己封装一个矩形类(Rect),拥有私有属性:宽度(width)、高度(height), 定义公有成员函数: 初始化函数:void init(int w, int h) 更改宽度的函数:set_w(int w) 更改高度的函数…

如何使用 WebRTC 与 Kurento 建立视频会议 App

本文作者 WebRTC Ventures 工程师。在 RTC 2018 实时互联网大会上,WebRTC Ventures 的资深软件工程师,将围绕 WebRTC 开发带来经验分享。欢迎访问RTC 开发者社区,与更多WebRTC开发者交流经验。 了解 WebRTC 如何工作的一种简单方式是通过学习…

安全防御综合组网实验

题目 要求 生产区在工作时间可以访问服务器区,仅可以访问http服务器。办公区全天可以访问服务器区,其中10.0.2.20 可以访问FTP服务器和http服务器。10.0.2.10仅可以ping通10.0.3.10。办公区在访问服务器区时采用匿名认证的方式进行上网行为管理。办公区…

20.云原生之GitLab集成Runner

云原生专栏大纲 文章目录 GitLab RunnerGitLab Runner 介绍GitLab Runner分类GitLab Runner工作流程 Gitlab集成Gitlab RunnerGitLab Runner 版本选择Runner在CitLab中位置专用Runner在gitlab中位置群组Runner在gitlab中位置共享Runner在gitlab中位置 GitLab部署Gitlab Runner…

QT 官方例程阅读: XML Patterns 相关

标签用于在qt creator 中查询相关工程 一、标签 Schema Validator 模式验证器 就是根据 已知的XML 模式,验证输入的XML 文件格式是否匹配,不匹配可以输出不匹配位置 如下,,首先定义了contact 元素 的子元素列表,&…

【Redis】list以及他的应用场景

介绍 :list 即是 链表。链表是一种非常常见的数据结构,特点是易于数据元素的插入和删除并且且可以灵活调整链表长度,但是链表的随机访问困难。许多高级编程语言都内置了链表的实现比如 Java 中的 LinkedList,但是 C 语言并没有实现…

64、ubuntu使用c++/python调用alliedvisio工业相机

基本思想:需要使用linux系统调用alliedvisio工业相机完成业务,这里只做驱动相机调用,具体不涉及业务开发 Alvium 相机选型 - Allied Vision 一、先用软件调用一下用于机器视觉和嵌入式视觉的Vimba X 软件开发包 - Allied Vision VimbaX_Set…

解决在pycharm中无法进入conda环境的问题

问题原因: pycharm中使用的是Windows PowerShell 解决方法: setting -> Terminal中将shell path修改为win的即可--注意需要重启

Java技术栈 —— 手写Java数据库连接池

Java技术栈 —— 手写Java数据库连接池 一、连接池的作用二、讲解1.1 类图结构1.2 ConnectionPoolManager1.3 DataSourceConfig1.4 ConnectionPool与IConnectionPool1.5 ConnEntry 三、收获3.1 CopyOnWriteArrayList累的使用(对本文代码的一点建议和指正)3.2 AtomicInteger类的…

【嵌入式学习】C++QT-Day2-C++基础

笔记 见我的博客:https://lingjun.life/wiki/EmbeddedNote/19Cpp 作业 自己封装一个矩形类(Rect),拥有私有属性:宽度(width)、高度(height), 定义公有成员函数: 初始化函数:void init(int w, int h) 更改宽度的函数:set_w(int w) 更改高度…

css display 左右对齐 技巧

.list_number{ display: flex; } .list_name_number{ width:100px; } //左边固定width .list_name_type{ //右边给flex:2 自动撑开 flex:2; }

使用antd design pro 如何设置不使用全局基础模板,开发开放公共页面。

修改config目录下的routes, 在指定需要开放不使用全局模版的路径,多个路径可单独添加或者直接按照分级添加模式: 这样添加了还不行,因为模版本身除了user模块以外,其他路径都需要登陆后才能访问,但一般做p…

《微信小程序开发从入门到实战》学习九十三

7.1 视图容器组件 7.1.3 swiper与swiper-item组件 swiper组件的显示效果如下图所示: indicator-dots、indicator-color和indicator-active-color三个属性用于设置swiper组件下方的指示点。设置指示点的颜色时,可以使用HexColor,也可以使用r…

力扣算法-Day18

18.四数之和 给你一个由 n 个整数组成的数组 nums ,和一个目标值 target 。请你找出并返回满足下述全部条件且不重复的四元组 [nums[a], nums[b], nums[c], nums[d]] (若两个四元组元素一一对应,则认为两个四元组重复)&#xff1…

linux 查找文件或查找内容 (find grep)

一 linux 查找包含指定内容的文件: 在linux 有时我们只我知道内容但不知道文件在哪,可以使用find 与grep查找 例1 要查找指定目录(默认包含子目录)文件内容包含 xxx 的文件 find /etc/ -type f -exec grep -l "mysql"…

通过一个 Spring 的 HelloWorld 引入 Spring 要点

目录 一. 前言 二. 设计一个 Spring 的 HelloWorld 2.1. 创建 HelloWorld 项目 2.2. 核心要点一:控制反转(IOC) 2.3. 核心要点二:面向切面(AOP) 三. Spring 框架如何逐步简化开发 3.1. Java 配置方式…

接入技术以及互联网架构

1. 接入技术 1.1 两种物理基础设施:有线和无线基础设施 有线基础设施包括铜线和光纤电缆。铜线和光纤是用来传输数据的物理介质,其中光纤以其高速度和大容量而闻名,而铜线则是一种更传统的技术。 无线基础设施则包括高点(如专门建…

时序分解 | MATLAB实现CEEMDAN+SE自适应经验模态分解+样本熵计算

时序分解 | MATLAB实现CEEMDANSE自适应经验模态分解样本熵计算 目录 时序分解 | MATLAB实现CEEMDANSE自适应经验模态分解样本熵计算效果一览基本介绍程序设计参考资料 效果一览 基本介绍 MATLAB实现CEEMDANSE自适应经验模态分解样本熵计算 包括频谱图 附赠案例数据 可直接运行 …