echarts 3D柱状图

javascript 复制代码
<div id="barChar" style="width: 100%; height: 25vh"></div>
javascript 复制代码
barChar() {
      var chartDom = document.getElementById("barChar");
      var myChart = echarts.init(chartDom);
      var option;

      option = {
        // 绘制图表{
        // 设置图表的位置
        grid: {
          x: 5, // 左间距
          y: 50, // 上间距
          x2: 5, // 右间距
          y2: 0, // 下间距
          containLabel: true, // grid 区域是否包含坐标轴的刻度标签, 常用于『防止标签溢出』的场景
        },
        // dataZoom 组件 用于区域缩放
        dataZoom: [
          {
            type: "inside",
            xAxisIndex: [0], // 设置 dataZoom-inside 组件控制的 x轴
            // 数据窗口范围的起始和结束百分比  范围: 0 ~ 100
            start: 0,
            end: 100,
          },
        ],
        // 图表主标题
        title: {
          text: "单位 / %", // 主标题文本,支持使用 \n 换行
          top: 20, // 定位 值: 'top', 'middle', 'bottom' 也可以是具体的值或者百分
          textStyle: {
            // 文本样式
            fontSize: 12,
            color: "#666",
          },
        },
        // 设置自定义文字
        graphic: [
          {
            type: "text", // 图形元素类型
            left: 70, // 进行定位
            bottom: 0,
            style: {
              // 文本样式
              fill: "#cdd3ee",
            },
          },
        ],
        // 图例组件
        legend: {
          // 图例的数据数组
          data: [],
          icon: "roundRect", // 图例项的 icon  值: 'circle', 'rect', 'roundRect', 'triangle', 'diamond', 'pin', 'arrow', 'none'
          top: 13, // 定位
          right: 30,
          textStyle: {
            // 文本样式
            fontSize: 12,
            color: "#cdd3ee",
          },
        },
        // X轴
        xAxis: {
          type: "category", // 坐标轴类型,  'category' 类目轴,适用于离散的类目数据,为该类型时必须通过 data 设置类目数据
          data: ["小学", "初中", "高中"],
          // 坐标轴轴线
          axisLine: {
            lineStyle: {
              type: "solid", // 坐标轴线线的类型 'solid', 'dashed', 'dotted'
              width: 1, // 坐标轴线线宽, 不设置默认值为 1
              color: "#204756", // 坐标轴线线的颜色
            },
          },
          // 坐标轴刻度
          axisTick: {
            show: true,
          },
          // 分隔线
          splitLine: {
            show: false,
          },
          // 坐标轴刻度标签
          axisLabel: {
            fontSize: 12, // 文字的字体大小
            color: "#666", // 刻度标签文字的颜色
            // 使用函数 只显示数字   传入的数据值 -> value: number|Array,
            // formatter: function (value) {
            //   return value.replace(/[\u4e00-\u9fa5]/g, '')
            // }
          },
        },
        // 左侧Y轴
        yAxis: [
          {
            type: "value", // 坐标轴类型,   'value' 数值轴,适用于连续数据
            name: "", // 坐标轴名称
            nameLocation: "end", // 坐标轴名称显示位置 'start', 'middle' 或者 'center', 'end'
            nameTextStyle: {
              // 坐标轴名称的文字样式
              color: "#ccc",
              fontSize: 12,
            },
            nameGap: 18, // 坐标轴名称与轴线之间的距离
            // 坐标轴刻度
            axisTick: {
              show: false, // 是否显示坐标轴刻度 默认显示
            },
            // 坐标轴轴线
            axisLine: {
              // 是否显示坐标轴轴线 默认显示
              show: false, // 是否显示坐标轴轴线 默认显示
              lineStyle: {
                // 坐标轴线线的颜色
                color: "#ccc",
              },
            },
            // 坐标轴在 grid 区域中的分隔线
            splitLine: {
              show: true, // 是否显示分隔线,默认数值轴显示
              lineStyle: {
                color: "#ccc", // 分隔线颜色
                opacity: 0.1, // 分隔线透明度
              },
            },
            // 坐标轴刻度标签
            axisLabel: {
              show: true, // 是否显示刻度标签 默认显示
              fontSize: 12, // 文字的字体大小
              color: "#666", // 刻度标签文字的颜色
              // 使用字符串模板,模板变量为刻度默认标签 {value}
              formatter: "{value}",
            },
          },
        ],
        // 系列列表
        series: [
          // 柱状图顶部的圆片
          {
            name: "订单", // 系列名称, 用于tooltip的显示, legend 的图例筛选
            type: "pictorialBar", // 系列类型
            symbolSize: [20, 10], // 标记的大小
            symbolOffset: [0, -5], // 标记相对于原本位置的偏移
            symbolPosition: "end", // 图形的定位位置。可取值:start、end、center
            // 图例的图形样式
            itemStyle: {
              color: {
                type: "linear",
                x: 0,
                y: 0,
                x2: 0,
                y2: 1,
                colorStops: [
                  {
                    offset: 0,
                    color: "rgba(2, 208, 234, 1)", // 0% 处的颜色
                  },
                  {
                    offset: 1,
                    color: "rgba(24, 155, 245, 1)", // 100% 处的颜色
                  },
                ],
              },
            },
            z: 10, // 组件的所有图形的z值。控制图形的前后顺序。z值小的图形会被z值大的图形覆盖
            data: [32.3, 64.5, 78.6], // 系列中的数据内容数组
          },
          // 柱状图
          {
            name: "", // 系列名称, 用于tooltip的显示, legend 的图例筛选
            type: "bar", // 系列类型
            barWidth: 20, // 指定柱宽度,可以使用绝对数值或百分比,默认自适应
            barGap: "-100%", // 不同系列的柱间距离l,如果想要两个系列的柱子重叠,可以设置 barGap 为 '-100%'。这在用柱子做背景的时候有用
            // 图例的图形样式
            itemStyle: {
              color: {
                type: "linear",
                x: 0,
                y: 0,
                x2: 0,
                y2: 1,
                colorStops: [
                  {
                    offset: 0,
                    color: "rgba(14, 96, 178, 1)", // 0% 处的颜色
                  },
                  {
                    offset: 1,
                    color: "rgba(31, 174, 222, 1)", // 100% 处的颜色
                  },
                ],
              },
            },
            data: [32.3, 64.5, 78.6], // 系列中的数据内容数组
          },
          // 柱状图底下的圆片
          {
            name: "",
            type: "pictorialBar", // 系列类型
            symbolSize: [20, 12], // 标记的大小
            symbolOffset: [0, 5], // 标记相对于原本位置的偏移
            // 图例的图形样式
            itemStyle: {
              color: {
                type: "linear",
                x: 0,
                y: 0,
                x2: 0,
                y2: 0,
                colorStops: [
                  {
                    offset: 0,
                    color: "#007aff", // 0% 处的颜色
                  },
                  {
                    offset: 1,
                    color: "#007aff", // 100% 处的颜色
                  },
                ],
              },
            },
            z: 10, // 组件的所有图形的z值。控制图形的前后顺序。z值小的图形会被z值大的图形覆盖
            data: [1, 1, 1], // 系列中的数据内容数组
          },
          // 背景顶部的圆片
          {
            name: "", // 系列名称, 用于tooltip的显示, legend 的图例筛选
            type: "pictorialBar", // 系列类型
            symbolSize: [20, 10], // 标记的大小
            symbolOffset: [0, -5], // 标记相对于原本位置的偏移
            symbolPosition: "end", // 图形的定位位置。可取值:start、end、center
            // 图例的图形样式
            itemStyle: {
              color: "rgba(0, 122, 255, 1)",
              opacity: 1,
            },
            z: 10, // 组件的所有图形的z值。控制图形的前后顺序。z值小的图形会被z值大的图形覆盖
            data: [0, 0, 0], // 系列中的数据内容数组
          },
          {
            name: "", // 系列名称, 用于tooltip的显示, legend 的图例筛选
            type: "pictorialBar", // 系列类型
            symbolSize: [20, 10], // 标记的大小
            symbolOffset: [0, -5], // 标记相对于原本位置的偏移
            symbolPosition: "end", // 图形的定位位置。可取值:start、end、center
            // 图例的图形样式
            itemStyle: {
              color: "rgba(21, 84, 151, 1)",
              opacity: 1,
            },
            z: 10, // 组件的所有图形的z值。控制图形的前后顺序。z值小的图形会被z值大的图形覆盖
            data: [100, 100, 100], // 系列中的数据内容数组
          },
          // 背景
          {
            name: "", // 系列名称, 用于tooltip的显示, legend 的图例筛选
            type: "bar", // 系列类型
            barWidth: 20, // 指定柱宽度,可以使用绝对数值或百分比,默认自适应
            barGap: "-100%", // 不同系列的柱间距离l,如果想要两个系列的柱子重叠,可以设置 barGap 为 '-100%'。这在用柱子做背景的时候有用
            // 图例的图形样式
            itemStyle: {
              color: "blue",
              opacity: 0.2,
            },
            showBackground: true,
            backgroundStyle: {
              color: "rgba(180, 180, 180, 0.1)",
            },
            z: 0, // 组件的所有图形的z值。控制图形的前后顺序。z值小的图形会被z值大的图形覆盖
            data: [0, 25, 50, 75, 100], // 系列中的数据内容数组
          },
        ],
      };
      option && myChart.setOption(option);
    },
