尖峰平谷-电表-柱状图

描述:当前是关于Echarts图表中的 柱状图 示例。
 
            // 默认数据
let pieData = [
   {
      date: '02-01',
      typeName: '尖峰时段',
      value: 100
   }, {
      date: '02-01',
      typeName: '高峰时段',
      value: 10
   }, {
      date: '02-01',
      typeName: '平常时段',
      value: 20
   },
   {
      date: '02-01',
      typeName: '低谷时段',
      value: 33
   },
   {
      date: '02-02',
      typeName: '尖峰时段',
      value: 100
   }, {
      date: '02-02',
      typeName: '高峰时段',
      value: 10
   }, {
      date: '02-02',
      typeName: '平常时段',
      value: 20
   }, {
      date: '02-02',
      typeName: '低谷时段',
      value: 33
   },
   {
      date: '02-03',
      typeName: '尖峰时段',
      value: 100
   }, {
      date: '02-03',
      typeName: '高峰时段',
      value: 10
   }, {
      date: '02-03',
      typeName: '平常时段',
      value: 20
   }, {
      date: '02-03',
      typeName: '低谷时段',
      value: 33
   },
   {
      date: '02-04',
      typeName: '尖峰时段',
      value: 100
   }, {
      date: '02-04',
      typeName: '高峰时段',
      value: 10
   }, {
      date: '02-04',
      typeName: '平常时段',
      value: 20
   }, {
      date: '02-04',
      typeName: '低谷时段',
      value: 33
   },
   {
      date: '02-05',
      typeName: '尖峰时段',
      value: 100
   }, {
      date: '02-05',
      typeName: '高峰时段',
      value: 10
   }, {
      date: '02-05',
      typeName: '平常时段',
      value: 20
   }, {
      date: '02-05',
      typeName: '低谷时段',
      value: 33
   },
   {
      date: '02-06',
      typeName: '尖峰时段',
      value: 100
   }, {
      date: '02-06',
      typeName: '高峰时段',
      value: 10
   }, {
      date: '02-06',
      typeName: '平常时段',
      value: 20
   }, {
      date: '02-06',
      typeName: '低谷时段',
      value: 33
   },
   {
      date: '02-07',
      typeName: '尖峰时段',
      value: 100
   }, {
      date: '02-07',
      typeName: '高峰时段',
      value: 10
   }, {
      date: '02-07',
      typeName: '平常时段',
      value: 20
   }, {
      date: '02-07',
      typeName: '低谷时段',
      value: 33
   },
   {
      date: '02-08',
      typeName: '尖峰时段',
      value: 100
   }, {
      date: '02-08',
      typeName: '高峰时段',
      value: 10
   }, {
      date: '02-08',
      typeName: '平常时段',
      value: 20
   }, {
      date: '02-08',
      typeName: '低谷时段',
      value: 33
   },
]
let unit = '单位:KW'
// 默认配色
let barColors = [
   ['#ABDCFF', '#0396FF'],
   ['#90F7EC', '#32CCBC'],
   ['#FFF6B7', '#F6416C'],
   ['#E2B0FF', '#9F44D3'],
   ['#43CBFF', '#9708CC'],
   ['#FCCF31', '#F55555'],
   ['#F761A1', '#8C1BAB'],
   ['#81FBB8', '#28C76F'],
]
let legend = [];
let series = [];
pieData.forEach((item) => {
   if (!legend.includes(item.date)) {
      legend.push(item.date)
   }
   if (!series.includes(item.typeName)) {
      series.push(item.typeName);
   }
})
let seriesData = [];
series.forEach((serieItem, index) => {
   let legendData = []
   // legend.forEach((legendItem) => {
   pieData.forEach((d) => {
      if (legend.find(legendItem => legendItem === d.date) && d.typeName === serieItem) {
         // console.log(d.date === legendItem,d.date, legendItem)
         legendData.push(d.value)
      }
   })
   // })
   seriesData.push({
      name: serieItem,
      type: 'bar',
      stack: 'Ad',
      barWidth: 20,
      data: legendData,
      itemStyle: {
         color: genLinearGradient(barColors[index]),
      },
   })
})

let dataZoom = []
if (legend.length > 7) {
   dataZoom = [{
      show: true,
      height: 12,
      xAxisIndex: [
         0
      ],
      bottom: '12%',
      start: 10,
      end: 90,
      handleIcon: 'path://M306.1,413c0,2.2-1.8,4-4,4h-59.8c-2.2,0-4-1.8-4-4V200.8c0-2.2,1.8-4,4-4h59.8c2.2,0,4,1.8,4,4V413z',
      handleSize: '110%',
      handleStyle: {
         color: '#d3dee5'
      },
      textStyle: {
         color: '#313131'
      },
      borderColor: '#90979c'
   }, {
      type: 'inside',
      show: true,
      height: 15,
      start: 1,
      end: 35
   }]
}
let option = {
   tooltip: {
      trigger: 'axis',
      axisPointer: {
         type: 'shadow'
      }
   },
   legend: {},
   grid: {
      left: '3%',
      right: '4%',
      bottom: '15%',
      //top: '3%',
      containLabel: true
   },
   xAxis: [
      {
         type: 'category',
         data: legend,
         axisTick: {
            show: false //隐藏X轴刻度线
         },
         axisLine: {
            show: false //隐藏X轴轴线
         },
      }
   ],
   yAxis: [
      {
         name: unit,
         nameTextStyle: {
            align: "center",
            padding: [10, -10, 0, -50],
            color: '#2a2a2a',
         },
         type: 'value'
      }
   ],
   dataZoom: dataZoom,
   series: seriesData
};

function genLinearGradient(colors) {
   return {
      type: 'linear',
      x: 0,
      y: 0,
      x2: 0,
      y2: 1,
      colorStops: [
         {
            offset: 0,
            color: colors[0] // 0%处的颜色
         },
         {
            offset: 1,
            color: colors[1] // 100%处的颜色
         }
      ],
      global: false
   };
}