首页 > 其他分享 >vue中实现当前时间echarts图表时间轴动态的数据

vue中实现当前时间echarts图表时间轴动态的数据

时间:2022-10-24 16:33:19浏览次数:56  
标签:vue 数据 show true type tm 时间轴 data echarts

  1 <!-- ! 废话不多说,直接看代码吧 ! -->
  2 <template>
  3   <div class="">
  4     <div class="chart" ref="ref_chart" style="width:370px;height:250px;"> </div>
  5   </div>
  6 </template>
  7 <script lang="js">
  8 export default {
  9   data() {
 10     return {
 11       syca_myChart: null,  // 图表
 12       interval: null, //定时器
 13       x_tm: null,       //获取时间x轴的显示时间
 14       inTime: '',     //当前的时间
 15       A_data: [3, 5, 2, 3, 4,], // 电流数据
 16       V_data: [200, 201, 204, 202, 201, 334], // 电压
 17     };
 18   },
 19   computed: {},
 20   components: {},
 21   mounted() {
 22     this.x_time(); //先获取x轴的一组时间
 23     this.initChart();  //初始化dom元素
 24     this.updateChart(); //设置配置进行渲染为图表
 25     this.getNewTime(); //更新时间
 26   },
 27   methods: {
 28     // 获取 x轴 一组时间值  
 29     x_time() {
 30       let now = new Date();
 31       let res = [];
 32       for (let i = 0; i < 7; i++) {
 33         res.unshift(now.toLocaleTimeString().replace(/^\D*/, ''));
 34         now = new Date(+now - 3000);  // 时间间隔
 35       }
 36       this.x_tm = res;
 37     },
 38 
 39     //初始化对象
 40     initChart() {
 41       this.syca_myChart = this.$echarts.init(this.$refs.ref_chart, "macarons");
 42     },
 43     //请求数据
 44     get_data() {
 45       // 在此处进行通过websoket进行数据交互代码 略...
 46     },
 47 
 48     //更新数据
 49     updateChart() {
 50       let option = {
 51         title: {
 52           show: true,
 53           text: "电流/电压", //标题
 54           top: 2,
 55           left: 2,
 56           textStyle: {
 57           },
 58           // subtext: '  - 折线图',   //二级标题
 59           subtextStyle: {
 60             // lineHeghit: 6
 61           },
 62         },
 63         legend: {
 64           data: ['电流', "电压"],
 65           top: 4,
 66         },
 67         toolbox: {
 68           show: true,  // 是否显示工具
 69           itemSize: 11,
 70           itemGap: 6,  //间隔大小
 71           // right: 25,
 72           feature: {
 73             saveAsImage: {  //保存为图片
 74               type: "jpg",
 75               backgroundColor: "#00274b"
 76             },
 77             dataView: {
 78               // 数据视图
 79               show: true,
 80               readOnly: true, // 是否可以读写
 81               // backgroundColor: "#00274b"
 82             },
 83             restore: {
 84               // 还原
 85             },
 86           }
 87         },
 88         xAxis: {
 89           type: 'category',
 90           data: this.x_tm,
 91           // name: "时间",        
 92           // nameLocation: "end"
 93           // boundaryGap: false  // 紧挨边缘
 94           axisLabel: {
 95             fontSize: 11,
 96             formatter: '{value}',
 97             // y轴的显示数据单位
 98             rotate: -20,//刻度偏移
 99           },
100         },
101         yAxis: [
102           {
103             type: 'value',
104             scale: true,  //是否是脱离 0 值比例
105             // name: " 单位V",
106             axisLabel: {
107               fontSize: 11,
108               formatter: '{value} V',
109               // y轴的显示数据单位
110               rotate: 20,//刻度偏移
111             },
112             minInterval: 1
113           },
114         ],
115         grid: {
116           top: '20%',
117           right: '8%',
118           left: '12%',
119           bottom: '14%',
120 
121         },
122         tooltip: {             //图标划过显示
123           show: true,
124           trigger: 'axis',
125           axisPointer: {
126             // type: 'cross',  //十字提示指示线
127             // type: 'line', //
128             lineStyle: {
129               type: 'dashed', //线的类型 虚线
130               // snap: true,    // 划过吸附指示线
131             }
132           },
133           //悬浮窗的内容
134           // a: 系列名,b: (x轴)类目值, c: 数据值
135           // formatter: `{b}<br>{a}: {c} PM `,
136           // background: "red",//悬浮窗的背景色
137           // borderColor: '',//边框色
138           borderWidth: 3,//边框宽
139           // padding: '', //内边距
140           alwaysShowContent: false, //悬浮窗是否一直显示
141           hideDelay: 1000, //划入时悬浮多少秒
142           enterable: true, //划入正常显示
143           textStyle: {    //悬浮框的样式
144             color: '#fff',
145             fontSize: 14,
146 
147           }
148         },
149         series: [
150           {
151             name: '电流',
152             data: this.A_data,
153             type: 'line',
154             smooth: true,  // 折线图的线条是否平滑
155             areaStyle: {}, // 背景填充
156             // stack: "all",   // 多组数据堆叠
157             label: {
158               show: true,    //数据标签显示
159               position: 'top', //数据显示位置
160               distance: 8, // 距离
161               offset: [-2, -2], //文字偏移
162               formatter: "{c}", //标签内容
163 
164             },
165           },
166           {
167             name: '电压',
168             data: this.V_data,
169             type: 'line', // line 折线  bar 柱状
170             smooth: true,  // 折线图的线条是否平滑
171             areaStyle: {}, // 背景填充
172             // stack: "all",   // 多组数据堆叠
173             label: {
174               show: true,    //数据标签显示
175               position: 'top'
176             },
177           }
178         ]
179       }
180       //进行渲染图表
181       this.syca_myChart.setOption(option);
182     },
183     // 更新时间
184     getNewTime() {
185       clearInterval(this.interval); // 开启定时器之前先清上次的
186       this.interval = setInterval(() => {
187         this.inTime = new Date().toLocaleTimeString();
188         this.x_tm.push(this.inTime);
189         if (this.x_tm.length > 5) {
190           this.x_tm.shift();
191         }
192         this.updateChart();
193       }, 3000)
194     },
195   },
196   watch: {},
197   destroyed() {
198     clearInterval(this.interval);
199   },
200 };
201 </script>
202 <style scoped lang='less'>
203 
204 </style>

