zoukankan      html  css  js  c++  java
  • mpvue 使用echarts动态绘制图表(数据改变重新渲染图表)

      最近在公司开发一款微信小程序,按照客户需求用饼状图显示当前设备状态(开机、故障、关机),于是就在网上寻找各种资料,找了很多mpvue使用关于echarts绘制图表,最终功夫不负有心人,找到一篇关于mpvue使用echarts的文章,链接点击这里,需要的同学自行查看。这里面说明了如何使用echarts绘制图表,其中echarts的配置项option大家可以查看echarts的官方文档进行配置,请移步这里,点击对应的实例,里面就有详细的option配置,还有一些关于echarts使用参数及配置手册请看这里

      下面我将为大家介绍如何会根据后台返回的数据多次渲染图表,先给大家看一段mpvue中使用echarts的代码

      
     1 <template>
     2   <div class="container">
     3     <div class="echarts">
     4       <div class="wrap">
     5         <mpvue-echarts :echarts="echarts" :onInit="initChart" />
     6       </div>
     7     </div>
     8   </div>
     9 </template>
    10 <script>
    11 import machineList from './machineList'
    12 import * as echarts from '../../../static/echarts/echarts.min'
    13 import mpvueEcharts from 'mpvue-echarts'
    14 let chart = null
    15 export default {
    16   data () {
    17     return {
    18       echarts,
    19       IN_PRODUCTION: 1,
    20       IN_STAND: 1,
    21       OFF_LINE: 1,
    22       BREAKDOWN: 1,
    23       machineList: [],
    24       showState: false,
    25       machineState: 'IN_PRODUCTION'
    26     }
    27   },
    28   components: {
    29     mpvueEcharts,
    30     machineList
    31   },
    32   onLoad () {
    33     this.getMachineStateInfo()
    34   },
    35   methods: {
    36     stateChange (val) {
    37       this.machineState = val
    38     },
    39     test () {
    40       var option = {
    41         calculable: false,
    42         series: [
    43           {
    44             type: 'pie',
    45             radius: '55%',
    46             center: ['50%', '60%'],
    47             data: [
    48               {value: this.IN_PRODUCTION, name: '开机 : ' + this.IN_PRODUCTION},
    49               {value: this.OFF_LINE, name: '关机 : ' + this.OFF_LINE},
    50               {value: this.BREAKDOWN, name: '故障 : ' + this.BREAKDOWN}
    51             ]
    52           }
    53         ]
    54       }
    55       chart.setOption(option)
    56     },
    57     initChart (canvas, width, height) {
    58       chart = echarts.init(canvas, 'light', {
    59          width,
    60         height: height
    61       })
    62       canvas.setChart(chart)
    63       return chart
    64     },
    65     async getMachineStateInfo () {
    66       let resp = await this.$http.get('machine/state/count')
    67       if (resp.data.code === 1) {
    68         this.IN_PRODUCTION = resp.data.data.machineOpen
    69         this.OFF_LINE = resp.data.data.machineClosed
    70         this.BREAKDOWN = resp.data.data.machineAlarm
    71         setTimeout(() => {
    72           this.test()
    73         },1000)
    74       } else {
    75         wx.showToast({
    76           title: resp.data.message,
    77           icon: 'none',
    78           duration: 3000
    79         })
    80       }
    81     }
    82   }
    83 }
    84 </script>
    85 
    86 <style scoped>
    87   .echarts{
    88      100%;
    89     font-size: 14px;
    90   }
    91   .wrap {
    92      100%;
    93     height: 200px;
    94     margin: 30px auto;
    95     margin-top: 0px;
    96   }
    97 </style>
    mpvue 使用 echarts

      按照其他博客介绍,echarts的option配置选项是写到图表初始化函数initChart中,我这里把配置项option提出来写到test函数中目的就是根据后台数据多次渲染图表,echarts图表多次渲染的原理就是更换配置项中的某些值,然后chart.setOption(option)。这里有一个getMachineStateInfo函数,就是从后台读取渲染图表需要的数据。如果看了代码还有什么不懂的可以评论区评论或者留言,我将会在第一时间解答。

  • 相关阅读:
    2017.10.30 天晴 昨天十公里没减肥
    我的一辩论点,随心而论
    2017.10.27 多云 天气晴
    2017.10.14 多云 天气转冷
    2017.10.9 天晴 准备减肥,有一起打卡的吗
    2017.10.7 国庆第8天
    2017.10.7 国庆第7天{鳏寡孤独}
    java多线程概念
    spring mvc分拣查询参数
    spring mvc 导出excel
  • 原文地址:https://www.cnblogs.com/hexiaobao/p/10235097.html
Copyright © 2011-2022 走看看