首页 > 其他分享 >创建一个简单的热力图实例

创建一个简单的热力图实例

时间:2022-09-21 17:45:30浏览次数:58  
标签:const 实例 创建 力图 heatmap let max data Math

1.安装 heatmapjs

// NPM 
npm i heatmapjs

// 或者 yarn 
yarn add heatmapjs

2.导入h337

import h337 from 'heatmapjs';

3.定义全局变量(在react中可用useRef做一个集合来存储)

let heatmapInstance;
    let texture;
    let points;
    let mesh;

4.定义温度颜色渐变

const TemperatureColorStops = {
        1.0: '#f00',
        0.9: '#e2fa00',
        0.6: '#33f900',
        0.3: '#0349df',
        0.0: '#0f00ff'
    };

5.创建热力图

// 创建热力图
    function addPluginHeatmap() {
 
        // 创建一个heatmap实例对象
        // “h337” 是heatmap.js全局对象的名称.可以使用它来创建热点图实例
        // 这里直接指定热点图渲染的div了.heatmap支持自定义的样式方案,网页外包接活具体可看官网api
        heatmapInstance = h337.create( {
 
            container: document.getElementById( 'heatmap' ),
 
            //backgroundColor:'red',    // '#121212'    'rgba(0,102,256,0.2)'
            gradient: TemperatureColorStops,
            radius: 50,     // [0,+∞)
            opacity: .5,
            blur: '.8',
 
        } );
 
        setHeatMapData();//要在此时把数据赋给heatmapInstance
 
        // 获取 heatmap
        texture = new THREE.Texture( heatmapInstance._renderer.canvas );
        const material = new THREE.MeshLambertMaterial( {
 
            map: texture,
            transparent: true,
            opacity: 1
 
        } );
 
 
        mesh = new THREE.Mesh( new THREE.PlaneGeometry( 10, 10, 10 ), material );
        scene.add( mesh );
 
 
        // 更新图片
        if ( texture ) {
 
            texture.needsUpdate = true;
 
        }
 
    }

6. 设置热力图位置温度数据

该方法主要为heatmap设置数据,生成data的方法不唯一

示例1:

// 设置热力图位置温度数据
    function setHeatMapData() {
 
        //构建一些随机数据点,网页切图价格这里替换成你的业务数据
        points = [];
        let max = 0;
        const width = document.body.clientWidth;
        const height = document.body.clientHeight;
        let len = 500;
        // 随机位置点设置温度值
        while ( len -- ) {
 
            var val = Math.floor( Math.random() * 25 + 10 );
            max = Math.max( max, val );
            var point = {
                x: Math.floor( Math.random() * width ),
                y: Math.floor( Math.random() * height ),
                value: val
            };
            points.push( point );
 
        }
 
        // 准备 heatmap 的数据
        const data = {
            max: max,
            data: points
        };
        //因为data是一组数据,web切图报价所以直接setData
        heatmapInstance.setData( data ); //数据绑定还可以使用
 
    }

示例二:

updateHeatMap(){
    let dataHeat = this.dataOrigin.map(item => {
        return {
            x: item.reserve.location.offsetX + 30,
            y: item.reserve.location.offsetY + 30,
            value: item.unit[2].value
        }
    })
    this.heatmap.setData(
        {
            data: dataHeat,
            max: 30,
            min: -10
        }
    )
},

 

config相关参数:h337.create(conofig)

 let config = {
        container: this.$refs.display, // 显示热力图的 dom 元素、或元素 id 名
        radius: 70, // 半径
        maxOpacity: 1, // 最大透明度 0 - 1.0
        minOpacity: 0, // 最小透明度 0 - 1.0
        blur: 0.6 // 边缘羽化程度 0.0 - 1.0
    }

 

标签:const,实例,创建,力图,heatmap,let,max,data,Math
From: https://www.cnblogs.com/Simoon/p/16716486.html

相关文章

  • 【Vue项目实践】创建一个 electron+vue3 的项目
    采用vite来创建一个vue项目,然后在项目中加入electron的配置参考链接:Vite+Electron快速构建一个VUE3桌面应用(一)创建项目1.安装viteyarncreatevite2.创......
  • 第三章实例实战
                                                       ......
  • 31. [实例]Cookie模拟登录
    1.前言在使用爬虫采集数据的规程中,我们会遇到许多不同类型的网站,比如一些网站需要用户登录后才允许查看相关内容,如果遇到这种类型的网站,又应该如何编写爬虫程序呢?Cookie......
  • 29. [实例]抓取动态加载数据
    1.前言本节讲解如何抓取豆瓣电影“分类排行榜”中的电影数据(https://movie.douban.com/chart),比如输入“犯罪”则会输出所有犯罪影片的电影名称、评分,效果如下所示:剧情|......
  • 在代码库上设计和创建模块
    在代码库上设计和创建模块为什么我们需要以及如何在代码库中创建模块在业务逻辑和其他功能分散的代码库上工作至少对软件开发人员来说是一个令人沮丧的情况。模块是一......
  • 25. [实例]Python lxml应用
    1.前言本节通过编写一个简单的爬虫程序,进一步熟悉lxml解析库的使用。下面使用lxml库抓取猫眼电影Top100榜(点击访问),编写程序的过程中,注意与《Python爬虫抓取猫眼电......
  • conda中如何创建、查看、删除虚拟环境
     001、查看利用conda创建的虚拟环境(base)[root@PC1software]#condaenvlist#condaenvironments:#base*/root/anaconda3  002、......
  • Flask 学习-70.Flask-RESTX 注册接口实例
    前言注册接口主要是密码需要加密,用到werkzeug.security模块的2个方法generate_password_hash,check_password_hash.数据库操作用到Flask-SQLAlchemy,相关的基础配置就......
  • Java【Mybatis】——创建Mybatis Mapper模板
    目的在编码过程中,我们常常需要写一些配置文件。而这些配置文件的格式都是固定的——关键是我通常记不住,也是找地方复制。这种方法可以,但没有必要。因为一种方式,更简便—......
  • Kafka本地单实例安装
    下载安装从国内镜像站点下载并安装Kafka安装包,以下载并安装v3.2.3版本为例。$tar-xzfkafka_2.12-3.2.3.tgz$cdkafka_2.12-3.2.3启动服务如下命令均在Kafka安装......