echarts.js 动态生成多个图表 使用vue封装组件操作


Posted in Javascript onJuly 19, 2020

组件只做了简单的传值处理,记录开发思路及echarts简单使用。

这里默认所有图表样式一致,都为柱状图,如需其他类型,可查阅echarts官网文档,再动态传值即可。

vue 使用组件 ------在外层用v-for 循环,传不同值进charts 即可

<!-- 传入对应的数据给子组件 -->
   <charts
    :options="item.select" 
    :id='"charts" +index'
    :index="index"
    style="width: 900px;height:400px;"
   ></charts>
   <!-- 传入对应的数据给子组件 end -->

vue创建子组件-----初始化空模板

<!-- 图表组件 -->
 <template>
  <div></div>
 </template>
 <!-- 图表组件 end -->

主要部分 ------ 初始化echarts.js

Vue.component('charts', {
  template: '#charts',  
  // 传入对应的数值与动态index
  props: ['options', 'index'],
  methods: {
   initOption() {
   var that = this
   var arr1 = [] // x轴刻度
   var arr2 = [] // y轴数据值
 
    // 取出需要的数据
   this.options.forEach(element => {
    arr1.push(element.selectedTopic)
    arr2.push(element.peopleNum)
   })
 
   // 基于准备好的dom,初始化echarts实例
   var myChart = echarts.init(
    document.getElementById('charts' + this.index)
   )
 
   // 指定图表的配置项和数据
   var option = {
    color: ['#3582F8'],
    tooltip: {
    trigger: 'axis',
    axisPointer: {
     // 坐标轴指示器,坐标轴触发有效
     type: 'shadow' // 默认为直线,可选为:'line' | 'shadow'
    }
    },
    grid: {
    left: '3%',
    right: '4%',
    bottom: '3%',
    containLabel: true
    },
    xAxis: [
    {
     type: 'category',
     data: arr1, // X轴的刻度
     axisTick: {
     alignWithLabel: true
     }
    }
    ],
    yAxis: [
    // y轴的刻度值自动调整
    {
     type: 'value'
    }
    ],
    series: {
    name: 'y轴数值',
    type: 'bar',
    barWidth: '60%',
    data: arr2 // 具体选择数值
    }
   }
 
   // 使用刚指定的配置项和数据显示图表。
   myChart.setOption(option)
   }
  },
  mounted() {
   this.initOption()
  },
  created() {}
  })

补充知识:vue根据获取的数据动态循环渲染多个echart(多个dom节点,多个ID)

//在dom节点加载之后调用渲染echart仪表盘方法,this.$nextTick(function(){ }

<div class="chart">
 
     <div class="geo" v-for="(dataval, index) in dataVal" :key="index" :id="forId(index)"></div>
 
</div>
methods: {
 forId:function(index){
  return "geo_" +index
 },
 
 mapTree() {
   this.$nextTick(function(){
    for(var i=0;i<this.dataVal.length;i++){
      //获取id放入数组中,以便下面渲染echart仪表盘使用
     this.getId.push(this.$echarts.init(document.getElementById('geo_'+i)));
     this.getId[i].setOption({
      title: {
       text: this.dataVal[i].name+'栋',
       textStyle: {
        color: '#00f2f1',
        fontSize: 14
       },
       left: 'center',
       top: 5
      },
      tooltip: {
       formatter: '{a} <br/>{c}'
      },
      series:[
      {
       name: '工作电表数',
       type: 'gauge',
       radius: '80%',
       min: 0,
       max: Number(this.dataVal[i].sum),
       splitNumber: 10,
       axisLine: {      // 坐标轴线
        lineStyle: {    // 属性lineStyle控制线条样式
          color: [[0.30, '#ff4500'], [0.80, '#1e90ff'], [1, 'lime']],
          width: 1,
          shadowColor: '#fff', //默认透明
        }
       },
       axisLabel: {      // 坐标轴小标记
        color: '#fff',
        shadowColor: '#fff', //默认透明
        shadowBlur: 10
       },
       axisTick: {      // 坐标轴小标记
        length: 4,    // 属性length控制线长
        lineStyle: {    // 属性lineStyle控制线条样式
          color: 'auto',
          shadowColor: '#fff', //默认透明
          shadowBlur: 10
        }
       },
       splitLine: {      // 分隔线
        length: 7,     // 属性length控制线长
        lineStyle: {    // 属性lineStyle(详见lineStyle)控制线条样式
         width: 2,
         color: '#fff',
         shadowColor: '#fff', //默认透明
         shadowBlur: 10
        }
       },
       pointer: {      // 分隔线
        width:4,//指针的宽度
        length:"70%", //指针长度,按照半圆半径的百分比
        shadowColor: '#fff', //默认透明
        shadowBlur: 5
       },
       title: {
        textStyle: {    // 其余属性默认使用全局文本样式,详见TEXTSTYLE
         fontWeight: 'bolder',
         fontSize: 10,
         fontStyle: 'italic',
         color: '#fff',
         shadowColor: '#fff', //默认透明
         shadowBlur: 10
        }
       },
       detail: {
        fontSize: 12,
       },
       data: [{value: this.dataVal[i].normalSum, name: ''}]
      }]
     });
    }
   })
  }
}

