代码如下所示:

<!-- ! 废话不多说,直接看代码吧 ! -->
<template>
  <div class="">
    <div class="chart" ref="ref_chart" style="width:370px;height:250px;"> </div>
  </div>
</template>
<script lang="js">
export default {
  data() {
    return {
      syca_myChart: null,  // 图表
      interval: null, //定时器
      x_tm: null,       //获取时间x轴的显示时间
      inTime: '',     //当前的时间
      A_data: [3, 5, 2, 3, 4,], // 电流数据
      V_data: [200, 201, 204, 202, 201, 334], // 电压
    };
  },
  computed: {},
  components: {},
  mounted() {
    this.x_time(); //先获取x轴的一组时间
    this.initChart();  //初始化dom元素
    this.updateChart(); //设置配置进行渲染为图表
    this.getNewTime(); //更新时间
  },
  methods: {
    // 获取 x轴 一组时间值
    x_time() {
      let now = new Date();
      let res = [];
      for (let i = 0; i < 7; i  ) {
        res.unshift(now.toLocaleTimeString().replace(/^\D*/, ''));
        now = new Date( now - 3000);  // 时间间隔
      }
      this.x_tm = res;
    },

    //初始化对象
    initChart() {
      this.syca_myChart = this.$echarts.init(this.$refs.ref_chart, "macarons");
    },
    //请求数据
    get_data() {
      // 在此处进行通过websoket进行数据交互代码 略...
    },

    //更新数据
    updateChart() {
      let option = {
        title: {
          show: true,
          text: "电流/电压", //标题
          top: 2,
          left: 2,
          textStyle: {
          },
          // subtext: '  - 折线图',   //二级标题
          subtextStyle: {
            // lineHeghit: 6
          },
        },
        legend: {
          data: ['电流', "电压"],
          top: 4,
        },
        toolbox: {
          show: true,  // 是否显示工具
          itemSize: 11,
          itemGap: 6,  //间隔大小
          // right: 25,
          feature: {
            saveAsImage: {  //保存为图片
              type: "jpg",
              backgroundColor: "#00274b"
            },
            dataView: {
              // 数据视图
              show: true,
              readOnly: true, // 是否可以读写
              // backgroundColor: "#00274b"
            },
            restore: {
              // 还原
            },
          }
        },
        xAxis: {
          type: 'category',
          data: this.x_tm,
          // name: "时间",
          // nameLocation: "end"
          // boundaryGap: false  // 紧挨边缘
          axisLabel: {
            fontSize: 11,
            formatter: '{value}',
            // y轴的显示数据单位
            rotate: -20,//刻度偏移
          },
        },
        yAxis: [
          {
            type: 'value',
            scale: true,  //是否是脱离 0 值比例
            // name: " 单位V",
            axisLabel: {
              fontSize: 11,
              formatter: '{value} V',
              // y轴的显示数据单位
              rotate: 20,//刻度偏移
            },
            minInterval: 1
          },
        ],
        grid: {
          top: '20%',
          right: '8%',
          left: '12%',
          bottom: '14%',

        },
        tooltip: {             //图标划过显示
          show: true,
          trigger: 'axis',
          axisPointer: {
            // type: 'cross',  //十字提示指示线
            // type: 'line', //
            lineStyle: {
              type: 'dashed', //线的类型 虚线
              // snap: true,    // 划过吸附指示线
            }
          },
          //悬浮窗的内容
          // a: 系列名,b: (x轴)类目值, c: 数据值
          // formatter: `{b}<br>{a}: {c} PM `,
          // background: "red",//悬浮窗的背景色
          // borderColor: '',//边框色
          borderWidth: 3,//边框宽
          // padding: '', //内边距
          alwaysShowContent: false, //悬浮窗是否一直显示
          hideDelay: 1000, //划入时悬浮多少秒
          enterable: true, //划入正常显示
          textStyle: {    //悬浮框的样式
            color: '#fff',
            fontSize: 14,

          }
        },
        series: [
          {
            name: '电流',
            data: this.A_data,
            type: 'line',
            smooth: true,  // 折线图的线条是否平滑
            areaStyle: {}, // 背景填充
            // stack: "all",   // 多组数据堆叠
            label: {
              show: true,    //数据标签显示
              position: 'top', //数据显示位置
              distance: 8, // 距离
              offset: [-2, -2], //文字偏移
              formatter: "{c}", //标签内容

            },
          },
          {
            name: '电压',
            data: this.V_data,
            type: 'line', // line 折线  bar 柱状
            smooth: true,  // 折线图的线条是否平滑
            areaStyle: {}, // 背景填充
            // stack: "all",   // 多组数据堆叠
            label: {
              show: true,    //数据标签显示
              position: 'top'
            },
          }
        ]
      }
      //进行渲染图表
      this.syca_myChart.setOption(option);
    },
    // 更新时间
    getNewTime() {
      clearInterval(this.interval); // 开启定时器之前先清上次的
      this.interval = setInterval(() => {
        this.inTime = new Date().toLocaleTimeString();
        this.x_tm.push(this.inTime);
        if (this.x_tm.length > 5) {
          this.x_tm.shift();
        }
        this.updateChart();
      }, 3000)
    },
  },
  watch: {},
  destroyed() {
    clearInterval(this.interval);
  },
};
</script>
<style scoped lang='less'>

