极致呈现系列之:Echarts热力图的神奇光晕

news2024/11/20 12:32:43

目录

  • 什么是热力图
  • 热力图的特性及应用场景
    • 热力图的特性
    • 热力图的应用场景
  • Echarts中热力图的常用属性
  • vue3中创建热力图

什么是热力图

热力图(Heatmap)是一种基于颜色映射的数据可视化图表,用于展示数据点的密度和分布情况。它使用不同的颜色强度或饱和度来表示数据的密集程度,通过直观的视觉效果帮助用户更好地理解和分析数据。

热力图可以将数据点在二维平面上的位置与其值对应起来,并通过不同颜色的深浅来反映数值的大小。通常,数据点的密集区域会呈现出较深的颜色,而稀疏区域则会呈现出较浅的颜色。这种映射方式使得用户可以一目了然地看到数据的分布情况,从而发现数据的规律和趋势。

热力图的特性及应用场景

热力图的特性

  1. 直观明了:热力图使用颜色映射来表示数据的密集程度,颜色的变化直观地反映了数据的分布情况。不同颜色的强弱或饱和度可以直观地表达数据的程度差异,使数据更易于理解和分析。

  2. 自适应调整:热力图可以根据数据的分布情况自动调整颜色的映射范围,使得结果更加合理。这意味着无论数据的范围和分布如何,都能够正确地展示数据的密集程度,避免了因数据变化带来的可视化不一致性。

  3. 多维数据展示:热力图可以展示多维数据的分布情况。除了二维位置信息外,还可以使用颜色深度、大小和其他视觉编码来表示不同维度的数据。这样可以在一个图表中同时展示多个维度的信息,方便用户综合分析。

  4. 异常值识别:热力图可以通过颜色变化来帮助用户发现异常值或离群点。异常值往往会在热力图中呈现出与周围数据不一致的颜色,从而引起注意并促使进一步的数据调查和分析。

热力图的应用场景

热力图的应用非常广泛,常用于以下场景

  1. 地理信息分析:热力图可以用于展示人口分布、疫情热点、犯罪率、地震烈度等地理和空间数据的热点区域。这有助于决策者了解不同区域的密集度和趋势,从而更好地规划和调配资源。

  2. 商业数据分析:热力图可以帮助商业用户分析销售热点、顾客热衷地区以及市场覆盖情况。通过可视化展示数据的热度,用户可以更好地了解市场需求和潜在商机,制定相应的商业策略。

  3. 网络流量监测:热力图可以展示网络流量的高峰时段和热点区域,帮助网络管理人员优化网络资源分配和流量管理。这对于提高网络性能、增强用户体验和预测网络负载起到重要作用。

  4. 用户行为分析:热力图可以分析和可视化用户在网页、应用程序或游戏中的行为热点,例如点击、浏览、购买等。通过热力图,用户可以了解用户兴趣、行为习惯和交互特点,进而优化产品设计和用户体验。

  5. 市场调研和人群分析:热力图在市场调研和人群分析中可以帮助用户了解用户偏好、需求和行为。例如,可以使用热力图来展示某个地区的人口密度、收入水平或媒体使用习惯,从而为市场定位和推广活动提供数据支持。

Echarts中热力图的常用属性

  1. type:表示图表的类型,对于热力图,需要设置为"heatmap"。
  2. data:表示热力图的数据,数据格式为二维数组,每个数据点包括x、y坐标和对应的值。例如:[[x1, y1, value1], [x2, y2, value2], …]。
  3. itemStyle:热力图的每个数据点的样式配置,可以设置颜色、边框等属性,影响数据点的显示效果。
  4. label:热力图的标签配置,用于显示每个数据点的数值。可以设置字体大小、颜色等属性。
  5. emphasis:热力图的高亮样式配置,当鼠标悬停在数据点上时,会显示该数据点的高亮样式,可以设置颜色、边框等属性。
  6. blur:淡出状态的图形样式。开启 emphasis.focus 后有效。
  7. coordinateSystem:表示热力图的坐标系,可选值:
    cartesian2d: 使用二维的直角坐标系(也称笛卡尔坐标系),通过 xAxisIndex, yAxisIndex指定相应的坐标轴组件。
    geo: 使用地理坐标系,通过 geoIndex 指定相应的地理坐标系组件。
    calendar: 使用日历坐标系,通过 calendarIndex 指定相应的日历坐标系组件。

