前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >3D 饼图在 VUE 中的实现

3D 饼图在 VUE 中的实现

作者头像
ZXand618
发布2022-04-10 10:18:33
3.2K0
发布2022-04-10 10:18:33
举报

最近有多位读者反应,3D 饼图在 VUE 环境里跑不通。可我其实是一个先学 ECharts 后学 Javascript 的前端外行,再加上读者往往也没有告诉我具体的报错信息是什么,所以一时也没能帮读者找出问题原因。

这两天有空,为了看看到底是什么原因,我跑去查了查 VUE 的手册和教程,尝试在 @vue/cli 创建的 webpack 中,把我的 3D 饼图跑通。最终效果如下:

下文主要分为三大块:

  1. 环境准备(node.js、vue、webpack、@vue/cli 安装等)
  2. 创建 VUE 项目,安装依赖
  3. App.vue 文件编写

环境准备(前端们见笑了,可以略过)

  • 安装 Node.js

建议跟我一样的前端外行,直接使用包管理器安装,具体搜索「Installing Node.js via package manager」吧,我之前用的好像是「yum」,安装后使用命令:

代码语言:javascript
复制
node -v

查看安装结果。

  • 安装 @vue/cli

Node.js 安装好之后,使用命令:

代码语言:javascript
复制
npm install -g @vue/cli

安装「Vue-CLI」,完成后使用命令「vue -V」查看安装结果。

  • 创建项目

「Vue-CLI」安装后,就可以使用「vue create xxx」命令创建项目(我选择的「Vue 2」),xxx 是项目名称,也是自动创建的项目目录名。

项目创建完成,按提示跑一下先看看「cd xxx&&npm run serve」

浏览器访问,效果如下

安装 ECharts 相关依赖

在项目目录中执行命令

代码语言:javascript
复制
npm install echarts@4.9.0 echarts-gl vue-echarts –-save

安装所需的 ECharts 依赖。

Vue-ECharts Apache ECharts (incubating) component for Vue.js. https://github.com/ecomfe/vue-echarts

App.vue 文件编写

「Vue-ECharts」的 README.md 中,有一个极坐标线图的例子可供参考。

我就是参考那个文件,改写我的 3D 饼图的。有兴趣的同学可以自行尝试一下,也可以后台回复数字「210106」,下载我写好的「App.vue」,替换掉 src 目录下的 App.vue。

改写/替换好之后,再次运行项目

浏览器访问,效果如下

  • App.vue 内容简要解释

从文档中查到,扩展名为 .vue 的文件被称为 single-file components (单文件组件),而这个 App.vue 又有点像 Express 的 app.js,似乎是整个项目的入口文件。作为新手,为了省事,我直接把内容写到了 App.vue 中…

  • 通过 <v-chart> 引入 vue-echarts 组件(注册是在后面的<scrpit>标签内),并绑定数据、绑定事件

:options="pie3D":也就是 v-bind:options="pie3D",这个 options 就是 ECharts 实例的数据,修改这个参数会触发 ECharts 实例的 setOption 方法。

注意:如果直接修改 options 绑定的数据而对象引用保持不变,setOption 方法调用时将带有参数 notMerge: false。否则,如果为 options绑定一个新的对象,setOption 方法调用时则将带有参数 notMerge: true。

ref="pie3D":ref 被用来给元素或子组件注册引用信息。

:manual-update=true:当将 manual-update prop 指定为 true 且不传入 options prop 时,数据将不会被监听。然后,你需要用 ref 获取组件实例以后手动调用 mergeOptions 方法来更新图表。

@click="onClick":也就是 v-on:click="onClick",为 click 事件绑定 onCLick 方法,而方法也是在后面的 <script> 标签中定义的。

后略(同上)

  • 在<scrpit>标签中编写 Javascript 代码,先 import 所需的依赖,再定义一些函数(这几个函数基本都没有改动)
  • <script>标签最后的 export default 中:components 中注册了组件 v-chart,data 定义了 Vue 实例的数据对象,methods 中定义了一些方法(函数),用于响应 click 等鼠标事件。

其中 onClick、onMouseover、onGlobalout 这三个函数,是根据之前 Gallery 中例子里的,三个 mychart.on('xxx', handler) 改写的。主要改动是通过 this.pie3D 获取、更新饼图当前的 option 数据,通过 mergeOptions 方法刷新图表。

此前的 3D 饼图文章

另外,有些读者在 Gallery 看到的例子可能是基于我这个改写的,增加了单独设置高度的功能:

回复评论:能单独调每一块内容的高度吗..有高有低的那种 你们都太有想法了~ 把 z:function(u, v) { } 里面的返回值,都乘以一个系数就可以,然后这个系数作为 getParametricEquation 函数的入参传进来。(当然后面那些高亮、放大效果也得跟着改一下) https://www.makeapie.com/editor.html?c=xojSDhHAMm

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2021-01-06,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 ZXand618的ECharts之旅 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
图像处理
图像处理基于腾讯云深度学习等人工智能技术,提供综合性的图像优化处理服务,包括图像质量评估、图像清晰度增强、图像智能裁剪等。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档