效果图展示:

 

标签:vue,数据,show,true,type,tm,时间轴,data,echarts
From: https://www.cnblogs.com/syca-zh/p/16821752.html

相关文章

  • 搭建vue2.0开发环境
    1.安装nodevue的运行是依赖于node的npm的管理工具来实现,下载地址:https://nodejs.org/en/2.查看node版本号打开cmd管理工具,输入node-v命令,查看node版本号,出现版本号说明......
  • vue项目中使用别名:“@”和“~”的坑。
    设置别名在build文件夹下的webpack.base.conf.js文件中设置src的路径别名。resolve:{extensions:['.js','.vue','.json'],alias:{'vue$':'vue/dist......
  • 前端Vue
    前端Vue前端的现状介绍HTML(5)、CSS(3)、JavaScript(ES5、ES6):编写一个个的页面传递给后端(PHP、Python、Go、Java),然后后端嵌入模板语法,渲染完数据后再讲数据传递给前......
  • Vue基础
    Vue基础模板语法被vue托管的标签中可以写{{}}中可以写:变量,js简单的表达式,函数插值语法<!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8">......
  • vue之简介
    一、前端的发展介绍#HTML(5)、CSS(3)、JavaScript(ES5、ES6、ES13):编写一个个的页面->给后端(PHP、Python、Go、Java)->后端嵌入模板语法->后端渲染完数据->返......
  • vue简介,插值语法,vue指令系统
    前端页面发展Vue的快速使用插值语法指令系统之文本指令指令系统之事件指令指令系统之属性指令前端页面发展1.HTML(5)、CSS(3)、JavaScript(ES5、ES6)......
  • echarts中国地图
    <!DOCTYPEhtml><htmllang="zh_CN"><head><metacharset="utf-8"/><metahttp-equiv="X-UA-Compatible"content="IE=edge,chrome=1"><metaname="view......
  • vue本地项目启动时遇到coreJs相关报错问题处理
    启动项目的时候报错:   是因为core.js这个包丢失,需要大家重新下载即可;yarnaddcore-js ......
  • Vue中父组件向子组件传值无法响应props的变化
    父组件:<template><q-btnroundcolor="pink-4"size="0.9em"text-color="white"denseic......
  • vue2面试题
    面试题3)谈谈对vue生命周期的理解 Vue实例从创建到销毁的过程,就是生命周期,生命周期总共分为三个阶段:初始化、更新、销毁 1)初始化和挂载阶段 *beforeCreate()实例......