vue3中创建热力图

在实际开发中,热力图是非常常见的一种数据可视化工具,这里我们使用热力图来展示北京、上海、广东、成都四个城市不同月份的气温热力图。气温数据不是真实数据,是我用随机函数随机生成的数据。
具体实现过程如下:

  1. 创建vue项目,安装ECharts库
npm install echarts --save
  1. 新建HeatmapView.vue文件,使用import语句引入ECharts库
import * as echarts from 'echarts';
  1. 创建图表容器:在HeatmapView组件的template中,添加一个div元素作为图表的容器。给它一个唯一的ref属性,以便在后面初始化图表对象时使用
<template>
  <div ref="chart" style="width:100%;height:600px; margin: 20px auto;"></div>
</template>
  1. 初始化图表对象:在HeatmapView组件中定义chart,
const chart = ref(null)

mounted生命周期钩子函数中,使用echarts.init方法初始化图表对象。

<script setup>
import { ref, onMounted } from 'vue'
import * as echarts from 'echarts'
const chart = ref(null)
onMounted(() => {
  const myChart = echarts.init(chart.value) 
})
</script>
  1. 创建一个函数,用于随机生成气温数据。
function generateTemperatureData() {
  const data = [];
  const cities = ['北京', '上海', '广东', '成都'];
  const months = [
    '1月', '2月', '3月', '4月', '5月', '6月', '7月', '8月', '9月', '10月', '11月', '12月'
  ];

  for (let i = 0; i < cities.length; i++) {
    const city = cities[i];
    for (let j = 0; j < months.length; j++) {
      const month = months[j];
      const temperature = Math.floor(Math.random() * 40) - 10; // 生成-10到30之间的随机数
      data.push([month, city, temperature]);
    }
  }

  return data;
}
  1. 定义一个变量data,
const data =  generateTemperatureData();
  1. 配置图表参数,在HeatmapView组件的mounted生命周期钩子函数中,定义option对象,在里面配置图表数据,并使用chart.setOption方法配置图表的参数。
const option = {
    tooltip: {
      position: 'top',
    },
    animation: false,
    grid: {
      height: '50%',
      top: '10%',
    },
    xAxis: {
      type: 'category',
      data: ['1月', '2月', '3月', '4月', '5月', '6月', '7月', '8月', '9月', '10月', '11月', '12月'], // x轴数据为月份
      splitArea: {
        show: true,
      },
    },
    yAxis: {
      type: 'category',
      data: ['北京', '上海', '广东', '成都'], // y轴数据为城市名称
      splitArea: {
        show: true,
      },
    },
    visualMap: {
      min: -10,
      max: 30,
      calculable: true,
      orient: 'horizontal',
      left: 'center',
      bottom: '15%',
      inRange: {
        color: ['#313695', '#4575b4', '#74add1', '#abd9e9', '#e0f3f8', '#ffffbf', '#fee090', '#fdae61', '#f46d43', '#d73027', '#a50026'],
      },
    },
    series: [{
      name: '温度',
      type: 'heatmap',
      data: data,
      label: {
        show: true,
        color: '#000000',
      },
    }],
  }
    myChart.setOption(option)

运行程序,刷新浏览器看下效果:
在这里插入图片描述
热力图的展示方式由三种,即二维的直角坐标系(也称笛卡尔坐标系)、地理坐标系和日历坐标系三种,在实际项目中,我们也常常和地理坐标系结合使用,在地图上以热力图形式展示某类数据的聚集程度,视觉效果也很好,有兴趣的小伙伴可以自行将上面的示例结合中国地图进行展示,这里就不赘述了。
好了,关于热力图的相关内容就介绍到这里,喜欢的小伙伴点赞关注收藏哦,你也可以通过微信公众号搜索“九仞山”关注我,获取更多内容。

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

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

相关文章

