echarts-图表(非常规图开发记录)

news2024/11/18 11:44:30

echarts-图表(非常规图开发记录)

  • 环形刻度图
  • 横向左右柱形图
  • 3D饼图
  • 渐变柱子-柱状图
  • 3D柱状图
  • 雷达图
  • 动态滚动图-并加图片

以下图表数据源,allData.value 均为如下格式

 [{
    "id": "1",
    "name": "在职在岗",
    "value": 3
  },
  {
    "id": "7",
    "name": "其他",
    "value": 0
  },
]

环形刻度图

在这里插入图片描述

 let colorList = ['#EA7267', '#F0D84B', '#7AE72F']
  let total = allData.value.reduce((sum, obj) => sum + obj.value, 0) //计算总和
  const initOption = {
    grid: {
      left: 0,
    },
    legend: {
      right: 40,
      top: 'center',
      itemGap: 20,
      itemWidth: 14,
      orient: 'vertical',
      textStyle: 12,
    },
    tooltip: {
      confine: true,
      trigger: 'item',
      formatter: '{b} : {c}',
    },
    title: {
      text: total,
      textAlign: 'center',
      x: '38%',
      y: '38%',
      textStyle: {
        color: '#FFA951',
        fontSize: 12,
      },
      subtext: '总数',
      subtextStyle: {
        color: '#fff',
        fontSize:10,
      },
    },
    series: [
      {
        name: '',
        type: 'pie',
        radius: ['35%', '50%'],
        center: ['40%', '50%'],
        clockwise: false,
        avoidLabelOverlap: false,
        legendHoverLink: true,
        label: {
          show: true,
          formatter: function (params) {
            return `${params.value.toLocaleString()}\n{a|${params.name}}`
          },
          color: '#8799BF',
          fontSize: 18,
          lineHeight: 21,
          rich: {
            a: { //单独给某个属性设置样式
              color: '#C0D0E7',
              fontWeight: 'bold',
              fontSize: 18,
            },
          },
        },
        labelLine: {
          normal: {
            length: 10,
            length2: 30,
          },
        },
        data: allData.value.map((item, index) => {
          item.label = {
            color: colorList[index],
          }
          return item
        }),
        itemStyle: {
          borderWidth: 5, //设置border的宽度有多大
          borderColor: 'rgb(7,10,23',
          color: (params) => {
            var index = params.dataIndex
            return colorList[index]
          },
        },
      },
      {
        type: 'gauge',
        splitNumber: 15,
        radius: '75%',
        center: ['40%', '50%'],
        startAngle: 0,
        endAngle: -269.9999,
        axisLine: {
          show: false,
          lineStyle: {
            color: [[1, '#4E78F1']],
          },
        },
        axisTick: {
          show: false,
        },
        splitLine: {
          show: true,
          length: 8,
          lineStyle: {
            color: 'auto',
            width: 2,
          },
        },
        axisLabel: {
          show: false,
        },
        detail: {
          show: false,
        },
      },
      {
        type: 'gauge',
        splitNumber: 15,
        radius: '75%',
        center: ['40%', '50%'],
        startAngle: 90,
        endAngle: -269.9999,
        axisLine: {
          show: false,
        },
        axisTick: {
          show: true,
          lineStyle: {
            color: '#06AEFC',
            width: 1,
          },
          length: 8,
          splitNumber: 5,
        },
        splitLine: {
          show: false,
        },
        axisLabel: {
          show: false,
        },
        detail: {
          show: false,
        },
      },
    ],
  }

横向左右柱形图