以上这篇echarts.js 动态生成多个图表 使用vue封装组件操作就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
javascript 解析后的xml对象的读取方法细解
Jul 25 Javascript
在新窗口打开超链接的方法小结
Apr 14 Javascript
原生js实现addclass,removeclass,toggleclasss实例
Nov 24 Javascript
基于JavaScript实现窗口拖动效果
Jan 18 Javascript
Webpack实现按需打包Lodash的几种方法详解
May 08 Javascript
12个非常有用的JavaScript技巧
May 17 Javascript
JavaScrpt判断一个数是否是质数的实例代码
Jun 11 Javascript
React/Redux应用使用Async/Await的方法
Nov 16 Javascript
解决vue打包后刷新页面报错:Unexpected token
Aug 27 Javascript
layui之table checkbox初始化时选中对应选项的方法
Sep 02 Javascript
Vue.js下拉菜单组件使用方法详解
Oct 19 Javascript
基于js实现数组相邻元素上移下移
May 19 Javascript
JavaScript中reduce()的5个基本用法示例
Jul 19 #Javascript
JS中作用域以及变量范围分析
Jul 18 #Javascript
JS中的变量作用域(console版)
Jul 18 #Javascript
js里面的变量范围分享
Jul 18 #Javascript
理解Proxy及使用Proxy实现vue数据双向绑定操作
Jul 18 #Javascript
深入理解 ES6中的 Reflect用法
Jul 18 #Javascript
详谈Object.defineProperty 及实现数据双向绑定
Jul 18 #Javascript
You might like
模仿OSO的论坛(四)
2006/10/09 PHP
php 301转向实现代码
2008/09/18 PHP
php auth_http类库进行身份效验
2009/03/19 PHP
简单PHP上传图片、删除图片实现代码
2010/05/12 PHP
使用PHP下载CSS文件中的图片的代码
2013/09/24 PHP
PHP的new static和new self的区别与使用
2019/11/27 PHP
在JavaScript中获取请求的URL参数[正则]
2010/12/25 Javascript
js过滤HTML标签以及空格的思路及代码
2013/05/24 Javascript
jQuery实现响应鼠标背景变化的动态菜单效果代码
2015/08/27 Javascript
最简单的tab切换实例代码
2016/05/13 Javascript
JS获取当前页面名称的简单实例
2016/08/19 Javascript
基于jQuery实现发送短信验证码后的倒计时功能(无视页面关闭)
2016/09/02 Javascript
原生js实现简单的链式操作
2017/07/04 Javascript
微信小程序 上传头像的实例详解
2017/10/27 Javascript
vue的全局提示框组件实例代码
2018/02/26 Javascript
Vue表单绑定的实例代码(单选按钮,选择框(单选时,多选时,用 v-for 渲染的动态选项)
2019/05/13 Javascript
JavaScript实现单英文金山打字通
2020/07/24 Javascript
JavaScript 截取字符串代码实例
2019/09/05 Javascript
小程序实现按下录音松开识别语音
2019/11/22 Javascript
python学习笔记:字典的使用示例详解
2014/06/13 Python
python executemany的使用及注意事项
2017/03/13 Python
Python如何快速实现分布式任务
2017/07/06 Python
基于Python pip用国内镜像下载的方法
2018/06/12 Python
Django实现分页功能
2018/07/02 Python
python os.rename实例用法详解
2020/12/06 Python
python学习之使用Matplotlib画实时的动态折线图的示例代码
2021/02/25 Python
美国家用电器和电子产品商店:Abt
2016/09/06 全球购物
ASOS亚洲:ASOS Asia
2018/03/04 全球购物
小学教师的自我评价范例
2013/10/31 职场文书
物流管理专业应届生求职信
2013/11/21 职场文书
商务日语毕业生自荐信
2013/11/23 职场文书
考试退步检讨书
2014/01/15 职场文书
公司周年庆典策划方案
2014/05/17 职场文书
酒店采购员岗位职责
2015/04/03 职场文书
2016年优秀少先队员事迹材料
2016/02/26 职场文书
python pyhs2 的安装操作
2021/04/07 Python