RT-Thread-10-线程优先级翻转

线程优先级翻转 前面讲到信号量和互斥量&#xff0c;二者有些区别&#xff1a; 信号量&#xff0c;可以在任何线程&#xff08;以及中断&#xff09;释放&#xff0c;用于同步&#xff0c;线程只在获得许可时才可以运行&#xff0c;强调的是运行步骤&#xff1b; 互斥量&#…

科技项目验收测试规范有哪些?

随着科技的不断发展和进步&#xff0c;越来越多的科技项目被投入使用。为了保证这些科技项目的质量&#xff0c;需要进行验收测试。科技项目验收测试是一项非常重要的工作&#xff0c;其结果对项目的质量和功能正常使用有着直接的影响。本文将就科技项 目验收测试规范和第三方软…

基于51单片机设计的公交车LED屏

一、项目介绍 为了提高公交车站点信息的实时性和准确性,方便乘客及时了解公交车到站信息,从而提高公交出行的便利性和舒适度。传统的公交车到站信息是通过人工喊话或者静态的站牌来实现的,这种方式存在信息不及时、不准确、不方便等问题。当前设计基于STC89C52单片机和MAX7…

PyQt6中文手册

PyQt6中文手册 一、PyQt6 简介 最后更新于 2021.04.22 本教程是 PyQt6 的入门教程。本教程的目的是让您开始使用 PyQt6 库。 关于 PyQt6 PyQt6 Digia 公司的 Qt 程序的 Python 中间件。Qt库是最强大的GUI库之一。PyQt6的官网&#xff1a;www.riverbankcomputing.co.uk/new…

2023年企业应该关注的10种AI攻击类型

2023年&#xff0c;热度很高的一个话题莫不是生成式AI和chat GPT了。但是&#xff0c;人工智能&#xff08;AI&#xff09;技术的应用安全威胁都已经开始显现。安全研究人员表示&#xff0c;在AI技术快速应用发展过程中&#xff0c;其安全性也面临诸多挑战。为了防范AI技术大规…

【C++】哈希unordered系列容器的模拟实现

文章目录 一、哈希表的模拟实现&#xff08;开散列&#xff09;1. 开散列的概念2. 开散列的节点结构3. 开散列的插入删除与查找4. 开散列整体代码实现 二、unordered系列容器的封装实现(开散列)1. 迭代器2. unordered_set和unordered_map的封装实现3. 哈希表整体源码 一、哈希表…

Jacoco代码覆盖率测试

​欢迎光临我的博客查看最新文章: https://river106.cn 1、简介 JaCoCo(Java Code Coverage)是一个开源的覆盖率工具&#xff0c;它针对的开发语言是java&#xff0c;其使用方法很灵活&#xff0c;可以嵌入到Ant、Maven中。 很多第三方的工具提供了对JaCoCo的集成&#xff0c;…

Java设计模式之结构型-装饰器模式

目录 一、基本概念 二、角色设计 三、代码实现 四、总结 一、基本概念 装饰器模式是指不必在改变原有的类和不使用继承的情况下&#xff0c;动态扩展一个对象的功能。 二、角色设计 角色描述抽象构件是一个接口或者抽象类&#xff0c;定义我们最核心的对象基础构件抽象构…

GD32 SPI 查询方式和DMA方式在全双模式下效率区别

最近在使用SPI的时候&#xff0c;遇到了一些数据传输效率问题&#xff0c;在此记录自己学习过程。SPI的基础知识这里就不在讲述了&#xff0c;直接分析SPI查询方式和DMA方式的效率问题。这里使用的芯片是GD32F303CC。 SPI以查询方式进行全双工通信 1.查询手册&#xff0c;SPI…

java——网络编程

文章目录 网络通信协议1. TCP/IP协议2. HTTP协议 Socket编程1.创建Socket对象2.获取输入输出流3.发送数据4.接收数据5.关闭Socket连接 NIO编程1.创建Channel2.创建Buffer3.从Channel中读取数据4.写入数据到Channel中5.关闭Channel和Stream Java网络编程是使用Java语言实现计算机…

Spark7-9

