循序渐进VUE+Element 前端应用开发(10)--- 基于vue-echarts处理各种图表展示

在我们做应用系统的时候,往往都会涉及图表的展示,综合的图表展示能够给客户带来视觉的享受和数据直观体验,同时也是增强客户认同感的举措之一。基于图表的处理,我们一般往往都是利用对应第三方的图表组件,然后在这个基础上为它的数据模型提供符合要求的图表数据即可,VUE+Element 前端应用也不例外,我们这里使用了基于 vue-echarts 组件模块来处理各种图表 vue-echarts 是对 echarts 图表组件的封装。

1、图表组件的安装使用

首先使用 npm 安装 vue-echarts 组件。

git 地址:https://github.com/ecomfe/vue-echarts

NPM 安装命令

npm install echarts vue-echarts

然后在对应模块页面里面引入对应的组件对象,如下代码所示。

<script>
import ECharts from 'vue-echarts' // 主图表对象
import 'echarts/lib/chart/line' // 曲线图表
import 'echarts/lib/chart/bar' // 柱状图
import 'echarts/lib/chart/pie' // 饼状图
import 'echarts/lib/component/tooltip' // 提示信息

接着在 Vue 组件里面对象中加入对象即可。

export default {
  components: {
    'v-chart': ECharts
  },

如果是全局注册使用,那么可以在 main.js 里面进行加载

// 注册组件后即可使用
Vue.component('v-chart', VueECharts)

我们来看看图表展示的效果图

柱状图效果

 

饼状图

  

 曲线图

  

 其他类型,极坐标和散点图形

  

 或者曲线和柱状图组合的图形

 更多的案例可以参考官网的展示介绍:https://echarts.apache.org/examples/zh/index.html

  

2、各种图表的展示处理

对于我们需要的各种常规的柱状图、饼状图、折线图(曲线图)等,我下来介绍几个案例代码,其他的一般我们根据官方案例提供的 data 数据模型,构造对应的数据即可生成,就不再一一赘述。

另外,我们也可以参考 Vue-echarts 封装的处理 demo:https://github.com/ecomfe/vue-echarts/tree/master/src/demo 

对于柱状图,效果如下

在 Vue 模块页面的 Template 里面,我们定义界面代码如下即可。

<v-chart
  ref="simplebar"
  :options="simplebar"
  autoresize
/>

然后在 data 里面为它准备好数据即可,如下代码所示。

 data() {
    return {
      simplebar: {
        title: { text: '柱形图 Demo' },
        tooltip: {},
        xAxis: {
          data: ['衬衫', '羊毛衫', '雪纺衫', '裤子', '高跟鞋', '袜子']
        },
        yAxis: {},
        series: [{
          name: '销量',
          type: 'bar',
          data: [5, 20, 36, 10, 10, 20]
        }]
      }
    }
  }

当然我们也可以把这些构造对应数据的逻辑放在单独的 JS 文件里面,然后导入即可。

例如对于饼图,它的界面效果如下所示。

它的 vue 视图下,Template 里面的代码如下所示。

<v-chart
  ref="pie"
  :options="pie"
  autoresize />

一般对于图表的数据,由于处理代码可能不少,建议是独立放在一个 JS 文件里面,然后我们通过 import 导入即可使用。

  然后在 data 里面引入对应的对象即可,如下所示。

<script>
import ECharts from 'vue-echarts' // 主图表对象
import 'echarts/lib/chart/line' // 曲线图表
import 'echarts/lib/chart/bar' // 柱状图
import 'echarts/lib/chart/pie' // 饼状图
import 'echarts/lib/component/tooltip' // 提示信息

// 导入报表数据
import getBar from './chartdata/bar'
import pie from
'./chartdata/pie'

import scatter from
'./chartdata/scatter'
import lineChart from
'./chartdata/lineChart'
import incomePay from
'./chartdata/incomePay'

export default {
components: {
'v-chart': ECharts
},
return {
pie,
scatter,,
lineChart,
incomePay,
simplebar: {
title: { text:
'柱形图 Demo' },
tooltip: {},
xAxis: {
data: [
'衬衫', '羊毛衫', '雪纺衫', '裤子', '高跟鞋', '袜子']
},
yAxis: {},
series: [{
name:
'销量',
type:
'bar',
data: [
5, 20, 36, 10, 10, 20]
}]
}
}
},

其中 pie.js 里面放置的是处理饼图数据的逻辑,如下代码所示。

export default {
  title: {
    text: '饼图程序调用高亮示例',
    x: 'center'
  },
  tooltip: {
    trigger: 'item',
    formatter: '{a} <br/>{b} : {c} ({d}%)'
  },
  legend: {
    orient: 'vertical',
    left: 'left',
    data: ['直接访问', '邮件营销', '联盟广告', '视频广告', '搜索引擎']
  },
  series: [
    {
      name: '访问来源',
      type: 'pie',
      radius: '55%',
      center: ['50%', '60%'],
      data: [
        { value: 335, name: '直接访问' },
        { value: 310, name: '邮件营销' },
        { value: 234, name: '联盟广告' },
        { value: 135, name: '视频广告' },
        { value: 1548, name: '搜索引擎' }
      ],
      itemStyle: {
        emphasis: {
          shadowBlur: 10,
          shadowOffsetX: 0,
          shadowColor: 'rgba(0, 0, 0, 0.5)'
        }
      }
    }
  ]
}

在界面处理的时候,值得注意的时候,有时候 Vue 页面处理正常,但是图表就是没有出来,可能是因为高度或者宽度为 0 的原因,需要对对应的样式进行处理设置,以便能够正常显示出来。

如下是我 对图表的设置的样式处理,使得图表在一个卡片的位置能够显示正常。

<style scoped>
  .echarts { width: 100%; height: 400px;}

.el-row {
margin-bottom
: 20px;
}
.el-col
{
border-radius
: 4px;
margin-bottom
: 20px;
}
</style>

最后几个界面组合一起的效果如下所示。

 以上就是基于 vue-echarts 处理各种图表展示,其中常规的引入组件很容易的,主要就是需要根据对应的图表案例,参考数据组成的规则,从而根据我们实际情况构建对应的数据,赋值给对应的模型变量即可。

 

为了方便读者理解,我列出一下前面几篇随笔的连接,供参考:

循序渐进 VUE+Element 前端应用开发 (1)--- 开发环境的准备工作

循序渐进 VUE+Element 前端应用开发 (2)--- Vuex 中的 API、Store 和 View 的使用

循序渐进 VUE+Element 前端应用开发 (3)--- 动态菜单和路由的关联处理

循序渐进 VUE+Element 前端应用开发 (4)--- 获取后端数据及产品信息页面的处理

循序渐进 VUE+Element 前端应用开发 (5)--- 表格列表页面的查询,列表展示和字段转义处理

循序渐进 VUE+Element 前端应用开发 (6)--- 常规 Element 界面组件的使用

循序渐进 VUE+Element 前端应用开发 (7)--- 介绍一些常规的 JS 处理函数

循序渐进 VUE+Element 前端应用开发 (8)--- 树列表组件的使用

循序渐进 VUE+Element 前端应用开发 (9)--- 界面语言国际化的处理

循序渐进 VUE+Element 前端应用开发 (10)--- 基于 vue-echarts 处理各种图表展示 

循序渐进 VUE+Element 前端应用开发 (11)--- 图标的维护和使用

循序渐进 VUE+Element 前端应用开发 (12)--- 整合 ABP 框架的前端登录处理

循序渐进 VUE+Element 前端应用开发 (13)--- 前端 API 接口的封装处理

循序渐进 VUE+Element 前端应用开发 (14)--- 根据 ABP 后端接口实现前端界面展示

循序渐进 VUE+Element 前端应用开发 (15)--- 用户管理模块的处理

循序渐进 VUE+Element 前端应用开发 (16)--- 组织机构和角色管理模块的处理 

循序渐进 VUE+Element 前端应用开发 (17)--- 菜单管理

循序渐进 VUE+Element 前端应用开发 (18)--- 功能点管理及权限控制  

VUE+Element 前端应用开发框架功能介绍 

循序渐进 VUE+Element 前端应用开发 (19)--- 后端查询接口和 Vue 前端的整合

使用代码生成工具快速生成基于 ABP 框架的 Vue+Element 的前端界面

循序渐进 VUE+Element 前端应用开发 (20)--- 使用组件封装简化界面代码

循序渐进 VUE+Element 前端应用开发 (21)--- 省市区县联动处理的组件使用

循序渐进 VUE+Element 前端应用开发 (22)--- 简化 main.js 处理代码,抽取过滤器、全局界面函数、组件注册等处理逻辑到不同的文件中

循序渐进 VUE+Element 前端应用开发 (23)--- 基于 ABP 实现前后端的附件上传,图片或者附件展示管理 

循序渐进 VUE+Element 前端应用开发 (24)--- 修改密码的前端界面和 ABP 后端设置处理

循序渐进 VUE+Element 前端应用开发 (25)--- 各种界面组件的使用(1)

循序渐进 VUE+Element 前端应用开发 (26)--- 各种界面组件的使用(2)

电商商品数据库的设计和功能界面的处理 

循序渐进 VUE+Element 前端应用开发 (27)--- 数据表的动态表单设计和数据存储

循序渐进 VUE+Element 前端应用开发 (28)--- 附件内容的管理 

循序渐进 VUE+Element 前端应用开发 (29)--- 高级查询条件的界面设计

部署基于.netcore5.0 的 ABP 框架后台 Api 服务端,以及使用 Nginx 部署 Vue+Element 前端应用

循序渐进 VUE+Element 前端应用开发 (30)--- ABP 后端和 Vue+Element 前端结合的分页排序处理 

循序渐进 VUE+Element 前端应用开发 (31)--- 系统的日志管理,包括登录日志、接口访问日志、实体变化历史日志

循序渐进 VUE+Element 前端应用开发 (32)--- 手机短信动态码登陆处理 

循序渐进 VUE+Element 前端应用开发 (33)--- 邮件参数配置和模板邮件发送处理 

使用代码生成工具快速开发 ABP 框架项目 

使用 Vue-TreeSelect 组件实现公司 - 部门 - 人员级联下拉列表的处理 

使用 Vue-TreeSelect 组件的时候,用 watch 变量方式解决弹出编辑对话框界面无法触发更新的问题