象形柱状图

描述:当前是关于Echarts图表中的 示例。
 
             const barData = {
    xaxis: ["1月","2月","3月","4月",],
    series: [{
        name: "金额",
        data: [90, 19,68, 98,]
    }],
    legend: ["金额"],
    yName: "mm",
    unit: "",
    legendShow: true,
    colorArr: [
      {
        start: "rgba(124,225,255, 0.80)",
        end: "rgba(40,203,252,0.50)",
      }
    ],
    xLabelWidth: 160,
    xLabelheight: 48,
    splitNumber: 4,
    xLabelBg: `data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAG8AAAAwCAYAAAAfHSRCAAAAAXNSR0IArs4c6QAAAERlWElmTU0AKgAAAAgAAYdpAAQAAAABAAAAGgAAAAAAA6ABAAMAAAABAAEAAKACAAQAAAABAAAAb6ADAAQAAAABAAAAMAAAAABXoqNQAAABSklEQVR4Ae2cMW7CUADFGgaEOneiGzt35BA9Ta/RterGEYoQAzBlRF+qi5zBLERKnBfZgjHTx/ft9jL4HH5O74NLOv3PBg671+PolqvRBZ1froHiLbfN8Mmmt8/f7XzVdbPez8er8+VrPu7bNfCoS788twtaLx7S58LFc/2j9eIhfS5cPNc/Wi8e0ufCxXP9o/XiIX0uXDzXP1ovHtLnwsVz/aP14iF9Llw81z9aLx7S58LFc/2j9eIhfS5cPNc/Wi8e0ufCxXP9o/XiIX0uXDzXP1ovHtLnwsVz/aP14iF9Llw81z9aLx7S58LFc/2j9eIhfS5cPNc/Wi8e0ufCxXP9o/XiIX0uXDzXP1ovHtLnwsVz/aP14iF9Llw81z9aLx7S58LFc/2j9eIhfS5cPNc/Wp96cRzy9zS4F8c9Te0ybtzf5jI6/Okp7jqFGRdvmgByAAAAAElFTkSuQmCC`,
    grid: {
      left: "100px",
      top: "116px",
      right: "70px",
      bottom: "84px",
      containLabel: false,
    },
    namePadding: [0, 10, 30, 0],
 }
  let normalColor = "rgba(236,248,255,0.70)";
  let barBg = [];
  let list = [];
  let seriesData = barData.series.map((item, index) => {
    list = [...list, ...item.data];
    barBg.push({
      type: "pictorialBar",
      itemStyle: {
        normal: {
          opacity: 0.6,
          color:'#6494db'
        },
      },
      barGap: "-30%",
      symbolRepeat: "fixed", //使图形元素重复order
      symbolSize: [45, 10],
      symbolMargin: 2,
      symbol: `image://data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADQAAAAKCAYAAAD7CH02AAAAO0lEQVRIiWPkTl34n4E4wPhlVhwDAwMDA0/aIgYGBoZBqY+JSMOHDBj10GAHox4a7GDUQ4MdjHposAMAHHwOJKeijY8AAAAASUVORK5CYII=`,
      data: barData.series[0] && barData.series[0].data,
    });

    let markPoint = item.data.map((item, index) => {
      return {
        coord: [index, item],
        symbolSize: [57, 3],
        symbolOffset: [0, -5],
        symbol:'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADkAAAADCAYAAAAp+adOAAAAAXNSR0IArs4c6QAAAERlWElmTU0AKgAAAAgAAYdpAAQAAAABAAAAGgAAAAAAA6ABAAMAAAABAAEAAKACAAQAAAABAAAAOaADAAQAAAABAAAAAwAAAABcACqHAAAAKElEQVQoFWOc/ez/fwYoSJViZISxkcVhYoOdxuV+psHucGq4b0R4EgAU2guFUrWCeQAAAABJRU5ErkJggg=='
      };
    });
    return {
      name: barData.legend[index],
      type: "bar",
      data: item.data,
      barGap: "45%",
      barWidth: "45px",
      itemStyle: {
        normal: {
          color: {
            type: "linear",
            x: 0,
            y: 0,
            x2: 0,
            y2: 1,
            colorStops: [
              {
                offset: 0,
                color: barData.colorArr[index].start,
              },
              {
                offset: 1,
                color: barData.colorArr[index].end,
              },
            ],
            globalCoord: false,
          },
        },
      },
      markPoint: {
        data: markPoint,
      },
    };
  });
  seriesData = [...seriesData, ...barBg];
  option = {
    backgroundColor: "#0B1321",
    legend: {
      show: barData.legendShow,
      x: "right",
      y: "top",
      selectedMode: false,
      icon: "rect",
      padding: [0, 0, 0, 0],
      itemGap: 32,
      itemWidth: 26,
      itemHeight: 18,
      textStyle: {
        height: 30,
        rich: {
          a: {
            color: normalColor,
            fontSize: 36,
            fontFamily: "PingFangSC-Regular",
          },
        },
      },
      formatter: (name) => {
        return "{a|" + name + " " + "}";
      },
      data: barData.legend,
    },
    grid: barData.grid,
    tooltip: {
      textStyle: {
        fontSize: 48,
      },
      trigger: "axis",
      formatter: function (params) {
        let str = "";
        for (let i = 0; i < params.length - 1; i++) {
          if (i < 2) {
            if (
              (!!params[i].value || params[i].value === 0) &&
              params[i].seriesName !== ""
            ) {
              let value;
              if (i === params.length - 2) {
                value = params[i].value + params[0].value;
              } else [(value = params[i].value)];
              str += params[i].seriesName + ": " + value + barData.unit + "<br/>";
            } else if (params[i].seriesName !== "") {
              str += params[i].seriesName + ": " + "无数据" + "<br/>";
            }
          }
        }
        return str;
      },
    },
    xAxis: [
      {
        type: "category",
        data: barData.xaxis,
        axisPointer: {
          type: "shadow",
        },
        axisLabel: {
          interval: 0,
          margin: 15,
          formatter: (value) => {
            return `{a|${value}}`;
          },
          width: barData.xLabelWidth,
          height: barData.xLabelheight,
          align: "center",
          backgroundColor: {
            image: barData.xLabelBg,
          },
          rich: {
            a: {
              fontFamily: "DINAlternate-Bold",
              color: normalColor,
              fontSize: 42,
              lineHeight: 54,
            },
          },
        },
        axisLine: {
          show: false,
        },
        axisTick: {
          show: false,
        },
        splitLine: {
          show: false,
        },
      },
    ],
    yAxis: [
      {
        type: "value",
        name: barData.yName,
        splitNumber: barData.splitNumber,
        nameTextStyle: {
          fontFamily: "PingFangSC-Regular",
          color: normalColor,
          fontSize: 42,
          align: "right",
          padding: barData.namePadding,
        },
        axisLabel: {
          showMinLabel: false,
          formatter: "{value}",
          align: "right",
          textStyle: {
            fontFamily: "PingFangSC-Regular",
            color: normalColor,
            fontSize: 42,
          }
        },
        axisLine: {
          show: false,
        },
        axisTick: {
          show: false,
        },
        splitLine: {
          show: false,
        },
      },
    ],
    series: seriesData,
  };
  myChart.setOption(option);