在这里插入图片描述

  let xData = [
    '18-25',
    '26-30',
    '31-35',
    '36-40',
    '41-45',
    '46-50',
    '51-55',
    '56以上',
    '未知',
  ]
  let dataman = allData.value.map((o) => o.value)
  let datawoman = allDataTwo.value.map((o) => o.value)
  const initOption = {
    title: [
      {
        x: '44%',
        y: '3%',
        textAlign: 'right',
        text: '男',
        textStyle: {
          color: 'white',
          fontSize: Math.round(titleFontSize * 2.1),
          fontWeight: 100,
        },
      },
      {
        x: '52%',
        y: '3%',
        textAlign: 'center',
        text: '年龄',
        textStyle: {
          color: 'white',
          fontSize: Math.round(titleFontSize * 2.1),
          fontWeight: 100,
        },
      },
      {
        x: '60%',
        y: '3%',
        textAlign: 'left',
        text: '女',
        textStyle: {
          color: 'white',
          fontSize: Math.round(titleFontSize * 2.1),
          fontWeight: 100,
        },
      },
    ],
    color: ['#333FFF', '#23B899'],
    timeline: {
      show: false,
    },
    tooltip: {
      trigger: 'axis',
      formatter: '{b} :\n\n{c} 人',
    },
    grid: [
      {
        show: false,
        left: '8%',
        top: '16%',
        bottom: '15%',
        width: '37%',
        containLabel: true,
      },
      {
        show: false,
        left: '55%',
        top: '16%',
        bottom: '15%',
        width: '0%',
      },
      {
        show: false,
        right: '8%',
        top: '16%',
        bottom: '15%',
        containLabel: true,
        width: '31%',
      },
    ],
    xAxis: [
      {
        type: 'value',
        inverse: true,
        axisLine: {
          show: false,
        },
        axisTick: {
          show: false,
        },
        position: 'top',
        axisLabel: {
          show: false,
        },
        splitLine: {
          show: false,
        },
      },
      {
        gridIndex: 1,
        show: false,
      },
      {
        gridIndex: 2,
        axisLine: {
          show: false,
        },
        axisTick: {
          show: false,
        },
        position: 'top',
        axisLabel: {
          show: false,
        },
        splitLine: {
          show: false,
        },
      },
    ],
    yAxis: [
      {
        type: 'category',
        inverse: true,
        position: 'center',
        axisLine: {
          show: false,
        },
        axisTick: {
          show: false,
        },
        axisLabel: {
          show: false,
        },
        data: xData,
      },
      {
        gridIndex: 1,
        type: 'category',
        inverse: true,
        position: 'left',
        axisLine: {
          show: false,
        },
        axisTick: {
          show: false,
        },
        axisLabel: {
          show: true,
          color: '#ffffff',
          fontSize: Math.round(titleFontSize * 1.8),
          align: 'center',
          interval: 0,
        },
        data: xData.map(function (value) {
          return {
            value: value,
            textStyle: {
              align: 'center',
            },
          }
        }),
      },
      {
        gridIndex: 2,
        type: 'category',
        inverse: true,
        position: 'left',
        axisLine: {
          show: false,
        },
        axisTick: {
          show: false,
        },
        axisLabel: {
          show: false,
        },
        data: xData,
      },
    ],
    series: [
      {
        type: 'bar',
        barWidth: 10,
        stack: '1',
        itemStyle: {
          color: new echarts.graphic.LinearGradient(0, 0, 1, 0, [
            {
              offset: 0,
              color: 'rgba(69, 239, 253, 1)',
            },
            {
              offset: 1,
              color: 'rgba(69, 239, 253, 0)',
            },
          ]),
          borderWidth: 2,
          borderColor: '#1FF2C0',
        },
        label: {
          show: true,
          position: 'left',
          color: '#45EFFD',
        },
        data: dataman,
        animationEasing: 'elasticOut',
      },
      {
        type: 'bar',
        stack: '2',
        barWidth: 10,
        xAxisIndex: 2,
        yAxisIndex: 2,
        itemStyle: {
          color: new echarts.graphic.LinearGradient(0, 0, 1, 0, [
            {
              offset: 0,
              color: 'rgba(255, 191, 10, 0)',
            },
            {
              offset: 1,
              color: '#F7546B',
            },
          ]),
          borderWidth: 2,
          borderColor: '#F7546B',
        },
        label: {
          show: true,
          position: 'right',
          color: '#FFBF0A',
        },
        data: datawoman,
        animationEasing: 'elasticOut',
      },
    ],
  }

3D饼图

在这里插入图片描述