</style>

效果图展示:

到此这篇关于vue中实现当前时间echarts图表时间轴动态的数据的文章就介绍到这了,更多相关vue echarts图表时间轴动态数据内容请搜索Devmax以前的文章或继续浏览下面的相关文章希望大家以后多多支持Devmax!

vue中实现当前时间echarts图表时间轴动态的数据(实例代码)的更多相关文章

  1. Vue如何指定不编译的文件夹和favicon.ico

    这篇文章主要介绍了Vue如何指定不编译的文件夹和favicon.ico,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

  2. vue自定义加载指令v-loading占位图指令v-showimg

    这篇文章主要为大家介绍了vue自定义加载指令和v-loading占位图指令v-showimg的示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪

  3. vue使用动画实现滚动表格效果

    这篇文章主要为大家详细介绍了vue使用动画实现滚动表格效果,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

  4. 关于Vue 监控数组的问题

    这篇文章主要介绍了Vue 监控数组的示例,主要包括Vue 是如何追踪数据发生变化,Vue 如何更新数组以及为什么有些数组的数据变更不能被 Vue 监测到,对vue监控数组知识是面试比较常见的问题,感兴趣的朋友一起看看吧

  5. Vue子组件props从父组件接收数据并存入data

    这篇文章主要介绍了Vue子组件props从父组件接收数据并存入data的方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

  6. Vue h函数的使用详解

    本文主要介绍了Vue h函数的使用详解,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

  7. VUE响应式原理的实现详解

    这篇文章主要为大家详细介绍了VUE响应式原理的实现,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能够给你带来帮助

  8. vue+Element ui实现照片墙效果

    这篇文章主要为大家详细介绍了vue+Element ui实现照片墙效果,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

  9. vue+elemet实现表格手动合并行列

    这篇文章主要为大家详细介绍了vue+elemet实现表格手动合并行列,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

  10. iview+vue实现导入EXCEL预览功能

    这篇文章主要为大家详细介绍了iview+vue实现导入EXCEL预览功能,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

随机推荐

  1. js中‘!.’是什么意思

  2. Vue如何指定不编译的文件夹和favicon.ico

    这篇文章主要介绍了Vue如何指定不编译的文件夹和favicon.ico,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

  3. 基于JavaScript编写一个图片转PDF转换器

    本文为大家介绍了一个简单的 JavaScript 项目,可以将图片转换为 PDF 文件。你可以从本地选择任何一张图片,只需点击一下即可将其转换为 PDF 文件,感兴趣的可以动手尝试一下

  4. jquery点赞功能实现代码 点个赞吧!

    点赞功能很多地方都会出现,如何实现爱心点赞功能,这篇文章主要为大家详细介绍了jquery点赞功能实现代码,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

  5. AngularJs上传前预览图片的实例代码

    使用AngularJs进行开发,在项目中,经常会遇到上传图片后,需在一旁预览图片内容,怎么实现这样的功能呢?今天小编给大家分享AugularJs上传前预览图片的实现代码,需要的朋友参考下吧

  6. JavaScript面向对象编程入门教程

    这篇文章主要介绍了JavaScript面向对象编程的相关概念,例如类、对象、属性、方法等面向对象的术语,并以实例讲解各种术语的使用,非常好的一篇面向对象入门教程,其它语言也可以参考哦

  7. jQuery中的通配符选择器使用总结

    通配符在控制input标签时相当好用,这里简单进行了jQuery中的通配符选择器使用总结,需要的朋友可以参考下

  8. javascript 动态调整图片尺寸实现代码

    在自己的网站上更新文章时一个比较常见的问题是:文章插图太宽,使整个网页都变形了。如果对每个插图都先进行缩放再插入的话,太麻烦了。

  9. jquery ajaxfileupload异步上传插件

    这篇文章主要为大家详细介绍了jquery ajaxfileupload异步上传插件,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

  10. React学习之受控组件与数据共享实例分析

    这篇文章主要介绍了React学习之受控组件与数据共享,结合实例形式分析了React受控组件与组件间数据共享相关原理与使用技巧,需要的朋友可以参考下

返回
顶部