首页 > 其他分享 >使用 Vue 2 和 ECharts 构建 3D 柱状图

使用 Vue 2 和 ECharts 构建 3D 柱状图

时间:2024-11-25 17:59:15浏览次数:12  
标签:category Vue 图表 柱状图 ECharts 3D

使用 Vue 2 和 ECharts 构建 3D 柱状图

在这里插入图片描述

在现代前端开发中,Vue.js 是一个非常流行的框架,它提供了强大的响应式数据绑定和组件化开发,使得前端开发更加灵活高效。而 ECharts 是一个开源的可视化图表库,具有强大的功能支持,能够轻松生成交互式和美观的数据可视化图表。结合 Vue 和 ECharts,我们能够轻松构建出功能强大的交互式图表,其中包括 3D 柱状图。

本教程将指导你如何使用 Vue 2 和 ECharts 创建一个 3D 柱状图,带你走过从基础安装到实现完整图表的全过程,并展示如何扩展图表的功能。

1. 创建一个 Vue 组件

src/components 目录下,创建一个名为 Echarts3DChart.vue 的新文件,并在其中引入 ECharts 和 echarts-gl

<template>
  <div ref="chart" class="chart-container"></div>
</template>

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

export default {
  name: 'Echarts3DChart',
  data() {
    return {
      chart: null,
      chartData: [
        { category: 'A', value: 100 },
        { category: 'B', value: 200 },
        { category: 'C', value: 300 },
        { category: 'D', value: 400 },
      ],
    };
  },
  mounted() {
    this.$nextTick(() => {
      this.initChart();
    });
  },
  methods: {
    initChart() {
      this.chart = echarts.init(this.$refs.chart);

      const option = {
        tooltip: {},
        xAxis3D: {
          type: 'category',
          data: this.chartData.map(item => item.category),
        },
        yAxis3D: {
          type: 'category',
          data: ['A', 'B', 'C', 'D'],
        },
        zAxis3D: {
          type: 'value',
        },
        grid3D: {
          viewControl: {
            projection: 'perspective',
          },
        },
        series: [{
          type: 'bar3D',
          data: this.chartData.map((item, index) => [
            index, item.category, item.value,
          ]),
          shading: 'lambert',  // 设置着色模式
          label: {
            show: true,
            formatter: '{b}',
          },
        }],
      };

      this.chart.setOption(option);
    },
  },
};
</script>

<style scoped>
.chart-container {
  width: 100%;
  height: 500px;
}
</style>
2. 详细说明
  • 数据模型:我们使用 chartData 来存储数据,这些数据将映射到 3D 柱状图的不同坐标轴上。每个数据项包含一个类别 (category) 和对应的数值 (value)。

  • 图表配置:在 initChart 方法中,我们配置了 3D 坐标轴(xAxis3DyAxis3DzAxis3D)以及视图控制(grid3D)和交互模式。我们还通过 shading 设置了图表的着色方式,使得图表看起来更加生动。

  • 动态数据:你可以将 chartData 替换为动态获取的数据源,例如通过 API 请求获取实时数据,并将其传递到图表中,实时更新图表显示。

3. 响应式设计

为了确保图表在不同尺寸的屏幕上能够良好显示,我们添加了 resize 事件监听器,以动态调整图表大小。

mounted() {
  this.$nextTick(() => {
    this.initChart();
    window.addEventListener('resize', this.resizeChart);
  });
},
beforeDestroy() {
  window.removeEventListener('resize', this.resizeChart);
},
methods: {
  resizeChart() {
    this.chart.resize();
  },
},

这样,当浏览器窗口大小发生变化时,图表将自动调整大小,以适应新的屏幕宽度。

4. 自定义图形(可选)

如果你希望对柱状图的柱体进行更加个性化的定制,例如将柱体替换为立方体,ECharts 提供了 graphic API 来绘制自定义形状。以下是一个扩展例子,展示了如何自定义柱状图的形状:

const CubeLeft = echarts.graphic.extendShape({
  shape: {
    x: 0,
    y: 0,
  },
  buildPath: function (ctx, shape) {
    const xAxisPoint = shape.xAxisPoint;
    const c0 = [shape.x, shape.y];
    const c1 = [shape.x - 20, shape.y - 20];
    const c2 = [xAxisPoint[0] - 20, xAxisPoint[1] - 20];
    const c3 = [xAxisPoint[0], xAxisPoint[1]];
    ctx.moveTo(c0[0], c0[1])
      .lineTo(c1[0], c1[1])
      .lineTo(c2[0], c2[1])
      .lineTo(c3[0], c3[1])
      .closePath();
  },
});

通过这种方式,你可以完全自定义柱体的外观和行为,使其更具立体感和动态效果。

5. 扩展功能:动画与交互

ECharts 还支持丰富的动画效果和用户交互。你可以使用 animation 属性来控制图表的动画,并通过 events 监听用户的点击、鼠标悬浮等操作。

例如,添加点击事件:

methods: {
  onChartClick(event) {
    console.log('Chart clicked:', event);
  },
},
mounted() {
  this.$nextTick(() => {
    this.initChart();
    this.chart.on('click', this.onChartClick);
  });
},

通过这种方式,你可以在用户与图表交互时提供更多反馈和交互效果。

总结与扩展