import { getPie3D } from './pie3D.js' //引入

 let colorList = ['#EA7267', '#F0D84B', '#7AE72F']
  const series = getPie3D(allData.value, 0.5)
  series.push({
    name: 'pie2d',
    type: 'pie',
    label: {
      opacity: 1,
      fontSize: 16,
      lineHeight: 20,
    },
    labelLine: {
      length: 50,
      length2: 50,
    },
    startAngle: -50, //起始角度,支持范围[0, 360]。
    clockwise: false, //饼图的扇区是否是顺时针排布。上述这两项配置主要是为了对齐3d的样式
    radius: ['20%', '10%'],
    center: ['50%', '50%'],
    data: allData.value.map((item, index) => {
      item.label = {
        color: colorList[index],
      }
      return item
    }),
    itemStyle: {
      opacity: 0,
    },
  })
  const initOption = {
    legend: {
      show: false,
    },
    color: colorList,
    tooltip: {
      trigger: 'item',
      triggerOn: 'mousemove',
      show: true,
      axisPointer: {
        type: 'line',
      },
      // formatter: "{a}:{c}",
      formatter: function (params) {
        return (
          '<p>' +
          params.data.name[0] +
          params.data.name[1] +
          ':' +
          params.data.value +
          '</p>'
        )
      },
    },
    title: {
      show: false,
    },
    label: {
      show: true,
      formatter: function (params) {
        return `${params.value.toLocaleString()}\n{a|${params.name}}`
      },
      color: '#8799BF',
      fontSize: 16,
      lineHeight: 21,
      rich: {
        a: {
          color: '#C0D0E7',
          fontWeight: 'bold',
          fontSize: 16,
        },
      },
    },
    labelLine: {
      normal: {
        length: 10,
        length2: 30,
      },
    },
    xAxis3D: {
      min: -1,
      max: 1,
    },
    yAxis3D: {
      min: -1,
      max: 1,
    },
    zAxis3D: {
      min: -1,
      max: 1,
    },
    grid3D: {
      show: false,
      boxHeight: 25, // 三维笛卡尔坐标系在三维场景中的高度
      viewControl: {
        alpha: 45,
        // beta: 1000,
        distance: 300, //调整视角到主体的距离,类似调整zoom
        // rotateSensitivity: 0, // 设置为0无法旋转
        zoomSensitivity: 0, // 设置为0无法缩放
        panSensitivity: 0, // 设置为0无法平移
        autoRotate: false, // 自动旋转
      },
    },
    series: series,
  }
  • pie3D.js
/**
 * 绘制3d图
 * @param pieData 总数据
 * @param internalDiameterRatio:透明的空心占比
 * @param distance 视角到主体的距离
 * @param alpha 旋转角度
 * @param pieHeight 立体的高度
 * @param opacity 饼或者环的透明度
 */
const getPie3D = (pieData, internalDiameterRatio, distance, alpha, pieHeight, opacity = 1) => {
  const series = [];
  let sumValue = 0;
  let startValue = 0;
  let endValue = 0;
  const legendData = [];
  const k =
      typeof internalDiameterRatio !== 'undefined'
          ? (1 - internalDiameterRatio) / (1 + internalDiameterRatio)
          : 1 / 3;
  // 为每一个饼图数据,生成一个 series-surface 配置
  for (let i = 0; i < pieData.length; i += 1) {
      sumValue += pieData[i].value;
      const seriesItem = {
          name: typeof pieData[i].name === 'undefined' ? `series${i}` : pieData[i].name,
          type: 'surface',
          parametric: true,
          wireframe: {
              show: false,
          },
          pieData: pieData[i],
          pieStatus: {
              selected: false,
              hovered: false,
              k: k,
          },
          itemStyle:{}
      };
      if (typeof pieData[i].itemStyle !== 'undefined') {
          const itemStyle= {};
          if (typeof pieData[i].itemStyle.color !== 'undefined') {
              itemStyle.color = pieData[i].itemStyle.color;
          }
          if (typeof pieData[i].itemStyle.opacity !== 'undefined') {
              itemStyle.opacity = pieData[i].itemStyle.opacity;
          }
          seriesItem.itemStyle = itemStyle;
      }
      series.push(seriesItem);
  }
  // 使用上一次遍历时,计算出的数据和 sumValue,调用 getParametricEquation 函数,
  // 向每个 series-surface 传入不同的参数方程 series-surface.parametricEquation,也就是实现每一个扇形。
  for (let i = 0; i < series.length; i += 1) {
      endValue = startValue + series[i].pieData.value;
      series[i].pieData.startRatio = startValue / sumValue;
      series[i].pieData.endRatio = endValue / sumValue;
      console.log(series[i].pieData.startRatio,
          series[i].pieData.endRatio,
          false,  
          false,
          k,
          series[i].pieData.value)
          series[i].parametricEquation = getParametricEquation(
          series[i].pieData.startRatio,
          series[i].pieData.endRatio,
          false,
          false,
          k,
          25//高度
      );
      startValue = endValue;
      legendData.push(series[i].name);
  }
  return series
}

/**
 * 生成扇形的曲面参数方程,用于 series-surface.parametricEquation
 */