7. Spark中的一些重要概念 7.1 Application 使用SparkSubmit提交的个计算应用&#xff0c;一个Application中可以触发多次Action&#xff0c;触发一次Action产生一个Job&#xff0c;一个Application中可以有一到多个Job 7.2 Job Driver向Executor提交的作业&#xff0c;触发…

没想到,老刘是逃离北上广的那波人

我今天跟老刘调试的时候&#xff0c;我问了老刘一个问题——我问你工作这么久了&#xff0c;有没有遇到什么可以让你财富自由的机会。 老刘那个时候正在焊板子&#xff0c;背着我&#xff0c;他抬起头又低了下去&#xff0c;然后说「我是有一次机会了&#xff0c;但是没有抓住&…

MySQL-SQL存储函数以及触发器详解

♥️作者&#xff1a;小刘在C站 ♥️个人主页&#xff1a; 小刘主页 ♥️努力不一定有回报&#xff0c;但一定会有收获加油&#xff01;一起努力&#xff0c;共赴美好人生&#xff01; ♥️学习两年总结出的运维经验&#xff0c;以及思科模拟器全套网络实验教程。专栏&#xf…

PyTorch翻译官网教程3-DATASETS DATALOADERS

官网链接 Datasets & DataLoaders — PyTorch Tutorials 2.0.1cu117 documentation 数据集和数据加载器 处理样本数据的代码可能会变得混乱并且难以维护。理想情况下&#xff0c;我们希望我们的数据集代码与模型训练代码解耦&#xff0c;以获得更好的可读性和模块化。PyT…

轻松了解工作与学习必备的版本控制+Git,全程舒适~

目录 一、版本控制 二、版本控制器 三、Git 四、项目实操 第一步 在github上创建一个新的远程仓库 第二步 克隆到本地文件夹 第三步 IDEA&#xff08;PyCharm为例&#xff09;集成Git 一、版本控制 概念&#xff1a;版本控制是指对软件开发过程中各种程序代码、配置文件…

【spring cloud学习】4、创建服务提供者

注册中心Eureka Server创建并启动之后&#xff0c;接下来介绍如何创建一个Provider并且注册到Eureka Server中&#xff0c;再提供一个REST接口给其他服务调用。 首先一个Provider至少需要两个组件包依赖&#xff1a;Spring Boot Web服务组件和Eureka Client组件。如下所示&…

ADRC自抗扰控制(CODESYS平台完整源代码)

博途PLC ADRC完整源代码请参考下面文章链接: 博途PLC ADRC自抗扰控制完整SCL源代码_adrc控制算法代码_RXXW_Dor的博客-CSDN博客关于自抗扰控制框图可以参看专栏的其它文章,这里不再讲解具体算法过程,详细了解也可以参看韩京清研究员写的 《ADRC自抗扰》一书。_adrc控制算法…

基于混合策略的改进哈里斯鹰优化算法-附代码

基于混合策略的改进哈里斯鹰优化算法 文章目录 基于混合策略的改进哈里斯鹰优化算法1.哈里斯鹰优化算法2.改进哈里斯鹰优化算法2.1 Sobol 序列初始化种群2.2 limit 阈值执行全局搜索阶段2.4 动态反向学习 3.实验结果4.参考文献5.Matlab代码6.python代码 摘要&#xff1a;针对原…

ElasticSearch-Kibana的安装

Kibana的安装 什么是ELK? ELK是Elasticsearch,Logstash,Kibana三大开源框架首字母大写简称,ELK属于大数据,是拆箱即用的,上手比较快 什么是Kibana? Kibana是一个针对ES的开源分析以及可视化平台,用来搜索,查看交互存储在ES索引中的数据,使用Kibana可以通过各类图标进行高级…

Flink(1)-概述

1.1 Apache Flink是什么&#xff1f; 在当前数据量激增的时代&#xff0c;各种业务场景都有大量的业务数据产生&#xff0c;对于这些不断产生的数据应该如何进行有效的处理&#xff0c;成为当下大多数公司所面临的问题。目前比较流行的大数据处理引擎Apache Spark&#xff0c;…