天气 xAxis time类型

描述:当前是关于Echarts图表中的 折线图 示例。
 
            let icon_Map = {
   "大雪": 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACcAAAAgCAYAAACRpmGNAAAAAXNSR0IArs4c6QAAArdJREFUWEe1WMFNBDEMtLvgCRVQAseHLxUgoAYKACoBKgEqASoxmsiOvL5k18lCpNOBNrFn7bE9OaYdS0ROieiOiC6ICH/j8+0+n8z8OuuCZw6KyIGIXhTMlgmAfZ4BOQxORJ6I6HELUeM5AOJseg2BE5F3IkLU/EJkPojoR9OJZ5bmuHcIYBpcJ2JdZ46PMcppgCPgxIUL0bpnZkRsdSlIRBzFgvXNzGdb5/A8BU5EQH5Upa3LDDDbrAC/3HlU8FsBsPKCWXA+aq/MfJ95c7+nw9cSSd33FgvmCJyIWN/ykfJ+zpjZDKYxql1kYG3BLrJS7FdwGnocjhW2MMbMqWhHBA3u9UBWThZHDU70Dk6lNHCvFAa4pn7xf2zoxY+Bi/0LYQVhUY04fKvfqQpN51o3NrIG/9fc4MIHM1+OOti7v5G9c4DzbSLdg/aCaZ0PFX0DcOg/1iDT3fufwPlAPURw4NS0xNkLOATqCuB8MUxHTg2DFlN8bXD/BOC8BErPTNcerDea0MT3UMtRfYgg2SrcBzg03cUDJ4FamSoSybp4Y+7iTKWH2l9r7NamvK8yu63PjQrIWtWNdNQRlBxZMQCVWn58jQIsbyciXhQs0jKomo8otZiT2gghDu2y0ivAqiA0OjAMapT7gqXd2Vud15hGLQk/NcQ7DRQqBuneFKDZlvNn4LIOR/alwNlVcE1ea7887e1RG48jfXATnDlVHiJluCjXK56SHlwzroJzFx6EthvwGNwrac+AXAXXEYixh/ke6bNWFLMrCq+sU2MyGzmrtqLzQuTgNMrvxQUojMgjGz0ebkXOpgdSYSlBRdYLTufiUjWh02lmo/yWsjutbn4iOiDz4r7pmiwc1nupU81V4bjfV+oFZqtyN9O6ZkCjcoDMcnKnvMDMDS362gXOG9NJAVB/pgd/AcOWcaTYn1tLAAAAAElFTkSuQmCC',
   "大雨": 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACQAAAAgCAYAAAB6kdqOAAAAAXNSR0IArs4c6QAAAj1JREFUWEfVV0tOAzEMtW9CT1J6EaAHQdBzsKBcgw3lGKwot2Bn9EZJ5HicTGYyFWokJNRJ7Jfn50+YVlwickNED0S0DWZviegc/j8R0SczH2sueQ08IgLHr0QEQFMLAN+Y+dnb2A1IRD6ICIDmLgDbMXNkcDi/GFAID1jxwMBJ/IMf7PHYG7G1CFAAA2askwMRHe2tgUjp68lQCVB7ZobGljHkhCkzWotdgdkzM28WAQoCBjtxJWOtIiqAArP72SETkW8TKghzoHvOCqBgK7vYCJCIxHRELYFG4OwHaSoiqDEQclyHUvq2gHPsbROgiayB/ZieWsgbT8AtYJTQNUvvAyBHFy02h5i3bJwQua5jCZDVha4jCJO3kKrVNtAC1mTsFztxzLKmUj+6whXBigg0GS/9C0BZ6WdmN/OUxmALvaibnSAXHZ0XANI/rKKLllAphkTtf/xXQI5c7mzITsy8m3PDnr0iotkhyMUCau5JnUBQy+ykMGQtAGE0yHpTrM49TifO2o6fIhMLo069C+JwTY/Hj0qtuTS4kUSymhNUf79wJJ0DvjhXF8ePwNocJ017p5rx7HmoyWvHphpDmIswE+EtlT1ZAnvIlGFO0v71Nztfh1kLNoutpwZIF61sKjTtJuv6pVZkqrL7BMLFSo20OBk6o2fqf863VF8CO7r+uOPL1QBCadejZQqZw0Kaq533mmbPdgR3nloqahgH/dACAKXncGhF+IZLpaeyKr6oczjjzlPXk/YdpaTr6B8U2FQKSWJU2gAAAABJRU5ErkJggg==',
   "多云": 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACYAAAAgCAYAAAB+ZAqzAAAAAXNSR0IArs4c6QAAAnVJREFUWEfNV9tRAzEMtIrgm+STLkgJVACpBFIJoRJIJRyViNkb6UZ2JD/ugME/zBBbXu1qZR2lDYuZ71NKrymlKaV0JCL8/ZFFW6Iw82dKaScxzkR03BLPnt0KjE2wiYj2/wWYZez3gTHzk0gEecK6YWbUF/ZinYjoJWKMmSE59lZj6vkrKSUAmNC1j8CZy8DWuQIKJnnviVkDhqzAhF0huFZNOYniCBwcJoINEWPITt1WDSSyq9xgLpOemSHv86hJXFea/qTgFsbkt8eUEuSx4PXuD9vTZL/KqP0Oe6qr2i4k26VYnexrwRe5BNyuJd+qPsbMyBosjayqU2uBuhpswBTkuMhzBIkgq0qMO1HclxGWhhgLXBUygf0/8WY2GSuaKJLqkkfrSpi8NUYBy2D7ysGjjA29h9I+0B48x5ZldYpeApLMbCBkA1YmR8aahDAG4owaJGsvS+cvRhf9/wxAsrevwIGIrnpQ0atqZlOTeHuypMGYnRCGgVVAza5EPVkzyH7cg4RLuZdGDmD40W560ynBXKrv2iyxog8cq6XQ7O6OsRAbqkxNV9Z0cfob2DmMdODI9V3ADP24c7E5Mw851gMsrNuhYU4uBGbc6rkMsz1KwE4NXf0tAGcHTmy5iaYLbyYrY2YOI6Iu9gNg5X13PRNsT8lsmvcdEz14wEpa4cgvgw4PdWnzPwFmC9qtG3GSHRSbo3LD3UjUfmfkjK14ghAwa6A9upd7nLaT15gDDDJmTXXNxQ22yi+ouSy8GiufqGYH3wi2bEdz+XjAyq+ajfcOH5/fy6iPeQ/78A0rDixmi4DZh71n4FuBITuCWsbwsJTNN4P0Z3LiUpwrAAAAAElFTkSuQmCC',
   "雨加雪": 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACcAAAAgCAYAAACRpmGNAAAAAXNSR0IArs4c6QAAAkhJREFUWEfFmN9RwzAMxqUpeAQG4JlH6DEFT9AFWAE6CWUS2kmAScR9PiunKEpiO03ru/ZybWz/LH/6YzMtaCJyQ0SvRPRARHjG59d8jsy8b52CWzqKyCMRfWaYuSEAu2uBrIYTkQ8iep8jCv4HIPoWtyo4EfkmIljNN1jnQER/RHSdLRq9VwVYDDdisR0R7ZkZcL1m9OitXAxYBJcn+nHzb5gZ1ppsQV8sBH0HC/IDlcJB/PBKbUVg+rKIoC/G0AYPPsKrpxY4CYdVY4UiImbgAzNv5iwWbPOYXvEqrPjlHWYAl7WFuBUJGgNtW8JCoZf3tryDy9qA6cegkjGYuUgKIw7idRttALb6Ns2FrxHBRx3hmdvaLTXaw8KRRdDgTHjGb96j0zwK5/WQNJAHQdxSa2JLZz20Fj4bBwwKjvnvOfCkJsHXAgXbDgMAUNsd4HpholVTS+GyvGxUeAYcRKrmXKSppYCO5c3DFaeWpSBRfxdPnwBnneEiestb6rPQFeBsCQQvWcUjpywdBOgU6wDnvUTLH4yHEmjt9hIUrSl3a5xrLSDXAO/So01flwYcSKqXJ3OkRirRw8oalonGHFQkXW49F0HtPE0VRu0kre83w2khOhMiUtXRUv81b6sJP+GZ1FTQWr+hckZVXVXRNFnO5cCuOFQr5jSkBxjN2/i76uxxcjjj8fZABLDq1HhyuJwno6wThospzZ4cLkiHdv6zbKutIHo1oDko4TZAL3vgEPDa9e5KjOD16gs/hdcRpgyCl1afc9H/H1t2HH3y4PsyAAAAAElFTkSuQmCC'
}
let zh_en = {
   "大雪": 'MajorSnow',
   "大雨": "heavyRain",
   "多云": "cloudy",
   "雨加雪": "sleet"
}
let data = [
   {
      time: '2023\11\12 09:00',
      quality: '优',
      grade: '1级',
      weather: '大雪',
      value: -8
   },
   {
      time: '2023\11\12 10:00',
      quality: '优',
      grade: '1级',
      weather: '大雨',
      value: -7
   },
   {
      time: '2023\11\12 11:00',
      quality: '优',
      grade: '1级',
      weather: '多云',
      value: -8
   },
   {
      time: '2023\11\12 12:00',
      quality: '优',
      grade: '1级',
      weather: '大雪',
      value: -8
   },
   {
      time: '2023\11\12 13:00',
      quality: '优',
      grade: '1级',
      weather: '雨加雪',
      value: -5
   },
   {
      time: '2023\11\12 14:00',
      quality: '优',
      grade: '1级',
      weather: '大雪',
      value: -5
   },
   {
      time: '2023\11\12 15:00',
      quality: '优',
      grade: '1级',
      weather: '大雪',
      value: -5
   },
   {
      time: '2023\11\12 16:00',
      quality: '优',
      grade: '1级',
      weather: '大雪',
      value: -8
   },
   {
      time: '2023\11\12 17:00',
      quality: '优',
      grade: '1级',
      weather: '多云',
      value: 1
   },
   {
      time: '2023\11\12 18:00',
      quality: '优',
      grade: '1级',
      weather: '多云',
      value: -1
   },
   {
      time: '2023\11\12 19:01',
      quality: '优',
      grade: '1级',
      weather: '多云',
      value: -5
   },

]
let maxArr = [];
maxArr.length = data.length;
maxArr.fill(1);
console.log(maxArr)
let rich_weathers = {};
let rich_img_w = 39;
for (let k in icon_Map) {
   let rich_key = zh_en[k]
   rich_weathers[rich_key] = {
      width: rich_img_w,
      height: 32,
      backgroundColor: {
         image: icon_Map[k],
      },
   }
}

