> 技术文档 > ECharts实现多簇伪3D/2.5D柱状图_echarts 伪3d 柱状图

ECharts实现多簇伪3D/2.5D柱状图_echarts 伪3d 柱状图

import * as echarts from \'echarts\'

import { use, graphic } from \'echarts/core\'

import { fitChartSize } from \'@/utils/utils\'

import triangleTopImg from \'@/assets/v2img/triangle_top.png\'

import triangleBottomImg from \'@/assets/v2img/triangle_bottom.png\'

const data = [

  { name: \'中国铁物\', value: \'2010.58\', value2: \'800\' },

  { name: \'中国储运\', value: \'4458.76\', value2: \'2000\' },

  { name: \'物流股份\', value: \'2088.58\', value2: \'5088.58\' },

  { name: \'资产公司\', value: \'235.90\', value2: \'935.90\' }

]

const category = data.map(item => item.name)

const value2024 = data.map(item => item.value)

const value2025 = data.map(item => item.value2)

const color = [

  [\'#FFD700\', \'#FF8C00\'],

  [\'#48D5E5\', \'#422BF3\']

]

// 各公司年累计吞吐量-相关配置

const BAR_OPTION_TUNTU = {

  color: [\'#00B09C\', \'#93cc79\', \'#f9c761\', \'#ec6468\', \'#18a3a0\'],

  tooltip: {

    trigger: \'axis\',

    borderWidth: 0,

    axisPointer: {

      type: \'shadow\',

    },

    backgroundColor: \'rgba(0,53,89,0.5)\',

    position: function (point, params, dom, rect, size) {

      // 固定在顶部

      return [point[0] - size.contentSize[0] / 2, \'9%\'];

    },

    className: \'tooltip-box\',

    formatter: function (params) {

      const htmlText = `

      同比:

     

      7.5%

     

`

      return htmlText

    },

  },

  grid: {

    // left: \'2%\',

    // right: \'2%\',

    // bottom: 10,

    // containLabel: true

    top: fitChartSize(50),

    left: fitChartSize(10),

    right: fitChartSize(18),

    bottom: fitChartSize(10),

    containLabel: true,

  },

  legend: {

    textStyle: {

      color: \'#ffffff\'

    },

    icon: \'rect\',

    itemWidth: 14,

    itemHeight: 3

  },

  xAxis: {

    data: category,

    type: \'category\',

    nameLocation: \'middle\',

    //刻度线

    axisLine: {

      lineStyle: {

        color: \'#cbcbcb\'

      }

    },

    axisTick: {

      lineStyle: {

        color: \'#cbcbcb\'

      },

      alignWithLabel: true

    },

    axisLabel: {

      color: \'#999999\'

    },

    // 鼠标悬浮阴影

    axisPointer: {

      type: \'shadow\'

    }

  },

  yAxis: {

    scale: true,

    splitLine: {

      lineStyle: {

        // color: \"rgba(30,163,255,0.3)\",

      }

    },

    axisTick: {

      show: false

    },

    axisLine: {

      lineStyle: {

        color: \'#cbcbcb\'

      }

    },

    axisLabel: {

      color: \'#999999\'

    }

  },

  series: [

    // 第一个圆柱顶部的椭圆形

    {

      type: \'pictorialBar\', //pictorialBar(象形柱图)

      symbolSize: [14, 8], //椭圆的大小[宽,高]

      symbolOffset: [-10.5, -4], //图形偏移[x轴,y轴],不确定的话,可以微调,本实例x轴叠加了柱状之间的间距[-7+(间距7/2),y轴]

      z: 12, //图形的层级,控制图形的前后顺序,z值小的图形会被z值大的图形覆盖

      symbolPosition: \'end\', //椭圆位置,默认\'start\',在最底下,end是最上面

      itemStyle: {

        color: \'rgba(255, 223, 165, 0.9)\'

      },

      data: value2024

    },

    {

      name: \'2024年\',

      data: value2024,

      type: \'bar\',

      barWidth: 14,

      barGap: \'50%\', //柱状图间距,此处为14*50%=7

      itemStyle: {

        // 图形样式

        color: new graphic.LinearGradient(0, 0, 0, 1, [

          {

            offset: 0, // 0%处的颜色

            color: \'rgba(255, 180, 41, 1) \'

          },

          {

            offset: 0.5, // 50%处的颜色

            color: \'rgba(255, 180, 41, 0.7) \'

          },

          {

            offset: 1, // 100%处的颜色

            color: \'rgba(255, 223, 165, 0.7)\'

          }

        ])

      },

      label: {

        show: true,

        position: \'top\',

        distance: 3,

        fontSize: fitChartSize(20),

        fontFamily: \'dinboldFont\',

        color: \'#fff\',

        formatter: function (params) {

          return params.value

        }

      }

    },

    // 第一个圆柱底部的椭圆形

    {

      type: \'pictorialBar\',

      symbolSize: [14, 8],

      symbolOffset: [-10.5, 4],

      z: 12,

      itemStyle: {

        color: \'rgba(255, 180, 41, 0.6)\'

      },

      data: value2024

    },

    // 第二个圆柱顶部的椭圆形

    {

      type: \'pictorialBar\',

      symbolSize: [14, 8],

      symbolOffset: [10.5, -4],

      z: 12,

      symbolPosition: \'end\',

      itemStyle: {

        color: \'rgba(165, 195, 255, 0.7)\'

      },

      data: value2025

    },

    {

      name: \'2025年\',

      data: value2025,

      type: \'bar\',

      barWidth: 14,

      itemStyle: {

        // 图形样式

        color: new graphic.LinearGradient(0, 0, 0, 1, [

          {

            offset: 0, // 0%处的颜色

            color: \'rgba(41, 112, 255, 1) \'

          },

          {

            offset: 0.5, // 50%处的颜色

            color: \'rgba(41, 112, 255, 0.7) \'

          },

          {

            offset: 1, // 100%处的颜色

            color: \'rgba(165, 195, 255, 0.7) \'

          }

        ])

      },

      label: {

        show: true,

        position: \'top\',

        distance: 3,

        fontSize: fitChartSize(20),

        fontFamily: \'dinboldFont\',

        color: \'#fff\',

        formatter: function (params) {

          return params.value

        }

      }

    },

    // 第二个圆柱底部的椭圆形

    {

      type: \'pictorialBar\',

      symbolSize: [14, 8],

      symbolOffset: [10.5, 4],

      z: 12,

      itemStyle: {

        color: \'rgba(41, 112, 255, 0.6)\'

      },

      data: value2025

    }

  ]

}

export { BAR_OPTION_TUNTU }