echarts热力图在BI中的使用

2826
1

3516853030 小试身手Lv3

发表于2020-9-21 11:14

楼主
本帖最后由 3516853030 于 2021-3-10 11:26 编辑

1.需求
热力图需求场景:分析某项维度的指标热度。比如:如果你发现人们总是在点击某个产品图片,你能想到的是,他们也许想看大图,或者是想了解该产品的更多信息。 同样,他们可能会错误地认为特别的图片就是导航链接--这个数据就可以通过热力图做一个高效的展示。
由于系统中没有单纯的维度相对于指标大小的热力展示的统计图,所以遇到这样的场景时可参考如下步骤配置。


2.配置
首先需要上传js文件到服务器中

js文件: echarts.min.rar (213.32 KB, 下载次数: )

然后需要一个空容器用来放热力图;设计好浮动交叉表后(分析了热力图的一些适用场景后发现交叉表比较适配热力图),就可以在脚本中将画出来的echarts放入到容器中


3.脚本参考
脚本的作用是把处理好的数据进行有序对应指标的进行排放,如果有更高效的方法欢迎跟帖。
写在客户端脚本中即可生效,入口见图2
  1. include("vfs/root/echarts.min.js");//调用js文件
  2. var myChart1 = echarts.init(document.getElementById('HHH33'));//获取容器,初始化echarts放置对象

  3. var a = <#=GRID3.B1$#>;
  4. var b =<#=GRID3.A2$#>;
  5. var c = <#=GRID3.B2$#>;
  6. var d=[],j=0;
  7. xl=a.length;
  8. yl=b.length;
  9. //拼接坐标和数据
  10. for(x=0;x<xl;x++){
  11. for(y=0;y<yl;y++){
  12. d =d.concat(y);
  13. d =d.concat(x);
  14. d=d.concat(c[j]);j++;
  15. }
  16. }
  17. //分割坐标和数据
  18. var spArray = function(n,arr){
  19.         var newArr = [],i;
  20.         for (i = 0;i < arr.length;) {
  21.                 newArr.push(arr.slice(i,i += n))
  22.         }
  23.         return newArr
  24. }
  25. t=spArray(3,d);

  26. //根据坐标获取数据
  27. data = t.map(function (item) {
  28.     return [item[1], item[0], item[2] || '-'];
  29. });

  30. option = {
  31.     tooltip: {
  32.         position: 'top'
  33.     },
  34.     animation: false,
  35.     grid: {
  36.         left:'25%',
  37.         top: '10%'
  38.     },
  39.     xAxis: {
  40.         type: 'category',
  41.         data: a,
  42.         splitArea: {
  43.             show: true
  44.         }
  45.     },
  46.     yAxis: {
  47.         type: 'category',
  48.         data: b,
  49.         splitArea: {
  50.             show: true
  51.         }
  52.     },
  53.     visualMap: {
  54.         min: 0,
  55.         max: 10,
  56.         calculable: true,
  57.         orient: 'vertical',
  58.         left: 'right',
  59.         bottom: '5%',
  60. inRange:{
  61.             color: ['#3398DB','yellow']
  62.             }
  63.     },
  64.     series: [{
  65.         name: 'Punch Card',
  66.         type: 'heatmap',
  67.         data: data,
  68.         label: {
  69.             show: true
  70.         },
  71.         emphasis: {
  72.             itemStyle: {
  73.                 shadowBlur: 10,
  74.                 shadowColor: 'rgba(0, 0, 0, 0.5)'
  75.             }
  76.         }
  77.     }]
  78. };
  79. myChart1.setOption(option);//将热力图放到容器中
复制代码


4.效果展示

注:颜色的设置可以改变代码里的inRange属性,
inRange:{
color: ['#3398DB','yellow']
}
更多热力图信息可了解echarts官网:https://echarts.apache.org/examples/zh/editor.html?c=heatmap-cartesian
echarts.min.rar (213.32 KB, 下载次数: )

最近看过此主题的会员

esen_4WRIDNEKO0

l1236

1个回答

只看楼主

feng6884350 小试身手Lv3

发表于2023-6-14 14:52

只看该作者

取消 关注该作者的回复

沙发

如果表格的数据变化了,代码中的宏 还能获取到变化后的数据吗

登录后可回答问题,请登录注册

快速回复 返回顶部 返回列表

小时

全天响应

分钟

快速处理问题

工程师强势助力

明星产品
解决方案
联系合作

400咨询:400-0011-866

技术支持QQ:400-0011-866(工作日9:00-18:00)

产品建议邮箱yixin@esensoft.com

关注我们

扫TA学习更多干货

一对一专家交流

版权所有© 2006-2024 北京亿信华辰软件有限责任公司 京ICP备07017321号 京公网安备11010802016281号