首页 > 其他 > 详细

echarts模拟展示网络发送接收数据量

时间:2021-06-13 23:56:02      阅读:25      评论:0      收藏:0      [点我收藏+]
<!DOCTYPE html>
<html style="height: 100%">
<head>
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <title>网络</title>
    <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/echarts-nightly@5.1.2-dev.20210512/dist/echarts.min.js"></script>
    <script type="text/javascript" src="https://cdn.bootcdn.net/ajax/libs/jquery/3.6.0/jquery.js"></script>
</head>
<body style="height: 100%; margin: 0">
    <div id="container" style="height: 100%"></div>
    
    <script type="text/javascript">
    var dom = document.getElementById("container");
    var myChart = echarts.init(dom);

    option = {
        title: [
            {
                text: 发送
            },
            {
                top: 55%,
                text: 接收
            }
        ],
        tooltip: {
            trigger: axis,
            formatter: function(params){
                var myDom = params[0].name + <br />;
                $.each(params, function(index, item){
                    myDom += item.marker + item.seriesName + :  + formatBytes(item.value) + <br>;
                })
                return myDom;
            }
        },
        legend: {
            data: [以太网, VMware Network Adapter VMnet1, VMware Network Adapter VMnet8],
            selected: {
                以太网: true,
                VMware Network Adapter VMnet1: true,
                VMware Network Adapter VMnet8: true,
            },
        },
        grid: [
            {
                bottom: 60%
            },
            {
                top: 60%
            }
        ],
        toolbox: {
            feature: {
                saveAsImage: {},
                dataView: {
                    show: true,
                    optionToContent: function(opt){
                        var html = ‘‘;
                        $.each(opt.title, function(t_k, t_v){
                            html += <p> + t_v.text + :</p>;
                            var table = <table border=1 cellspacing=0 cellpadding=5><tbody><tr>;
                            table += <th align="center">时间</th>;
                            $.each(opt.legend[0].data, function(l_k, l_v){
                                table += <th align="center"> + l_v + </th>;
                            })
                            table += </tr>;
                            $.each(opt.xAxis[0].data, function(x_k, x_v){
                                table += <tr>;
                                table += <td align="center"> + x_v + </td>;
                                $.each(opt.series, function(s_k, s_v){
                                    if (s_v.xAxisIndex == t_k) {
                                        table += <td align="center"> + formatBytes(s_v.data[x_k]) + </td>;
                                    }
                                });
                                table += </tr>;
                            })
                            table += </tbody></table>;
                            html +=  table + <br>;
                        });
                        return html;
                    }
                }
            }
        },
        xAxis: [
            {
                type: category,
                boundaryGap: false,
                data: [
                    2021/06/01 08:00:00,
                    2021/06/01 08:00:03,
                    2021/06/01 08:00:06,
                    2021/06/01 08:00:09,
                    2021/06/01 08:00:12,
                ]
            },
            {
                type: category,
                boundaryGap: false,
                data: [
                    2021/06/01 08:00:00,
                    2021/06/01 08:00:03,
                    2021/06/01 08:00:06,
                    2021/06/01 08:00:09,
                    2021/06/01 08:00:12,
                ],
                gridIndex: 1
            },
        ],
        yAxis: [
            {
                type: value
            },
            {
                type: value,
                gridIndex: 1
            },
        ],
        series: [
            // 发送
            {
                name: 以太网,
                type: line,
                data: [10, 80, 300, 200, 160],
                xAxisIndex: 0,
                yAxisIndex: 0,
            },
            {
                name: VMware Network Adapter VMnet1,
                type: line,
                data: [50, 200, 210, 60, 90],
                xAxisIndex: 0,
                yAxisIndex: 0,
            },
            {
                name: VMware Network Adapter VMnet8,
                type: line,
                data: [80, 85, 96, 120, 200],
                xAxisIndex: 0,
                yAxisIndex: 0,
            },
            // 接收
            {
                name: 以太网,
                type: line,
                data: [20, 300, 700, 900, 1600],
                xAxisIndex: 1,
                yAxisIndex: 1,
            },
            {
                name: VMware Network Adapter VMnet1,
                type: line,
                data: [800, 850, 960, 1200, 2000],
                xAxisIndex: 1,
                yAxisIndex: 1,
            },
            {
                name: VMware Network Adapter VMnet8,
                type: line,
                data: [300, 400, 500, 600, 800],
                xAxisIndex: 1,
                yAxisIndex: 1,
            }
        ]
    };
    myChart.setOption(option, true);
    // ===================================
    var legend_data = [以太网, VMware Network Adapter VMnet1, VMware Network Adapter VMnet8];
    var xAxis_data = [];
    var series = [];
    var max = 50;
    var time_unit = 2000;
    var base = +new Date() - max * time_unit;

    $.each(legend_data, function(l_k, l_v){
        series.push({
            name: l_v,
            type: line,
            data: [],
            xAxisIndex: 0,
            yAxisIndex: 0,
        });
        series.push({
            name: l_v,
            type: line,
            data: [],
            xAxisIndex: 1,
            yAxisIndex: 1,
        });
    })

    for (var i = 0; i < max; i++) {
        var now = new Date(base += time_unit);
        xAxis_data.push(getTime(now));
        $.each(series, function(s_k, s_v){
            var value = Math.round(Math.random() * 10000, 2);
            series[s_k].data.push(value);
        });
    }
    option.legend.data = legend_data;
    option.xAxis[0].data = xAxis_data;
    option.xAxis[1].data = xAxis_data;
    option.series = series;
    myChart.setOption(option, true); // 初始化

    var inter = setInterval(function(){
        var now = new Date(base += time_unit);

        xAxis_data.shift();
        xAxis_data.push(getTime(now));

        $.each(series, function(s_k, s_v){
            var value = Math.round(Math.random() * 10000, 2);
            series[s_k].data.shift();
            series[s_k].data.push(value);
        });

        option.legend.data = legend_data;
        option.xAxis[0].data = xAxis_data;
        option.xAxis[1].data = xAxis_data;
        option.series = series;
        myChart.setOption(option, true);
    }, time_unit);

    // 切换图例的选中状态
    myChart.on(legendselectchanged, function(params){
        option.legend.selected = params.selected;
    });

    function getTime(date, format){
        var ymd = [date.getFullYear(), date.getMonth() + 1, date.getDate()].join(/);
        var hour = date.getHours() < 10 ? (0 + date.getHours()) : date.getHours();
        var minute = date.getMinutes() < 10 ? (0 + date.getMinutes()) : date.getMinutes();
        var second = date.getSeconds() < 10 ? (0 + date.getSeconds()) : date.getSeconds();
        var his = [hour, minute, second].join(:);
        if (format == Ymd) {
            return ymd;
        } else if (format == His) {
            return his;
        }
        return ymd +   + his;
    }

    function formatBytes(bytes){
        var Kb = 1024, Mb = 1024 << 10, Gb = 1024 << 20, Tb = 1024 << 30;
        if (bytes < Kb) {
            return bytes + bps;
        } else if (bytes < Mb) {
            return (bytes / Kb).toFixed(2) + Kbps;
        } else if (bytes < Gb) {
            return (bytes / Mb).toFixed(2) + Mbps;
        } else if (bytes < Tb) {
            return (bytes / Gb).toFixed(2) + Gbps;
        }
        return bytes;
    }
    </script>
</body>
</html>

 

echarts模拟展示网络发送接收数据量

原文:https://www.cnblogs.com/so-la/p/14881091.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!