echarts实现3D柱状图(视觉层面)根据博主改编

https://blog.csdn.net/weixin_57798646/article/details/131067725

这是原贴

在这个基础上我需要实现

一根柱子

代码如下

复制代码
<!DOCTYPE html>
<html lang="en" style="height: 100%">

<head>
  <meta charset="utf8">
</head>


<body style="height: 100%; margin: 0">

  <div id="litiBar1" style="height:100%;background-color: #000;"></div>
  <script type="text/javascript" src="https://registry.npmmirror.com/echarts/5.5.1/files/dist/echarts.min.js"></script>



  <script type="text/javascript">
    //组织数据
    let setData = function (data, constData, showData) {
      data.filter(function (item) {
        if (item) {
          constData.push(1);
          showData.push(item);
        } else {
          constData.push(0);
          showData.push({
            value: 1,
            itemStyle: {
              normal: {
                borderColor: "rgba(0,0,0,0)",
                borderWidth: 2,
                color: "rgba(0,0,0,0)",
              },
            },
          });
        }
      });
    }
    //组织颜色
    let setColor = function (colorArr) {
      let color = {
        type: "linear",
        x: 0,
        x2: 1,
        y: 0,
        y2: 0,
        /* 此处决定阴暗面 若为横向柱状图则x,y轴调换
          x: 0,
          x2: 0,
          y: 0,
          y2: 1, */
        colorStops: [{
          offset: 0,
          color: colorArr[0],
        },
        {
          offset: 0.5,
          color: colorArr[0],
        },
        {
          offset: 0.5,
          color: colorArr[1],
        },
        {
          offset: 1,
          color: colorArr[1],
        },
        ],
      };
      return color
    }

    var vehicle = [45, 25, 48, 62, 10]
    var controlBall = [0, 0, 0, 0, 0]

    var barWidth = 220//顶部组件的宽度

      ;//上边的宽度
    var constData1 = [];
    var showData1 = [];


    var constData2 = [];
    var showData2 = [];

    setData(vehicle, constData1, showData1)


    var colorArr1 = ["#345A8B", "#387ABD", "#51C0DB"];
    // var colorArr2 = ["#51C0DB", "#42D9D6", "#45F5F1"];

    var color1 = setColor(colorArr1)
    // var color2 = setColor(colorArr2)





    var option = {
      tooltip: {
        trigger: 'axis',
        axisPointer: {
          type: 'shadow'
        }
      },
      grid: {
        top: '15%',
        bottom: '15%'
      },
      xAxis: {
        type: 'category',
        axisLabel: {
          color: '#A2BCC9',
          fontSize: 16
        },
        offset: 30,
        axisLine: {
          show: false,
        },
        axisTick: {
          show: false
        },
        data: ['0-18', '18-30', '30-50', '50-65', '>65']
      },
      yAxis: {
        type: 'value',
        axisLabel: {
          show: false
        },
        axisLine: {
          show: false,
        },
        splitLine: {
          show: false,
        }
      },
      series: [{
        z: 1,
        type: 'bar',
        name: '人员数量',
        barGap: "15%", //相邻柱子间距
        itemStyle: {
          borderRadius: [0, 0, 0, 0],//柱子四周圆角
          color: color1//柱子左右颜色(深,浅)
        },
        data: vehicle //Y轴上的高度
      },
      // ---------------------------------------------
      {
        z: 2,
        name: '人员数量',
        type: "pictorialBar",
        data: constData1,//此数据对应底部组件
        symbol: "diamond",//底部组件形状,不写默认为椭圆
        symbolOffset: [0, 15],//与柱子的偏移角度[左边偏移,上下偏移]
        symbolSize: [210, 30],//底面[宽,高]
        itemStyle: {
          normal: {
            color: color1//底面左右颜色(深,浅)
          },
        },
        tooltip: {
          show: false,
        },
      },
      {
        z: 3,
        name: '人员数量',
        label: { // 在这里明确设置 label 配置
          show: true,
          position: 'top',
          color: '#DFEEFA',
          distance: 20,
          textStyle: {
            fontSize: 16 // 设置图例的字体大小
          },
        },
        type: "pictorialBar",
        symbolPosition: "end",
        data: showData1,//此数据对应顶部组件
        symbol: "diamond",
        symbolOffset: [0, -10],//顶部组件的左边偏移数值和右边偏移数值
        symbolSize: [barWidth - 10, (20 * (barWidth - 4)) / barWidth],//顶部组件[宽,高]
        itemStyle: {
          normal: {
            /* borderColor: colorArr1[2],
            borderWidth: 2, */ //加上棱角分明
            color: colorArr1[2]
          },
        },
        tooltip: {
          show: false,
        },
      },

      ]
    }
    let chart1 = echarts.init(document.querySelector("#litiBar1"), null, {
      renderer: 'canvas',
      useDirtyRect: false
    });
    var app = {};
    // chart1.setOption(option)
    if (option && typeof option === 'object') {
      chart1.setOption(option);
    }
    window.addEventListener('resize', chart1.resize);

  </script>
</body>

</html>
相关推荐
咔咔一顿操作7 小时前
轻量无依赖!autoviwe 页面自适应组件实战:从安装到源码深度解析
javascript·arcgis·npm·css3·html5
酒鼎1 天前
学习笔记(4)HTML5新特性(第3章)- WebSocket
笔记·学习·html5
七刀1 天前
基金实时估值系统
html5
a1117762 天前
医院挂号预约系统(开源 Fastapi+vue2)
前端·vue.js·python·html5·fastapi
akangznl2 天前
第四章 初识css3
前端·css·css3·html5
a1117762 天前
拼图小游戏(HTML5、CSS3、JavaScript)
javascript·css3·html5
红色的小鳄鱼3 天前
Vue 监视属性 (watch) 超全解析:Vue2 Vue3
前端·javascript·css·vue.js·前端框架·html5
Ulyanov4 天前
从静态到沉浸:打造惊艳的Web技术发展历程3D时间轴
前端·javascript·html5·gui开发
-嘟囔着拯救世界-5 天前
【保姆级教程】Win11 下从零部署 Claude Code:本地环境配置 + VSCode 可视化界面全流程指南
人工智能·vscode·ai·编辑器·html5·ai编程·claude code
Andy Dennis5 天前
FTP局域网功能小网站V2_2
服务器·flask·html5