const getParametricEquation = (startRatio, endRatio, isSelected, isHovered, k, h) => {
  // 计算

  const midRatio = (startRatio + endRatio) / 2;

  const startRadian = startRatio * Math.PI * 2;

  const endRadian = endRatio * Math.PI * 2;

  const midRadian = midRatio * Math.PI * 2;

  // 如果只有一个扇形,则不实现选中效果。

  if (startRatio === 0 && endRatio === 1) {

    isSelected = false;

  }

  // 通过扇形内径/外径的值,换算出辅助参数 k(默认值 1/3)

  k = 1;

  // 计算选中效果分别在 x 轴、y 轴方向上的位移(未选中,则位移均为 0)

  const offsetX = isSelected ? Math.cos(midRadian) * 0.1 : 0;

  const offsetY = isSelected ? Math.sin(midRadian) * 0.1 : 0;

  // 计算高亮效果的放大比例(未高亮,则比例为 1)

  const hoverRate = isHovered ? 1.05 : 1;

  // 返回曲面参数方程

  return {

    u: {

      min: -Math.PI,

      max: Math.PI * 3,

      step: Math.PI / 32,

    },

    v: {

      min: 0,

      max: Math.PI * 2,

      step: Math.PI / 20,

    },

    x: function (u, v) {

      if (u < startRadian) {

        return offsetX + Math.cos(startRadian) * (1 + Math.cos(v) * k) * hoverRate;

      }

      if (u > endRadian) {

        return offsetX + Math.cos(endRadian) * (1 + Math.cos(v) * k) * hoverRate;

      }

      return offsetX + Math.cos(u) * (1 + Math.cos(v) * k) * hoverRate;

    },

    y: function (u, v) {

      if (u < startRadian) {

        return offsetY + Math.sin(startRadian) * (1 + Math.cos(v) * k) * hoverRate;

      }

      if (u > endRadian) {

        return offsetY + Math.sin(endRadian) * (1 + Math.cos(v) * k) * hoverRate;

      }

      return offsetY + Math.sin(u) * (1 + Math.cos(v) * k) * hoverRate;

    },

    z: function (u, v) {

      if (u < -Math.PI * 0.5) {

        return Math.sin(u);

      }

      if (u > Math.PI * 2.5) {

        return Math.sin(u) * h * 0.1;

      }

      return Math.sin(v) > 0 ? 1 * h * 0.1 : -1;

    },

  };
}

export { getPie3D, getParametricEquation }

渐变柱子-柱状图

在这里插入图片描述

  const initOption = {
    // backgroundColor: '#081736',
    tooltip: {
      confine: true,
      trigger: 'axis',
      formatter: '{a} : {c}',
    },
    legend: {
      show: false,
    },
    grid: {
      top: '20%',
      right: '0%',
      left: '10%',
      bottom: '25%',
    },
    xAxis: [
      {
        type: 'category',
        axisLabel: {
          color: '#fff',
          interval: 0,
          fontSize: 16,
          rotate: 20,
        },
        axisLine: {
          show: true,
          lineStyle: {
            color: '#b9c8da33',
          },
        },
        axisTick: {
          show: false,
        },
        splitLine: {
          show: false,
          lineStyle: {
            color: '#195384',
            type: 'dotted',
          },
        },
        data: [
          '18-25',
          '26-30',
          '31-35',
          '36-40',
          '41-45',
          '46-50',
          '51-55',
          '56以上',
          '未知',
        ],
      },
    ],
    yAxis: [
      {
        type: 'value',
        name: '人',
        min: 0,
        position: 'left',
        nameTextStyle: {
          color: '#fff',
          fontSize: 16,
        },

        axisLine: {
          show: true,
          lineStyle: {
            color: '#b9c8da33',
          },
        },
        axisTick: {
          show: false,
        },
        splitLine: {
          show: false,
          lineStyle: {
            color: '#0a3e98',
            type: 'dotted',
          },
        },
        axisLabel: {
          formatter: '{value}',
          textStyle: {
            color: '#fff',
            fontSize: 16,
          },
        },
      },
    ],
    series: [
      {
        name: '人数',
        type: 'bar',
        barWidth: 15, //柱子宽度
        barGap: 0.3, //柱子之间间距
        itemStyle: {
          normal: { //渐变配置
            color: new echarts.graphic.LinearGradient(0, 0, 0, 0.7, [
              {
                offset: 0,
                color: '#00FFAE',
              },
              {
                offset: 1,
                color: '#425052',
              },
            ]),
          },
        },
        label: {
          normal: {
            show: false,
            position: 'top',
            formatter: '{c}',
            color: '#fff',
          },
        },
        data: allData.value.map((o) => o),
      },
    ],
  }

