echarts5.0使用动态柱形图用定时器限定次数vue

Posted Afololer

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了echarts5.0使用动态柱形图用定时器限定次数vue相关的知识,希望对你有一定的参考价值。

<style scoped>
  #chart_example{
    width: 50%;
    height: 500px;
  }
</style>
<template>
  <div  >
    <h2>vue中插入Echarts示例</h2>
    <div id="chart_example">

    </div>

  </div>
</template>
<script>
  import * as echarts from 'echarts'
  //import world from '../node_modules/echarts/map/js/world.js'
  // import '../../node_modules/echarts/map/js/china.js' // 引入中国地图数据

  export default {
    data() {
      return {}
    },

    mounted() {
      let cnt = 0
      var timeData = [];
      var now = new Date("February 27, 2020 11:13:00");
      Date.prototype.getMonthDay = function(){
        return (this.getMonth() + 1) + '.' + this.getDate();
      }
      timeData.push(now.getMonthDay());
      for(var i = 0 ; i < 2 ; i ++){
        now.setDate(now.getDate() + 1);

        timeData.push(now.getMonthDay())
      }
      const data = [];
      for (let i = 0; i < 5; ++i) {
        data.push(Math.round(Math.random() * 200));
      }
      let myChart = echarts.init(document.getElementById('chart_example'),'dark');

      let option = {
                xAxis: {
                  max: 'dataMax'
                },
                yAxis: {
                  type: 'category',
                  data: ['A', 'B', 'C', 'D', 'E'],
                  inverse: true,
                  animationDuration: 300,
                  animationDurationUpdate: 300,
                  max: 2 // only the largest 3 bars will be displayed
                },
                series: [
                  {
                    realtimeSort: true,
                    name: 'X',
                    type: 'bar',
                    data: data,
                    label: {
                      show: true,
                      position: 'right',
                      valueAnimation: true
                    }
                  }
                ],
                legend: {
                  show: true
                },
                animationDuration: 0,
                animationDurationUpdate: 3000,
                animationEasing: 'linear',
                animationEasingUpdate: 'linear'
              };
      function run() {
        for (var i = 0; i < data.length; ++i) {
          if (Math.random() > 0.9) {
            data[i] += Math.round(Math.random() * 2000);
          } else {
            data[i] += Math.round(Math.random() * 200);
          }
        }
        myChart.setOption({
          series: [
            {
              type: 'bar',
              data
            }
          ]
        });
      }
      setTimeout(function () {
        run();
      }, 0);
      // function sleep(millisecond) {
      //   return new Promise(resolve => {
      //     setTimeout(() => {
      //       resolve()
      //     }, millisecond)
      //   })
      // }
     //alert(timeData.length)
      let myvar = setInterval(function () {
        if(cnt>timeData.length)
        {
          clearInterval(myvar)
        }

        run();
        cnt++;
      }, 3000); //次数为timeData的长
      myChart.setOption(option)

      //建议加上以下这一行代码,不加的效果图如下(当浏览器窗口缩小的时候)。超过了div的界限(红色边框)
      window.addEventListener('resize',function() {myChart.resize()});
    },
    methods: {},
    watch: {},
    created() {

    }

  }
</script>

可以根据指定天数动态更新数据

注意
使用时如果echarts不是5.0版本,要升级到5.0
同时

import echarts from "echarts";

更换为

  import * as echarts from 'echarts'

由于是动态的,无法截图,可以参考官方示例
https://echarts.apache.org/examples/zh/editor.html?c=bar-race

以上是关于echarts5.0使用动态柱形图用定时器限定次数vue的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 Extjs 动态改变柱形图的颜色?

如何用MATLAB做双纵坐标图?其中一条是折线图,另一个是柱形图,还有我想做多子图的

如何让java利用POI导出excel表,并在Excel表中根据表格的数据生成柱形图。要求柱形图是动态的。

echarts怎么动态添加多条柱形图

HighchartsAJAXJSONJQuery实现动态数据交互显示图表柱形图

R语言动态交互绘图|plotly包-交互式柱形图