let lineSymbol = `data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAAXNSR0IArs4c6QAAAWVJREFUWEftlk0rRVEUhp/3D2BEyshfoJiKzKWUsZF8lGSgDExkIgn5CUrdzAyZU0z8BzFSDA2Wbt1bx3HO2WvvLntyz/S8613PXmt/LJH5U+b89AGiKmBm48ASMAPMl9r3BRwCLUnP3ta6AMxsDNgHVpzGN8CuByQIYGbLwKUzcVm2KemsKbYRwMzWgUYDB9iBpL06XS2AmbV7feVI4JFsSTqpElYCmNkw8OZxjtBMSHoq6+sAzoG1CHOP9FbSXBDAzEaAV49jgmZK0kMx7lcFerTx6tiOJO2EAFrAYsLqXCGSfiy6qgLvwJDLLUGUHQAYkPTZZf/3CgCDkj6yAXhacA0sJLTXFeIB2ABOXW7xomNJ26FjOAq8xHu7IqYl3TcCtH+a2QWw6rL0i+4kzQav4g7AX1zHk5IeXQAdiHzPcZeyR+9C2kBSgMg3khUg8g2lxU2TbSz3n7R4ZXAsj7eMi+gDfANQTXohGNbfowAAAABJRU5ErkJggg==`;
let xdata = [1, 2, 3]
option = {
   backgroundColor: '#5d87bb',
   grid: [
      {
         containLabel: true,
         left: '5%',
         top: '10%',
         right: '5%',
         backgroundColor: '#5d87bb',
      },
      {
         containLabel: true,
         left: '3%',
         top: '10%',
         right: '3%',
         backgroundColor: '#5d87bb',
      }
   ],
   title: {
      text: '鼠标按下拖拽试试'
   },
   dataZoom: [
      {
         show: false, // 为true 滚动条出现
         realtime: true,
         type: 'slider', // 有type这个属性,滚动条在最下面,也可以不行,写y:36,这表示距离顶端36px,一般就是在图上面。
         right: "3%",
         left: "3%",
         height: '10',
         xAxisIndex: [0],     //关联多个y轴
         moveHandleStyle: {
            color: "rgba(89, 202, 241,.5)",
         },
         moveHandleSize: "6",
         emphasis: {
            moveHandleStyle: {
               color: "rgba(89, 202, 241,.5)",
            }
         },
         textStyle: {
            color: "rgba(255,255,255,0)",
         },
         backgroundColor: 'rgba(255,255,255,.1)',
         borderColor: "rgba(255,255,255,0)",
         fillerColor: "rgba(0,0,0,0)",
         handleSize: "6",
         handleStyle: {
            color: "rgba(255,255,255,0)"
         },
         brushStyle: {
            color: "rgba(129, 243, 253)"
         },
         start: 0,
         end: 80,
      },
      {
         type: 'inside',
         xAxisIndex: [0],     //关联多个y轴
         zoomOnMouseWheel: false,  //滚轮是否触发缩放
         moveOnMouseMove: true
      }
   ],
   xAxis: [
      {
         type: 'time',
         triggerEvent: true,
         boundaryGap: false,
         axisLabel: {
            margin: 14,
            show: true,
            formatter: (v) => {
               let newDate = new Date(v);
               let newDate_h = newDate.getHours();
               let filter_ = data.filter((o) => {
                  let _date = new Date(o.time);
                  let _date_h = _date.getHours();
                  if (_date_h == newDate_h) return o;
               })[0];
               console.log(filter_, newDate_h)
               let rich_key = zh_en[filter_.weather];

               let grade = filter_.grade;
               let quality = filter_.quality;
               let str = `{${rich_key}| }\n{text|${grade}}\n{text2|${quality}}\n{h|${newDate_h}}`
               let sh = new Date().getHours();
               if (newDate_h == sh) {
                  str = `{${rich_key}| }\n{text|${grade}}\n{text2|${quality}}\n{sh|当前}`
               }
               return str;
            },
            rich: {
               ...rich_weathers,
               text: {
                  color: "#ffffff9a",
                  height: 30,
                  lineHeight: 30,
                  fontSize: 14,
                  align: 'center',
                  padding: [1, 3, 0, 0],
                  width: rich_img_w
               },
               text2: {
                  color: "#ffffff9a",
                  height: 20,
                  fontSize: 12,
                  align: 'center',
                  width: rich_img_w,
                  borderRadius: 4,
                  padding: [1.5, 3, 0, 0],
                  backgroundColor: '#ffffff1a'
               },
               h: {
                  color: "#ffffff9a",
                  height: 26,
                  fontSize: 12,
                  align: 'center',
                  width: rich_img_w,
                  borderRadius: 4,
                  padding: [1, 3, 0, 0],
               },
               sh: {
                  color: "#ffffff",
                  height: 26,
                  fontSize: 12,
                  align: 'center',
                  width: rich_img_w,
                  borderRadius: 4,
                  padding: [1, 3, 0, 0],
               }
            }
         },
         gridIndex: 0,
         axisLine: {
            show: false,
         },
         axisTick: {
            show: false,
         },
         splitLine: {
            show: false,
         },
      },
   ],
   yAxis: [
      {
         type: 'value',
         gridIndex: 0,
         axisLabel: {
            show: false
         },
         axisLine: {
            show: false,
         },
         axisTick: {
            show: false,
         },
         splitLine: {
            show: false,
         },
      },
   ],
   color: ['#00e529'],
   series: [
      {
         type: 'line',
         symbolSize: 10,
         symbol: 'image://' + lineSymbol,
         data: data.map((v) => {
            return [
               new Date(v.time),
               v.value
            ]
         }),
         yAxisIndex: 0,
         xAxisIndex: 0,
         smooth: true,
         label: {
            show: true,
            position: 'top',
            distance: 5,
            formatter: (v) => {
               return v.value[1] + '°'
            },
            color: "#fff",
            fontSize: 18,
            fontWeight: 600
         },
      },
   ]
};