3D柱状图

在这里插入图片描述

const data = allData.value.map((o) => o.value)
  const barWidth = 30
  const initOption = {
    tooltip: {
      confine: true,
      trigger: 'axis',
      formatter: '{b} : {c}',
    },
    //图表大小位置限制
    grid: {
      x: '10%',
      x2: '5%',
      y: '15%',
      y2: '20%',
    },
    xAxis: {
      data: allData.value.map((o) => o.name),
      //坐标轴
      axisLine: {
        show: true,
        lineStyle: {
          color: '#b9c8da33',
        },
      },
      type: 'category',
      axisLabel: {
        color: '#fff',
        interval: 0,
        rotate: 20,
        textStyle: {
          fontWeight: 500,
          fontSize: '16',
        },
      },
      axisTick: {
        textStyle: {
          color: '#fff',
          fontSize: '16',
        },
        show: false,
      },
    },
    yAxis: {
      nameTextStyle: {
        color: '#DEDEDE',
        fontSize: 12,
        padding: 10,
      },
      // min: 0, //最小
      // max: 2, //最大
      // interval: 0.5, //相差
      type: 'value',
      splitLine: {
        show: false,
        lineStyle: {
          type: 'dashed', //线的类型 虚线0
          opacity: 0.2, //透明度
        },
      },
      axisTick: {
        show: false,
      },
      axisLine: {
        show: true,
        lineStyle: {
          color: '#b9c8da33',
        },
      },
      //坐标值标注
      axisLabel: {
        show: true,
        textStyle: {
          color: '#C5DFFB',
          fontSize: 16,
        },
      },
    },
    series: [
      //中
      {
        z: 1,
        type: 'bar',
        barWidth: barWidth,
        barGap: '0%',
        data: data,
        itemStyle: {
          normal: {
            color: {
              type: 'linear',
              x: 0,
              x2: 1,
              y: 0,
              y2: 0,
              colorStops: [
                { offset: 0, color: 'rgba(207, 228, 255, .85)' },
                { offset: 0.5, color: 'rgba(207, 228, 255, .85)' },
                { offset: 0.5, color: 'rgba(140, 184, 247, .9)' },
                { offset: 1, color: 'rgba(140, 184, 247, .9)' },
              ],
            },
            //柱形图上方标题
            label: {
              show: true,
              position: 'top',
              textStyle: {
                color: 'rgb(1, 255, 250)',
                fontSize: 16,
              },
            },
          },
        },
      },
      //下
      {
        z: 2,
        name: '',
        type: 'pictorialBar',
        data: data.map((item) => item + 90),
        symbol: 'diamond',
        symbolOffset: ['0%', '0%'],
        symbolSize: [barWidth, 10],
        itemStyle: {
          normal: {
            color: 'transparent',
          },
        },
        tooltip: {
          show: false,
        },
      },
      //上
      {
        z: 3,
        name: '绿色',
        type: 'pictorialBar',
        symbolPosition: 'end',
        data: data,
        symbol: 'diamond',
        symbolOffset: ['0%', '-58%'],
        symbolSize: [barWidth - 4, (10 * (barWidth - 4)) / barWidth],
        itemStyle: {
          normal: {
            borderWidth: 2,
            color: '#c3dafb',
          },
        },
        tooltip: {
          show: false,
        },
      },
    ],
  }

雷达图

在这里插入图片描述

var data = allData.value
  let valueObj = {};
  data.forEach((m) => {
    valueObj[m.name] = m.value;
  });

  let dataArr = [];
  data.forEach((item) => {
    dataArr.push(item.value);
  });

  const initOption = {
    backgroundColor: "#174e8038",
    gird: {
      top: 200,
    },
    radar: {
      radius: "50%", //大小
      nameGap: 10, // 图中工艺等字距离图的距离
      center: ["50%", "50%"], // 图的位置
      name: {
        formatter: function (name, indicator) {
          var value = valueObj[name];
          return '{name|' + name + '}\n' + '{value|' + value + '}';
        },
        rich: {
          name: {
            fontSize: 17,
            color: '#fff',
            align: 'center',
          },
          value: {
            fontSize: 17,
            padding: [5, 0, 0, 0],
            color: '#FF9600',
          },

        },
      },
      indicator: data,
      axisLine: {
        show: true,
        lineStyle: {
          width: 0.5,
          color: "#FF9600",
        },
      },
      splitArea: {
        show: false,
      },
      splitLine: {
        show: true,
        lineStyle: {
          width: 0.5,
          color: "#FF9600", // 设置网格的颜色
        },
      },
    },

    series: [
      {
        type: "radar",
        symbol: "angle",
        itemStyle: {
          normal: {
            areaStyle: { type: "default" },
          },
        },
        data: [
          {
            symbol: "circle",
            symbolSize: 0,
            value: [70, 42, 63, 84, 75, 34],
            areaStyle: {
              color: new echarts.graphic.LinearGradient(0, 0, 0, 0.7, [
                {
                  offset: 0,
                  color: "#FF621F",
                },
                {
                  offset: 1,
                  color: "#FFD942",
                },
              ]),
            },
            lineStyle: {
              color: "#FF9600",
              width: 1,
            },
          },
        ],
      },
    ],
  };

