Echarts--热力图 - 颜色的离散映射

Echarts--热力图 - 颜色的离散映射

热力图通常用来表示空间上的数据密度或某些特定的统计值,它通过颜色的渐变或变化来呈现数值的大小,从而提供一种直观的数据可视化方式。在数据可视化的工具箱中,Echarts提供了强大的功能来创建这样的图表。其中,颜色的离散映射是实现这一功能的关键技术之一。本文将详细介绍如何在Echarts中利用颜色的离散映射来创建热力图,并提供详细的代码示例。

颜色的离散映射原理

与连续的颜色映射不同,离散的颜色映射将数据值划分为几个区间,并且每个区间分配一种特定的颜色。这样一来,每个数据点不再按照连续的渐变进行颜色填充,而是根据其值所在的区间选择颜色。离散映射适用于分类数据的展示或那些需要突出不同数据区段差异的场景。

Echarts热力图颜色离散映射设置

在Echarts配置热力图时,通过visualMap组件的piecewise类型来实现颜色的离散映射。接下来的代码示例显示了如何引入噪声生成库来随机生成数据,并应用离散颜色映射来绘制热力图。

javascript 复制代码
// 初始引入 Perlin 噪声生成函数
let noise = getNoiseHelper();
let xData = [];
let yData = [];
noise.seed(Math.random());

// 生成热力图所需的数据集
function generateData(theta, min, max) {
  let data = [];
  for (let i = 0; i <= 200; i++) {
    for (let j = 0; j <= 100; j++) {
      data.push([i, j, noise.perlin2(i / 40, j / 20) + 0.5]);
    }
    xData.push(i);
  }
  for (let j = 0; j < 100; j++) {
    yData.push(j);
  }
  return data;
}

let data = generateData(2, -5, 5);

// Echarts热力图的配置信息
let option = {
  tooltip: {},
  grid: {
    right: 140,
    left: 40
  },
  xAxis: {
    type: 'category',
    data: xData
  },
  yAxis: {
    type: 'category',
    data: yData
  },
  visualMap: {
    type: 'piecewise',
    min: 0,
    max: 1,
    left: 'right',
    top: 'center',
    calculable: true,
    realtime: false,
    splitNumber: 8,
    inRange: {
      color: [
        '#313695',
        '#4575b4',
        '#74add1',
        '#abd9e9',
        '#e0f3f8',
        '#ffffbf',
        '#fee090',
        '#fdae61',
        '#f46d43',
        '#d73027',
        '#a50026'
      ]
    }
  },
  series: [
    {
      name: 'Gaussian',
      type: 'heatmap',
      data: data,
      emphasis: {
        itemStyle: {
          borderColor: '#333',
          borderWidth: 1
        }
      },
      progressive: 1000,
      animation: false
    }
  ]
};

// 初始化Echarts实例并进行渲染
var chart = echarts.init(document.getElementById('main'));
chart.setOption(option);

// 下方是用于生成噪声的辅助代码,来自 https://github.com/josephg/noisejs
// 这部分通常放置在单独的文件或模块中
// Perlin 噪声生成函数的实现细节...

在上述代码中,使用了 Perlin 噪声生成库来模拟真实世界的自然变化,并生成了一个 200x100 的随机数据集。在visualMap中,通过设置type: 'piecewise'激活了离散映射,并对应了各个数据区间的颜色。这样一来,当热力图上的点落在不同的数据区间中时,就会显示出不同的颜色,从而让数据的不同范围变得更加明显。

优化热力图的离散颜色映射

离散颜色映射的优化需要注意以下几个方面:

  1. 色彩选择:颜色的选择对于图表的可读性有极大的影响。应选择易于区分且符合数据含义的颜色。

  2. 分类清晰:离散映射中的区间划分应根据数据的实际分布合理设置,避免造成误解。

  3. 交互设计 :虽然realtime属性在这个配置中设置为false,但在需要实时反映用户输入的场景中,将其设置为true可以提高用户体验。

  4. 图例解读:适当的图例可以帮助用户快速识别对应的数据等级,应当在图表中包含清晰的图例说明。

结论

Echarts 通过颜色映射的方式为热力图提供了丰富的视觉表现力,而离散颜色映射让分类数据的展示成为可能。结合Perlin噪声的随机数据生成方法和Echarts强大的热力图配置项,可以创建出色彩分明、层次丰富的热力图。本文提供的示例代码及解释为理解和创建颜色的离散映射热力图提供了入门向导,读者可以在此基础上进行更多的实验和探索,制作出更符合业务需求的可视化产品。

相关推荐
paopaokaka_luck15 小时前
剧本杀预约管理系统(AI客服、 webSocket在线沟通、协同过滤算法推荐、Echarts多维分析、 QQ邮箱通知、 腾讯地图导航、四角色协作)
websocket·网络协议·echarts
hhb_6181 天前
一键生成数据看板,ECharts实战演示
前端·javascript·echarts
志尊宝2 天前
Vue3 零基础每日笔记(085):项目上线前 Checklist——环境变量、报错监控、安全自查
前端·javascript·笔记·安全·信息可视化·echarts
paopaokaka_luck2 天前
滑雪场管理系统(AI智能助手流式对话,ECharts 运营数据分析、教练、雪具与场地一体化预约,钱包支付退款、订单核销与服务评价)
java·人工智能·spring boot·网络协议·数据分析·echarts
志尊宝3 天前
Vue3 零基础每日笔记(081):富文本编辑器集成 wangEditor 5——封装
前端·javascript·vue.js·笔记·信息可视化·echarts
志尊宝3 天前
Vue3 零基础每日笔记(080):Vue3 + ECharts 数据可视化——封装可复用图表组件
前端·javascript·vue.js·笔记·信息可视化·echarts
paopaokaka_luck4 天前
基于springboot+vue的智慧家政管理系统(AI问答、 WebSocket实时沟通、ECharts运营分析、订单规则与服务追踪)
java·javascript·spring boot·数据分析·echarts·mybatis
paopaokaka_luck10 天前
高校社团管理(AI辅助任务分配、协同过滤算法推荐、ECharts数据可视化、活动参与闭环、校园交流与反馈、器材借还管理)
java·前端·javascript·spring boot·数据分析·echarts
paopaokaka_luck12 天前
非遗文物数字化小程序(AI非遗问答、ONNX图像识别、协同过滤推荐、ECharts数据分析、非遗知识浏览与互动、文创商城订单闭环、文化活动报名签到、社区交流)
javascript·spring boot·mysql·数据分析·echarts·mybatis
樱花落木兰15 天前
SpringBoot + ECharts 后台数据统计报表模块实战
java·javascript·spring boot·ai·log4j·github·echarts