echarts-gl 3D柱状图配置

 1. 源码

 此demo可以直接在echarts的编辑器中运行

option = {
  title: {
    text: '产量图',
    textStyle: {
      color: 'rgba(255, 255, 255, 1)',
      fontSize: 17
    },
    left: 'center'
  },
  tooltip: {},
  legend: {
    show: false,
    orient: 'vertical',
    x: 'left',
    top: 0,
    right: 20,
    textStyle: {
      fontSize: 12
    }
  },
  visualMap: {
    show: false,
    max: 1,
    inRange: {
      color: 'rgba(290, 206, 118, 1)' // 控制柱体颜色
    }
  },
  xAxis3D: {
    type: 'category',
    name: false,
    show: true,
    data: [
      'Mon',
      'Tue',
      'Wed',
      'Thu',
      'Fri',
      'Sat',
      'Sun',
    ],
    axisLine: {
      lineStyle: {
        color: '#fff'
      }
    },
    axisTick: {
      show: false,
      alignWithLabel: true
    },
    axisLabel: {
      interval: 0,
      margin: 12, // 标签与轴的距离
      textStyle: {
        color: '#fff',
        fontSize: 16
      }
    },
    splitLine: {
      show: false
    }
  },
  yAxis3D: {
    type: 'category',
    name: false,
    axisLabel: {
      show: false
    },
    axisLine: {
      lineStyle: {
        color: '#fff'
      }
    },
    axisTick: {
      show: false
    },
    splitArea: {
      show: true,
      areaStyle: {
        color: '#fff'
      }
    }
  },
  zAxis3D: {
    name: false,
    axisTick: {
      show: false
    },
    axisLine: {
      lineStyle: {
        color: '#fff'
      }
    },
    axisLabel: {
      margin: 12,
      textStyle: {
        color: '#fff',
        fontSize: 16
      }
    },
    splitLine: {
      show: false
    }
  },
  grid3D: {
    left: 0,
    top: 0,
    right: 20,
    bottom: 0,
    boxDepth: 8, // 深度,即y方向的长度
    containLabel: true,
    viewControl: {
      distance: 181, // 视距,用于柱状图控制大小,默认值200
      rotateSensitivity: 0, // 禁止鼠标旋转
      zoomSensitivity: 0, // 禁止鼠标缩放
      alpha: 20, // 视角绕 x 轴,即上下旋转的角度
      beta: 28 // 视角绕 z 轴,即左右旋转的角度
    }
  },
  series: [
    {
      name: '产量',
      data: [
        [0, 0, 20],
        [1, 0, 30],
        [2, 0, 18],
        [3, 0, 55],
        [4, 0, 35],
        [5, 0, 23],
        [6, 0, 15],
      ],
      type: 'bar3D',
      barSize: 7, // 柱子的宽度
      shading: 'lambert', // 设置光照效果
      // bevelSmoothness: 100, // 柱子倒角的光滑度,圆柱相关设置
      // bevelSize: 0.8, // 柱子的倒角尺寸,设置为0更接近圆柱
      label: {
        show: true,
        distance: 2,
        textStyle: {
          fontSize: 14,
          color: '#fff',
          fontWeight: 300
        }
      }
    }
  ]
};

 2. 效果图

3. 注意

  1. 使用3D柱状图需要引入echarts,和echarts-gl两个依赖。
  2. 三维柱状图区别于二维柱状图,无法直接设置宽度,可以通过设置视距来控制柱状图大小(grid3D.viewControl.distance),视距越大,则显示的越小。
  3. 二维柱状图的Y轴,在三维柱状图中叫Z轴,X轴不变;三维图中的Y轴类似于深度,设置grid3D.boxDepth可以控制深度。
  4. X轴刻度标签名称过长,导致显示重叠时,可以通过配置grid3D.viewControl.beta 旋转角度,以及xAxis3D.axisLabel.interval如果设置为 1,表示『隔一个标签显示一个标签』)控制坐标轴刻度标签的显示间隔来解决。注:三维柱状图不支持二维柱状图中的旋转刻度标签的方式。
  5. 想让柱体显示上趋近于圆柱体,可以放开上面demo中的两行注释
    // bevelSmoothness: 100, // 柱子倒角的光滑度,圆柱相关设置
    // bevelSize: 0.8, // 柱子的倒角尺寸,设置为0更接近圆柱

### 关于ECharts 3D柱状图(bar3D)的使用方法 #### 创建基本环境 为了创建一个基于 ECharts3D 柱状图,首先需要引入必要的库文件。这通常意味着要加载 `echarts.min.js` 和用于扩展其功能的支持3D图形渲染能力的脚本 `echarts-gl.min.js`[^2]。 ```html <script src="https://cdn.jsdelivr.net/npm/echarts/dist/echarts.min.js"></script> <script src="https://cdn.jsdelivr.net/npm/echarts-gl/dist/echarts-gl.min.js"></script> ``` #### 初始化图表实例并配置基础属性 初始化图表对象之后,可以开始设定一些全局性的参数来控制整个图表的表现形式,比如视角角度、光照效果等。这些设置对于提升最终视觉效果至关重要。 ```javascript var chartDom = document.getElementById('main'); var myChart = echarts.init(chartDom); var option; option = { backgroundColor: '#fff', title: { text: '3D Bar Chart Example' }, tooltip: {}, visualMap: { show: false, min: 0, max: 50, inRange: { color: ['#313695', '#4575b4', '#74add1'] } }, }; ``` #### 定义坐标系与数据源 在定义好背景色和其他辅助组件后,下一步就是指定使用的坐标系统以及准备实际的数据集。这里选择了笛卡尔直角坐标系作为承载空间,并通过数组的形式传递具体数值给各个维度上的轴标签和对应的系列项。 ```javascript myChart.setOption({ xAxis3D: { type: 'category', data: ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun'], name: 'Day of Week' }, yAxis3D: { type: 'value', name: 'Value' }, zAxis3D: { type: 'category', data: ['A', 'B', 'C'], name: 'Category' }, }); ``` #### 添加Bar3D序列及其样式调整 最后一步则是向场景中加入具体的 bar3D 序列元素,并对其进行个性化装饰——如改变形状、尺寸比例或是应用渐变填充等方式让图表更加生动形象。 ```javascript series: [{ type: 'bar3D', itemStyle: { opacity: 0.8, color: function(params) { // 自定义颜色函数处理特殊情况下的显示问题 var value = params.value[1]; if (value === 0) return 'rgba(0,0,0,0)'; else return echarts.colorPalette[Math.floor(Math.random() * echarts.colorPalette.length)]; } }, shading: 'lambert', emphasis: { label: { fontSize: 20, borderWidth: 1 } }, data: [ [0, 24.7, 0], [1, 27.9, 1], [2, 32.4, 2], [3, 30.4, 0], [4, 29.3, 1], [5, 26.7, 2], [6, 28.4, 0] ].map(function(item) { return { value: [item[0], item[1], item[2]] }; }) }] ``` 以上代码片段展示了如何利用 ECharts 及其附加模块构建一个简单而直观的 3D 柱状图案例。当然,在真实项目开发过程中可能还需要考虑更多细节优化,例如交互响应机制的设计、性能调优等方面的工作。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值