vue+echarts 实现动态折线图

 

 

 

创建折线图组件

components文件夹下创建 TrendsSort.vue 文件

<template>
  <div id="myChart" />
</template>

<script>
import echarts from 'echarts'//引入echarts
import { tv_update_TrendsSort } from '@/api/tv_manage/tv_manage'//这个自己封装好的接口文件
export default {
  name: 'TrendsSort',
  //获取父组件的数据,(没必要获取父组件的数据可以删掉)
  props: {
    temps: {
      type: Object
    }
  },
  data() {
    return {
      // 实时数据数组
      itme: [],
      price: [],
      order: [],
      see: [],
      // 折线图echarts初始化选项
      echartsOption: {
        legend: {
          data: ['收益金额', '订单', '在线人数']
        },
        xAxis: {
          nameTextStyle: {
            fontWeight: 600,
            fontSize: 18
          },
          type: 'category',
          boundaryGap: false,
          data: this.itme
        },
        yAxis: {
          nameTextStyle: {
            fontWeight: 600,
            fontSize: 18
          },
          type: 'value',
          scale: true,
          // boundaryGap: ['15%', '15%'],
          axisLabel: {
            interval: 'auto',
            formatter: '{value}'
          }
        },
        tooltip: {
          trigger: 'axis'
        },
        series: [
          {
            name: '收益金额',
            type: 'line',
            smooth: true,
            data: this.price	// 绑定实时数据数组
          },
          {
            name: '订单',
            type: 'line',
            smooth: true,
            data: this.order	// 绑定实时数据数组
          },
          {
            name: '在线人数',
            type: 'line',
            smooth: true,
            data: this.see	// 绑定实时数据数组
          }
        ]
      }
    }
  },
   //监听父组件传过来的值,判断是否开启定时器,(没必要获取父组件的数据可以删掉用mounted() 周期函数)
  watch: {
    temps(curVal) {
      this.myChart = echarts.init(document.getElementById('myChart'), 'light')	// 初始化echarts, theme为light
      this.myChart.setOption(this.echartsOption)	// echarts设置初始化选项
      if (curVal.id === 0) {
        clearInterval(this.timer)// 关闭定时器
      } else {
        // 开启定时器
        this.timer = setInterval(() => {
          this.addData(curVal)
        }, 3000)
      }
    }
  },
       
  //不需要父组件数据的用这个
  // mounted() {
  //     this.myChart = echarts.init(document.getElementById('myChart'), 'light')	// 初始化echarts, theme为light
  //     this.myChart.setOption(this.echartsOption)	// echarts设置初始化选项
  //     setInterval(this.addData, 3000)	// 每三秒更新实时数据到折线图
  // },
  methods: {
    // 获取当前时间
    getTime: function() {
      var ts = arguments[0] || 0
      var t, h, i, s
      t = ts ? new Date(ts * 1000) : new Date()
      h = t.getHours()
      i = t.getMinutes()
      s = t.getSeconds()
      // 定义时间格式
      return (h < 10 ? '0' + h : h) + ':' + (i < 10 ? '0' + i : i) + ':' + (s < 10 ? '0' + s : s)
    },
    // 添加实时数据
    addData: function(curVal) {

       // 从接口获取数据并添加到数组(这是自己封装好的接口)
      tv_update_TrendsSort(curVal).then(response => {
        if (response.code === 200) {
          this.price.push((response.price).toFixed(2))
          this.order.push((response.order).toFixed(2))
          this.see.push((response.see).toFixed(2))
          this.itme.push(this.getTime(Math.round(new Date().getTime() / 1000)))
          // 重新将数组赋值给echarts选项
          this.echartsOption.series[0].data = this.price
          this.echartsOption.series[1].data = this.order
          this.echartsOption.series[2].data = this.see
          this.echartsOption.xAxis.data = this.itme
          this.myChart.setOption(this.echartsOption)
        } else {
          this.$message.error('出错了,折线图获取失败')
        }
      })
    }
  }
}
</script>

<style>

#myChart{
  width: 95%;
  height: 400px;
}
</style>

注意有三点:

  1. setOption初始化echarts
  2. echartsOption里的data绑定数组
  3. setInterval中要更新数组并重新将数组赋值给echarts选项

  • 3
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Vue Echarts是基于Vue.js框架的一个数据可视化组件库,可以轻松实现折线图等各种图表的展示和交互。动态数据折线图是指折线图中的数据是实时变化的,可以实时更新图表的显示。 在Vue Echarts中,可以通过将折线图组件与外部数据绑定来实现动态数据的展示。首先,需要引入Echarts库和Vue Echarts组件,并通过npm进行安装。然后,在Vue组件中,定义一个data属性来保存折线图的数据,可以是一个数组,每个元素代表一个数据点。 接下来,可以在Vue组件的mounted钩子函数中初始化折线图,并将数据传入。在初始化折线图时,通过设置option配置项来定义图形的样式和数据。其中,可以使用Vue组件中的data属性作为动态数据的提供者,如将折线图的x轴数据设置为data属性中的一个数组,将折线图的y轴数据设置为data属性中另一个数组。 当数据变化时,只需要修改Vue组件中的data属性的值,折线图会自动更新显示。可以通过调用chart.setOption(option)方法来重新渲染图表,实现动态数据的更新。 除了使用Vue组件中的data属性来提供动态数据,还可以通过异步请求等方式获取数据,然后更新Vue组件中的data属性,实现动态数据的展示。 总之,通过Vue Echarts组件库,可以很方便地实现动态数据折线图的展示。只需要将折线图组件与Vue组件的data属性绑定,并通过设置option配置项来定义图表的样式和数据,然后通过修改Vue组件的data属性的值来实现动态数据的显示和更新。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值