相关推荐
审小匠OpenCPAi31 分钟前
银行流水核查怎么自动化?单边匹配、双向勾稽与图聚类异常检测的工程对比
java·前端·人工智能·python·审计
Revolution6135 分钟前
一个公共表格组件,是怎么一步步失控的
前端·前端工程化
mONESY37 分钟前
React useState 核心原理与最佳实践:从异步更新到性能优化全解
javascript
腻害兔1 小时前
【若依项目-产品经理视角】RuoYi-Vue-Pro 源码拆解:CRM 客户关系模块深度解析——从线索到回款,一套完整的 B2B 销售闭环是怎么搭的?
java·前端·javascript·vue.js·产品经理·ai编程
whyfail1 小时前
前端学 Spring Boot(2):一次点击,如何穿过整个后端?
前端·spring boot·后端
AI多Agent协作实战派1 小时前
AI多Agent协作系统实战(二十三):Agent读HEARTBEAT.md不读AGENTS.md——openclaw的文件加载之谜
前端·数据库·人工智能·uni-app
gis开发之家2 小时前
《Vue3 从入门到大神37篇》Vue3 源码详解(七):watch 与 watchEffect 源码对比——副作用是如何被追踪的?
javascript·前端框架·vue3·vue3源码
2601_955760073 小时前
如何用 Claude Opus 5 API 批量扩展长尾关键词和文章选题
前端·python·搜索引擎
KaMeidebaby3 小时前
卡梅德生物技术快报|bli亲和力检测gst:告别批量跑胶:BLI实时酶切监测技术加速GST融合蛋白下游流程优化
前端·网络·数据库·人工智能·算法
bloglin999993 小时前
langchain 和 langgraph 和 react
javascript·react.js·langchain