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>
效果图展示:
原文地址:http://www.cnblogs.com/syca-zh/p/16821752.html
1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长!
2. 分享目的仅供大家学习和交流,请务用于商业用途!
3. 如果你也有好源码或者教程,可以到用户中心发布,分享有积分奖励和额外收入!
4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
5. 如有链接无法下载、失效或广告,请联系管理员处理!
6. 本站资源售价只是赞助,收取费用仅维持本站的日常运营所需!
7. 如遇到加密压缩包,默认解压密码为"gltf",如遇到无法解压的请联系管理员!
8. 因为资源和程序源码均为可复制品,所以不支持任何理由的退款兑现,请斟酌后支付下载
声明:如果标题没有注明"已测试"或者"测试可用"等字样的资源源码均未经过站长测试.特别注意没有标注的源码不保证任何可用性