vue使用echarts生成动态图表

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

npm install echarts@4.9.0

main.js引入

import echarts from 'echarts'

Vue.prototype.$echarts = echarts

  页面.vue

<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>

  

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Vue3中使用echarts动态生成series数据,可以通过以下步骤实现: 1. 在初始化chart时,定义一个空的series数组,并将其作为option对象的初始值。 2. 通过接口获取需要动态添加的数据。 3. 将接口返回的数据进行处理,生成需要的series数据。 4. 将处理后的series数据添加到option对象的series数组中。 5. 使用echarts的setOption方法将更新后的option对象应用到图表中。 具体代码示例如下: ```javascript chartInit(legend, xAxis, newResult) { let option = { // 其他配置项 legend: { data: legend, }, series: [], // 初始化一个空的series数组 }; // 通过接口获取数据并处理 this.axios.post(this.dataUrl).then((res) => { if (res.result === '00000') { let seriesData = []; for (let i = 0; i < res.data.length; i++) { seriesData.push({ name: res.data[i].name, type: 'line', // 根据需求设置series的类型 data: res.data[i].data, // 根据接口返回的数据设置series的数据 }); } option.series = seriesData; // 将处理后的series数据赋值给option对象的series数组 // 使用setOption方法更新图表 this.$refs.chart.clear(); this.$refs.chart.setOption(option); } else { this.$Message.error(res.data.information); } }); } ``` 这段代码中,首先定义了一个空的series数组,然后通过接口获取数据并将其处理成对应的series格式,最后将处理后的series数据赋值给option对象的series数组,并使用setOption方法更新图表。 请注意,上述代码中的`this.$refs.chart`应替换为你实际使用echarts图表组件的引用名称。<span class="em">1</span><span class="em">2</span><span class="em">3</span><span class="em">4</span>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值