uni-app 3d柱状图

发布于 1周前 作者 gougou168 来自 Uni-App

uni-app 3d柱状图

需要有这种效果柱状图

2 回复

看下echarts有没有


在uni-app中实现3D柱状图,可以借助ECharts这个强大的图表库。虽然ECharts本身没有直接的3D柱状图组件,但你可以通过引入ECharts的GL扩展(ECharts-GL)来实现这一功能。以下是一个基本的代码示例,展示了如何在uni-app中集成ECharts并绘制一个简单的3D柱状图。

首先,确保你已经安装了ECharts和ECharts-GL。由于uni-app主要运行在Web环境中,你可以直接通过npm或yarn安装这些依赖,然后在项目中引用。

npm install echarts echarts-gl

接下来,在你的uni-app项目中创建一个页面(例如pages/3DBarChart/3DBarChart.vue),并添加以下代码:

<template>
  <view class="container">
    <canvas canvas-id="3dBarChart" id="3dBarChart" style="width: 100%; height: 400px;"></canvas>
  </view>
</template>

<script>
import * as echarts from 'echarts';
import 'echarts-gl';

export default {
  onReady() {
    this.initChart();
  },
  methods: {
    initChart() {
      const chartDom = document.getElementById('3dBarChart');
      const myChart = echarts.init(chartDom);

      const option = {
        // ECharts GL 3D 配置
        xAxis3D: {
          type: 'category',
          data: ['A', 'B', 'C', 'D', 'E']
        },
        yAxis3D: {
          type: 'category',
          data: ['1', '2', '3', '4', '5']
        },
        zAxis3D: {
          type: 'value'
        },
        grid3D: {
          boxWidth: 200,
          boxDepth: 80,
          viewControl: {
            // 允许旋转、缩放和平移
            autoRotate: true
          },
          light: {
            main: {
              intensity: 1.2,
              shadow: true,
              alpha: 30,
              beta: 60
            }
          }
        },
        series: [{
          type: 'bar3D',
          data: this.generateData(5, 5),
          shading: 'lambert',
          label: {
            show: true,
            formatter: '{b}'
          },
          itemStyle: {
            color: function (params) {
              var colorMap = ['#a50026','#d73027','#f46d43','#fdae61','#fee08b','#ffffbf','#e6f7ff','#91cfff','#6baed6','#4292c6','#2171b5','#084594'];
              return colorMap[params.value[2] % colorMap.length];
            }
          }
        }]
      };

      myChart.setOption(option);
    },
    generateData(xLength, yLength) {
      const data = [];
      for (let x = 0; x < xLength; x++) {
        for (let y = 0; y < yLength; y++) {
          const z = Math.round(Math.random() * 100);
          data.push([x, y, z]);
        }
      }
      return data;
    }
  }
};
</script>

<style scoped>
.container {
  width: 100%;
  height: 100%;
}
</style>

在这个示例中,我们创建了一个简单的3D柱状图,并通过generateData方法生成了一些随机数据。你可以根据需要调整数据和样式。请注意,由于uni-app在不同平台上可能会有一些兼容性问题,确保在目标平台上测试你的应用。

回到顶部