动态滚动图-并加图片

在这里插入图片描述

在这里插入图片描述

  var salvProName = allData.value.map((o) => o.name);
  var salvProValue = allData.value.map((o) => o.value);
  var salvProMax = []; //背景按最大值
  for (let i = 0; i < salvProValue.length; i++) {
    salvProMax.push(100);
  }

  const initOption = {
    grid: {
      left: "5%",
      right: "5%",
      bottom: "2%",
      top: "10%",
      containLabel: true,
    },
    legend: {
      show: false,
    },
    dataZoom: [
      //滑动条
      {
        yAxisIndex: 0, //这里是从X轴的0刻度开始
        show: false, //是否显示滑动条,不影响使用
        type: "inside", // 这个 dataZoom 组件是 slider 型 dataZoom 组件
        startValue: 0, // 从头开始。
        endValue: 4, // 一次性展示几个。
      },
    ],
    tooltip: {
      trigger: "axis",
      axisPointer: {
        type: "none",
      },
      formatter: function (params) {
        return params[0].name + " : " + params[0].value;
      },
    },
    xAxis: {
      show: false,
      type: "value",
    },
    yAxis: [
      {
        type: "category",
        inverse: true,
        axisLabel: {
          show: false,
        },
        splitLine: {
          show: false,
        },
        axisTick: {
          show: false,
        },
        axisLine: {
          show: false,
        },
        data: salvProName,
      },
      {
        type: "category",
        inverse: true,
        axisTick: "none",
        axisLine: "none",
        show: true,
        axisLabel: {
          textStyle: {
            color: "#fff",
            fontWeight: "100",
            fontSize:16
          },
        },
        data: salvProValue,
      },
    ],
    series: [
      {
        name: "值",
        type: "bar",
        zlevel: 1,
        itemStyle: {
          normal: {
            barBorderRadius: 5,
            color: new echarts.graphic.LinearGradient(0, 0, 1, 0, [
              {
                offset: 0,
                color: "rgb(10, 116, 255,.2)",
              },
              {
                offset: 1,
                color: "rgb(167,237,241,1)",
              },
            ]),
          },
        },
        z: 2,
        barWidth: 5,
        data: salvProValue,
        label: {
          normal: {
            color: "#555",
            show: true,
            position: [0, -26],
            textStyle: {
              fontSize: 16,
              color: "#fff",
            },
            rich: {
              icon: {
                fontSize: 20,
                padding: [4, 0, 0, 0],
                backgroundColor: { //添加图片代码
                  image: new URL(
                    "../../../assets/images/FundDistribution/short.png",
                    import.meta.url
                  ).href,
                },
              },
              name: {
                fontSize: 16,
                padding: [4, 0, 0, 5],
                color: "#fefefe",
              },
              value: {
                fontSize: 16,
                fontWeight: "bolder",
                padding: [4, 0, 0, Yhleft.value],
                color: "#0DFFB8",
                // color: '#333333'
              },
            },
            formatter: (params) => {
              return (
                "{icon| }{name|" +
                (params.name.split("").length == 3
                  ? params.name + "\t\t\t\t\t\t\t\t\t\t"
                  : params.name.split("").length == 4
                  ? params.name + "\t\t\t\t\t\t\t"
                  : params.name.split("").length == 5
                  ? params.name + "\t\t\t"
                  : params.name) +
                "}{value|" +
                params.value +
                "%}"
              );
            },
          },
        },
      },
      {
        name: "背景",
        type: "bar",
        barWidth: 5,
        barGap: "-100%",
        data: salvProMax,
        itemStyle: {
          normal: {
            color: "#000",
            barBorderRadius: 5,
          },
        },
        z: 1,
      },
    ],
  };
  if (initOption && typeof initOption === "object") { //滚动主要代码
    // 图表初始化配置
    chartInstance.value.setOption(initOption);
    // 定时自动滚动
    setInterval(function () {
      if (initOption.dataZoom[0].endValue == salvProValue.length) {
        initOption.dataZoom[0].endValue = 4;
        initOption.dataZoom[0].startValue = 0;
      } else {
        initOption.dataZoom[0].endValue = initOption.dataZoom[0].endValue + 1;
        initOption.dataZoom[0].startValue =
          initOption.dataZoom[0].startValue + 1;
      }
      chartInstance.value.setOption(initOption);
    }, 2000);
  }

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1018256.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

