热力图

描述:当前是关于Echarts图表中的 热力图 示例。
 
            const source = [
   {
      "name": "从业",
      "data": [
         {
            "name": "其他",
            "num": "10",
         },
         {
            "name": "起重伤害",
            "num": "20",
         },
         {
            "name": "物体打击",
            "num": "30",
         },
         {
            "name": "漏水",
            "num": "40",
         },
         {
            "name": "坍塌",
            "num": "50",
         },
         {
            "name": "米线",
            "num": "50",
         },
         {
            "name": "酸辣",
            "num": "50",
         },
      ]
   },
   {
      "name": "基础建设项目",
      "data": [
         {
            "name": "其他伤害",
            "num": "177",
         },
         {
            "name": "起重伤害",
            "num": "6272",
         },
         {
            "name": "物体打击",
            "num": "11940",
         },
         {
            "name": "漏水",
            "num": "67",
         },
         {
            "name": "坍塌",
            "num": "10340",
         },
         {
            "name": "米线",
            "num": "50",
         },
         {
            "name": "酸辣",
            "num": "50",
         },
      ]
   },
   {
      "name": "公交运营",
      "data": [
         {
            "name": "其他伤害",
            "num": "100",
         },
         {
            "name": "起重伤害",
            "num": "200",
         },
         {
            "name": "物体打击",
            "num": "300",
         },
         {
            "name": "漏水",
            "num": "400",
         },
         {
            "name": "坍塌",
            "num": "500",
         },
         {
            "name": "米线",
            "num": "50",
         },
         {
            "name": "酸辣",
            "num": "50",
         },
      ]
   },
   {
      "name": "面条",
      "data": [
         {
            "name": "其他",
            "num": "110",
         },
         {
            "name": "起重伤害",
            "num": "220",
         },
         {
            "name": "物体打击",
            "num": "330",
         },
         {
            "name": "漏水",
            "num": "440",
         },
         {
            "name": "坍塌",
            "num": "550",
         },
         {
            "name": "米线",
            "num": "50",
         },
         {
            "name": "酸辣",
            "num": "50",
         },
      ]
   },
]

// x轴
let yData = source.map((it) => { return it.name });
// y轴
let xData = [];
source.forEach((el) => {
   xData = el.data.map((it) => { return it.name });
});
// 拼装数据
let echartsData = [];
source.forEach((i, indexI) => {
   i.data.forEach((k, indexK) => {
      echartsData.push([indexI, indexK, k.num]);
   })
});
// 渲染数据
let seriesData = echartsData.map(function (item) {
   return [item[1], item[0], item[2] || 0];
});
option = {
   backgroundColor: '#061740',
   tooltip: {
      position: 'top'
   },
   grid: {
      top: '15%',
      right: '1%',
      bottom: '8%',
      left: '15%',
   },
   xAxis: {
      type: 'category',
      data: xData,
      splitArea: {
         show: true
      },
      axisLabel: {
         interval: 0,
         textStyle: {
            color: '#FFF',
            fontSize: 12
         }
      },
      axisTick: {
         show: false,
      },
   },
   yAxis: {
      type: 'category',
      data: yData,
      splitArea: {
         show: true
      },
      axisLabel: {
         textStyle: {
            color: '#FFF',
            fontSize: 12
         }
      },
      axisTick: {
         show: false,
      },
   },
   visualMap: {
      min: 0,
      max: 10,
      calculable: true,
      orient: 'horizontal',
      left: 'center',
      top: '0%',
      inRange: {
         color: ['blue', 'green']
      }
   },
   series: [{
      type: 'heatmap',
      data: seriesData,
      label: {
         show: true
      },
      emphasis: {
         itemStyle: {
            shadowBlur: 10,
            shadowColor: 'rgba(0, 0, 0, 0.5)'
         }
      }
   }]
};