通过本教程,你已经学习了如何在 Vue 2 项目中使用 ECharts 构建 3D 柱状图,并且掌握了如何进行数据可视化的基本配置。在此基础上,你可以继续扩展图表的功能,进行更多的定制化设计,例如:

  • 动态数据展示:从后端获取实时数据并更新图表。
  • 多图表组合:将多个图表整合在同一个页面中,进行更复杂的数据分析展示。
  • 增强的交互体验:通过增加动画、动态交互效果,提升用户体验。

如果你有更复杂的数据需求,ECharts 还支持其他类型的 3D 图表,如 3D 曲面图、3D 散点图等,能够帮助你更加灵活地展示数据。通过不断的学习和实践,你将能够实现更加精美且高效的数据可视化效果。


通过这篇文章,我们不仅介绍了如何实现基本的 3D 柱状图,还分享了 Vue 与 ECharts 配合使用时的一些技巧和思路,帮助你在项目中创建出更多交互式和动态的数据可视化图表。

希望这篇文章对你的前端开发有所帮助!欢迎在评论区留言,分享你对图表的实现方式或遇到的技术难题。

标签:category,Vue,图表,柱状图,ECharts,3D
From: https://blog.csdn.net/mmc123125/article/details/143977039

相关文章

  • Vue 单页应用(SPA)与多页应用(MPA)设计
    Vue单页应用(SPA)与多页应用(MPA)设计在前端开发中,Vue是一个非常受欢迎的框架,因其高效、灵活而被广泛使用。而在Vue项目中,我们经常会遇到单页应用(SPA)和多页应用(MPA)这两种设计模式。今天,我们就来聊聊这两者的区别、优缺点以及如何在Vue中实现它们。一、什么是单页应用(SP......
  • Vue3.0 实操学习笔记
    安装 node.js安装 https://nodejs.org/en安装后执行node-v查看是否有异常以及npm-v查看是否异常调整为淘宝镜像,cnpm-v查看是否异常npminstall-gcnpm--registry=https://registry.npm.taobao.orgVue安装以及安装脚手架 vue-V查看是否异常cnpmi-......
  • 推荐 vue 最好用非常强大表格组件 vxe-table,vue 哪个表格组件好用
    vxe-table是一个全功能vue表格库,非常强大的功能基本可以满足对表格对表格的一切需求。不管是普通列表,大数据列表。可编辑表格,数据校验、Excel单元格选择、复制粘贴等。。。官网:https://vxetable.cngitee安装npminstallvxe-pc-ui@4.3.5vxe-table@4.9.6//...import......
  • Vue Devtools的下载和安装
    1.下载下载地址:https://github.com/vuejs/vue-devtools/tree/v5.1.1 下载下来zip包。解压到指定文件夹 2.安装依赖在这个目录,执行npminstall命令进行依赖安装 3.修改配置打开解压目录vue-devtools-master下的shells/Chrome/manifest.json文件,将代码"persistent":fal......
  • echart 双坐标 柱状图-折线图
    <!DOCTYPEhtml><html><head><metacharset="utf-8"><title>ECharts</title><!--引入echarts.js--><scriptsrc="./echarts.min.js"></script></head><bodyst......
  • (系列十二)Vue3+.Net8实现用户登录(超详细登录文档)
    说明  该文章是属于OverallAuth2.0系列文章,每周更新一篇该系列文章(从0到1完成系统开发)。   该系统文章,我会尽量说的非常详细,做到不管新手、老手都能看懂。   说明:OverallAuth2.0是一个简单、易懂、功能强大的权限+可视化流程管理系统。友情提醒:本篇文章是属于系......
  • pnpm -F @opentiny/tiny-engine-controller -F @opentiny/tiny-engine-dsl-vue build
    pnpm-F@opentiny/tiny-engine-controller-F@opentiny/tiny-engine-dsl-vuebuild命令的作用是使用pnpm包管理器对指定的工作区包进行构建。具体来说:pnpm:这是Node.js的包管理器,类似于npm,但更高效,支持工作区(workspace)管理。-F或--filter:这是一个选项,用于筛选特定的工......
  • Vue3+Typescript+Axios+.NetCore实现导出Excel文件功能
    前端代码//导出ExcelconstexportMaintenanceOrderSettlementItemExcelClick=async()=>{leturl=`${VITE_APP_API_URL}/api/app/maintenance/settlement-service-item/${currentMaintenanceOrderId.value}/${currentMaintenanceOrderSettlementRow.value.id}`;......
  • Vue基础知识—— v-model、watch、computed
    接上一篇Vue知识点​想要学习更多前端知识:点击Web前端专栏 目录一、 双向数据绑定指令v-model(实时渲染)二、数据变动侦听器watch 三、计算属性 computed一、 双向数据绑定指令v-model(实时渲染) 在Vue.js中,v-model是一个指令,用于实现双向数据绑定。它可以在表单......
  • Docker:Docker搭建Jenkins并共用宿主机Docker部署服务(三)构建Vue前端服务
    前言继续完成前端服务部署,Jenkins的搭建与插件安装可以观看上一篇文章:https://www.cnblogs.com/nhdlb/p/18561435新建视图方便将整个项目的前端和后端整合起来(之前的文章都已经创建,这里就不用再创建啦!)新建任务选择视图创建项目(任务)任务配置项目结构这里我先介绍下项......