资讯专栏INFORMATION COLUMN

Vue—Cli中使用动态Highcharts line图表超初级教学

stackvoid / 2405人阅读

摘要:开始让动起来我会直接贴部分代码加少量解释,建议先看下官方给的动态实时刷新示意图循环次,线从图表右侧开始出现,轴会分为秒。

效果展示

社会你龙哥,人丑话不多,先来张图!图片传不上去!!!可能公司限制了,大家自己幻想下吧

highcharts环境搭配

由于技术现水平限制,需要用到两个Highcharts,下面我会解释,先上代码

npm install --save highcharts
npm install --save vue-highcharts  

下载好后,在main.js页面引入Vue-hightcharts;

import VueHighcharts from "vue-highcharts";
Vue.use(VueHighcharts)

接着在我们需要图表的页面加入以下代码

 var Highcharts = require("highcharts");

这里我将highcharts实例化,我需要用到highchats自带的将时间格式化的方法。

Highcharts.setOptions({
                global: {
                    useUTC: false
                }
            });
tooltip: {
                    enabled: true,
                    formatter: function() {
                        if(this.y <= 1) {
                            return "" + this.series.name + "
" + Highcharts.dateFormat("%Y-%m-%d %H:%M:%S", this.x) + "
" + (this.y * 100).toFixed(2) + "%" } else { return "" + this.series.name + "
" + Highcharts.dateFormat("%Y-%m-%d %H:%M:%S", this.x) + "
" + this.y } } }
开始让Highcharts动起来

我会直接贴部分代码加少量解释,建议先看下官方给的动态实时刷新示意图https://www.hcharts.cn/demo/h...

循环240次,线从图表右侧开始出现,X轴会分为240秒。

series: [{
                        type: "line",
                        name: "line1",
                        data: (function() {
                            let data = [],
                                time = Date.parse(new Date()),
                                i;
                            for(i = -239; i <= 0; i += 1) {
                                data.push({
                                    x: time + i * 1000,
                                    y: 0
                                });
                            }
                            return data;
                        }()),
                        color: "#f8672c",
                        lineWidth: 1
                    }]
我们用的socketcluster进行数据的广播

var SocketCluster = require("socketcluster-client")

var socket = SocketCluster.connect({
    port: 80,
    hostname: "xxx.xxx.xxx.xxx",
    path: "/xxx/xxx",
    secure: false
});
这里会在代码注释里详细说明
                      

events: {

                    load: function() {
                        // set up the updating of the chart each second
                        var series1 = this.series[0];
                        var machId = _self.$route.params.id;
                        //获取路由传过来的id
                        var sub1 = socket.subscribe(`${machId}-counter-overview`);
                        //sub1开始订阅数据
                        sub1.watch(function(data1) {
                            if(data1) {
                                _self.cpudata = data1["system-cpu"];
                                _self.ramdata = data1["system-ram"];
                            }
                        });
                        
                        _self.timer.timer1=setInterval(function() {
                          //这里用时间驱动,将数据添加到图表中,cpudata没有数据的话
                          //会一直保持水平运动。
                            _self.x = (new Date()).getTime();
                            series1.addPoint([_self.x, _self.cpudata], true, true, true);                    
                        }, 1000)

                    }
                }
            }
最后离开路由记得销毁我们的定时器
beforeDestroy:function(){
        
        clearInterval(this.timer.timer1);
        
    }
恩,就这么多~写的不好,不明白的大家一起探讨.

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/84434.html

相关文章

  • vue-element初级教学

    摘要:与定时器的恩恩怨怨。这时候我这样做的首先要把定时器填进数据中控制住定时器的声明周期,否则它会烦死你在项目中的运用。 本次写的项目是关于机器终端管理的,一开始使用的是最基本的bootstrap+jq+html以及一些小插件,后来由于项目有很多重复度很高的地方,而且老大要求扩展度要高,比如头部,左边栏,所以决定和另一名前端小伙伴使用框架进行项目重构(小项目啦),最终选择了Vue+webpa...

    1fe1se 评论0 收藏0
  • web前端技术体系大全

    以下为个人目前接触到的前端技术,欢迎大家补充。 一、前端技术框架 1、Vue.js 官网:https://cn.vuejs.org/ Vue CLI:https://cli.vuejs.org/ 菜鸟教程:http://www.runoob.com/w3cnote... Nuxt.js:https://zh.nuxtjs.org/ 桌面应用Electron:https:...

    RaoMeng 评论0 收藏0
  • echarts 与 highcharts

    摘要:渲染能力采用渲染除了对使用,一般来说,更适合绘制图形元素数量非常大这一般是由数据量大导致的图表如热力图地理坐标系或平行坐标系上的大规模线图或散点图等,也利于实现某些视觉特效如交通图。 一.简介 echartsecharts是百度公司前端开发的一个图表库,2013年发布第一版,主要采用canvas画图,目前版本3.8.4;完全免费; highcharthighcharts是国外的一家公司...

    王笑朝 评论0 收藏0
  • Vue使用WebSocket+HighCharts+Canvas实现高性能的频谱瀑布图

    摘要:水平值,以像素计,在画布上放置图像的位置。规定要使用的图像画布或视频。要使用的图像的高度。实现缩放频谱图已经做好缩放操作,并把起始点和结束点传递给父组件,再有父组件传递给瀑布图组件,动态修改的剪切属性。 作者:codexu _ 废话不多说,先上成品图: showImg(https://segmentfault.com/img/remote/1460000020161522); 再来个迷...

    张红新 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<