企业邮箱功能详解:提升办公效率的多面手

企业邮箱是一种专为企业打造的电子邮件服务&#xff0c;它可以帮助企业提高工作效率、加强内部沟通和保护企业信息安全。本文将介绍企业邮箱的一些主要功能和优势。 一、邮件收发 企业邮箱提供了一个专门的电子邮件账户&#xff0c;员工可以通过这个账户收发工作相关的邮件。相…

基于SSM的校园自助洗衣系统的设计与实现

末尾获取源码 开发语言&#xff1a;Java Java开发工具&#xff1a;JDK1.8 后端框架&#xff1a;SSM 前端&#xff1a;采用JSP技术开发 数据库&#xff1a;MySQL5.7和Navicat管理工具结合 服务器&#xff1a;Tomcat8.5 开发软件&#xff1a;IDEA / Eclipse 是否Maven项目&#x…

GIS跟踪监管系统电子围栏

GIS跟踪监管系统电子围栏 &#xff08;1&#xff09;电子围栏展示。① 显示&#xff1a;② 隐藏&#xff1a;&#xff08;2&#xff09;电子围栏修改。① 新增电子围栏。② 修改电子围栏。工具箱&#xff08;1&#xff09;测量。① 测量距离&#xff1a;② 测量面积&#xff1a…

洛科威多功能岩棉板助力节能减碳战略,推动碳达峰目标实现

国家相关部门提出了要“协同推进降碳、减污、扩绿、增长&#xff0c;推进生态优先、节约集约、绿色低碳发展”的总要求&#xff0c;未来相当长的时间里&#xff0c;降碳都将是一项重要工作&#xff0c;节能降碳是实现碳达峰碳中和的有效途径&#xff0c;也是着力解决资源环境约…

基于springboot+vue的企业面试预约管理系统

基于springbootvue的企业面试预约管理系统 预约面试管理系统&#xff0c;可以通过学生&#xff0c;企业角色进行登录 登录后可以查看发布的岗位&#xff0c;发布人&#xff0c;发布时间&#xff0c;面试时间&#xff0c;招聘时间&#xff0c;招聘单位简介等 查看用户管理信息

云组网案例分享

最近遇到了一个客户场景&#xff0c;是个非常典型的跨云组网场景&#xff0c;我们梳理了下这个客户的需求以及我们提供的解决方案&#xff0c;出于保密要求&#xff0c;文章不会涉及任何客户信息。如果您想体验我们的产品&#xff0c;可以登录我们的控制台免费使用&#xff0c;…

【Axure原型素材】扫一扫

今天和粉丝们免费分享扫一扫的原型素材&#xff0c;"扫一扫"是一项常见的移动应用功能&#xff0c;通常通过手机或平板电脑上的摄像头来扫描二维码或条形码以实现各种功能。下面是和大家分享扫一扫的常用素材~~~ 【原型效果】 【Axure原型素材】扫一扫 【原型预览】…

石油天然气工程用热轧型钢

声明 本文是学习GB-T 42678-2023 石油天然气工程用热轧型钢. 而整理的学习笔记,分享出来希望更多人受益,如果存在侵权请及时联系我们 1 范围 本文件规定了石油天然气工程用热轧型钢的订货内容、牌号表示方法、尺寸、外形、重量、技术要求、 试验方法、检验规则、包装、标志…

springboot日志配置(logback+slf4j配置)

1.为什么要配置日志 故障排查和问题分析&#xff1a; 日志记录允许开发人员和运维人员在系统发生问题或故障时追踪问题的根本原因。通过查看日志文件&#xff0c;他们可以了解系统在特定时间点发生了什么事情&#xff0c;从而更容易定位和解决问题。 性能监控和优化&#xff1a…

