前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >vue使用echarts生成动态图表

vue使用echarts生成动态图表

作者头像
风花一世月
发布2024-03-19 13:04:48
1540
发布2024-03-19 13:04:48
举报
文章被收录于专栏:前端

不要使用最新的5.0版本安装4.0的

代码语言:javascript
复制
npm install echarts@4.9.0

main.js引入

代码语言:javascript
复制
import echarts from 'echarts'

Vue.prototype.$echarts = echarts

  页面.vue

代码语言:javascript
复制
<template>
  <div id='myChart' style='width:600px;height:600px'>
</div>

</template>

<script>
 export default {
 name: 'hello',
 data () {
  return {
   data:[],
   now: new Date(1997,9,3),
   oneDay:24*3600*1000,
   value:Math.random()*1000
  }
 },
 mounted(){
  for (var i = 0; i < 1000; i++) {
    this.data.push(this.randomData());
  }
  this.drawLine();
  let that=this;
   let myChart = this.$echarts.init(document.getElementById('myChart'))
   this.timer = setInterval(function () {
      
      // 数据小于40的时候只添加,超过40的时候删除第一个
      // if(that.data.length<40){
      if(that.data.length<500){
        that.data.push(that.randomData());
      }else{
        for (var i = 0; i < 5; i++) {
          // console.log(that.data) 
            that.data.shift();
            console.log(that.data)
            that.data.push(that.randomData());
        }
      }

      
      myChart.setOption({
          series: [{
              data: that.data
          }]
      });
  }, 1000);
  
 },
 created(){
   
 },
  beforeDestroy() {
    clearInterval(this.timer);
  },
 methods: { 
   randomData() {
      this.now = new Date(+this.now + this.oneDay);
      this.value = this.value + Math.random() * 21 - 10;
      return {
          name: this.now.toString(),
          value: [
              [this.now.getFullYear(), this.now.getMonth() + 1, this.now.getDate()].join('/'),
              Math.round(this.value)
          ]
      };
  },
  drawLine(){
    // 基于准备好的dom,初始化echarts实例
    let myChart = this.$echarts.init(document.getElementById('myChart'))
    // 绘制图表
    myChart.setOption({title: {
        text: '动态数据 + 时间坐标轴'
    },
    tooltip: {
        trigger: 'axis',
        formatter: function (params) {
            params = params[0];
            var date = new Date(params.name);
            return date.getDate() + '/' + (date.getMonth() + 1) + '/' + date.getFullYear() + ' : ' + params.value[1];
        },
        axisPointer: {
            animation: false
        }
    },
    xAxis: {
        type: 'time',
        splitLine: {
            show: false
        }
    },
    yAxis: {
        type: 'value',
        boundaryGap: [0, '100%'],
        splitLine: {
            show: false
        }
    },
    series: [{
        name: '模拟数据',
        type: 'line',
        showSymbol: false,
        hoverAnimation: false,
        data: this.data
    }]
    });
  }
 }
}
</script>

<style scoped lang="less">

</style>
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2021-03-29,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档