YOLOV7改进:在C5模块不同位置添加D-LKA Attention(同时拥有SA注意力和大卷积核的能力)

1.该文章属于YOLOV5/YOLOV7/YOLOV8改进专栏,包含大量的改进方式,主要以2023年的最新文章和2022年的文章提出改进方式。 2.提供更加详细的改进方法,如将注意力机制添加到网络的不同位置,便于做实验,也可以当做论文的创新点。 3.涨点效果:D-LKA Attention注意力机制,实现有…

有没有一款让人爱不释手的知识库工具?知识库管理工具不难选!

对于企业来说&#xff0c;因为其本身的业务需求、外部各类标准规范的要求、数字化转型趋势带来的便利&#xff0c;使得更多的企业开始自主搭建知识库&#xff0c;开始试图通过知识管理去提升组织的效率和创新能力。 虽然说市面上有不少关于知识笔记的管理工具&#xff0c;比如有…

Android Kotlin 基础详解

1,基础语法 1.1 可变变量与不可变变量 可以多次赋值的变量是可变变量&#xff0c;用关键字var表示&#xff1a; var <标识符> : <类型> <初始化值> 注意&#xff0c;在kotlin中成员变量不会赋默认值&#xff0c;不像java一样&#xff0c;必须手动添加默…

时间复杂度讲解(数据结构)

目录 引言 什么是数据&#xff0c;结构和算法 时间复杂度的概念 如何计算时间复杂度 总结 引言 hello大家好&#xff0c;我是boooooom君家宝。在前期的博客中博主呢对c语言的一些重要知识点进行了讲解&#xff0c;接下来博主的博客内容将为大家呈现的是数据结…

JavaScript:二进制数组【笔记】

二进制数组【ArrayBuffer对象、Type的Array视图和DataView视图】JavaScript操作二进制数据的一个接口。 这些接口原本是和WebGL有关【WebGL是浏览器与显卡之间的通信接口】&#xff0c;为了满足JavaScript与显卡之间大量、实时数据交换&#xff0c;那么JavaScript和显卡之间的…

认识面向对象-PHP8知识详解

面向对象编程&#xff0c;也叫面向对象程序设计&#xff0c;是在面向过程程序设计的基础上发展而来的&#xff0c;它比面向过程编程具有更强的灵活性和扩展性。 它用类、对象、关系、属性等一系列东西来提高编程的效率&#xff0c;其主要的特性是可封装性、可继承性和多态性。…

2024届河南硕士暑期实习经验分享---招商银行篇

本期的实习经验分享&#xff0c;采访到了我的一位优秀的师弟&#xff0c;师弟于今年成功被郑州招商银行信息技术岗录取进行实习&#xff0c;下面他将使用第一人称的方式分享自己寻找实习过程中的一些经验、需要避的坑和在招商银行实习过程中的一些经历&#xff0c;为后续师弟师…

2023.9.11 关于传输层协议 UDP和TCP 详解

目录 UDP协议 TCP协议 TCP十大核心机制 确认应答 超时重传 连接管理&#xff08;三次握手 四次挥手&#xff09; 滑动窗口 流量控制 拥塞控制 延时应答 捎带应答 面向字节流 粘包问题 TCP 中的异常处理 经典面试题 对比 TCP 和 UDP 如何使用 UDP 实现可靠传…

l8-d19 广播与组播

一、广播 1.概念 数据包发送方式只有一个接受方&#xff0c;称为单播 如果同时发给局域网中的所有主机&#xff0c;称为广播 只有用户数据报(使用UDP协议)套接字才能广播 广播地址 一个网络内主机号全为1的IP地址为广播地址 发到该地址的数据包被所有的主机接收 255.25…

Linux学习第14天:Linux设备树(一):枝繁叶茂见晴天

本节笔记主要学习了Linux设备树相关知识点&#xff0c;由于内容较多&#xff0c;打算分两天进行总结。今天着重学习Linux设备树&#xff0c;主要包括前三节内容&#xff0c;分别是概念、格式和语法。 本节思维导图内容如下&#xff1a; 一、什么是设备树 设备树可以用一个图来进…

HJ61 放苹果

题目&#xff1a; HJ61 放苹果 题解&#xff1a;递归 f(m,n)表示将m个苹果放在n个盘子中所有的放法。 当n > m时&#xff0c;一定有盘子空着&#xff0c;等效于将m个苹果放到m个盘子中&#xff0c;即f(m,n) f(m,m)当 n < m时&#xff0c; 没有空盘子&#xff0c;那么…