echarts模拟展示CPU利用率


<!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>
</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);

    var option = {
        title: {    // 标题组件
            text: 'CPU利用率'    // 主标题文本
        },
        tooltip: {    // 提示框组件
            trigger: 'axis',    // 触发类型(axis: 坐标轴触发)
            formatter: function (params) {    // 提示框浮层内容格式器
                params = params[0];
                return params.axisValueLabel + '<br />' + params.marker 
                    + '&nbsp;' + params.seriesName 
                    + '<span style="font-weight: bold;float: right;">' + params.value[1] + '%</span>';
            },
            axisPointer: {    // 坐标轴指示器配置项
                animation: false     // 是否开启动画
            }
        },
        toolbox: {    // 工具栏
            feature: {    // 各工具配置项
                saveAsImage: {},    // 保存为图片
                dataView: {    // 数据视图工具,可以展现当前图表所用的数据,编辑后可以动态更新
                    show: true,    // 是否显示该工具
                    optionToContent: function(opt){    // 自定义 dataView 展现函数,用以取代默认的 textarea 使用更丰富的数据编辑。
                        var data = opt.series[0].data;
                        var table = '<table border=1 cellspacing=0 cellpadding=5><tbody><tr>'
                                + '<td align="center">时间</td>'
                                + '<td align="center">' + opt.series[0].name + '</td>'
                                + '</tr>';
                        for (var i = 0, l = data.length; i < l; i++) {
                            table += '<tr>'
                                + '<td align="center">' + data[i].value[0] + '</td>'
                                + '<td align="center">' + data[i].value[1] + '%</td>'
                                + '</tr>';
                        }
                        table += '</tbody></table>';
                        return table;
                    }
                }
            }
        },
        xAxis: {    // 直角坐标系 grid 中的 x 轴
            type: 'time',    // 坐标轴类型(time: 时间轴,适用于连续的时序数据,与数值轴相比时间轴带有时间的格式化,在刻度计算上也有所不同,例如会根据跨度的范围来决定使用月,星期,日还是小时范围的刻度。)
            splitLine: {    // 坐标轴在 grid 区域中的分隔线
                show: false // 是否显示分隔线。默认数值轴显示,类目轴不显示。
            }
        },
        yAxis: {    // 直角坐标系 grid 中的 y 轴
            type: 'value',    // 坐标轴类型(value: 数值轴,适用于连续数据。)
            boundaryGap: [0, '100%'],    // 坐标轴两边留白策略
            min: 0,        // 坐标轴刻度最小值
            max: 100,    // 坐标轴刻度最大值
            splitLine: {    // 坐标轴在 grid 区域中的分隔线
                show: false // 是否显示分隔线。默认数值轴显示,类目轴不显示。
            }
        },
        series: [
            {
                name: 'CPU利用率',    // 系列名称,用于tooltip的显示,legend 的图例筛选,在 setOption 更新数据和配置项时用于指定对应的系列。
                type: 'line',
                showSymbol: false,    // 是否显示 symbol, 如果 false 则只有在 tooltip hover 的时候显示。
                data: []    // 系列中的数据内容数组
            }
        ]
    };

    var data = [];
    var iMax = 100;
    var timeUnit = 1000;
    var base = +new Date() - iMax * timeUnit;
    for (var i = 0; i < iMax; i++) {
        var now = new Date(base += timeUnit);
        var value = Math.round(Math.random() * 100, 2);
        data.push({
            name: now.toString(),
            value: [getTime(now), value]
        });
    }
    option.series[0].data = data;
    myChart.setOption(option, true); // 初始化

    var inter = setInterval(function(){
        var now = new Date(base += timeUnit);
        var value = Math.round(Math.random() * 100, 2);
        data.shift();
        data.push({
            name: now.toString(),
            value: [getTime(now), value]
        });
        option.series[0].data = data;
        myChart.setOption(option, true);
    }, timeUnit);

    function getTime(date){
        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(':');
        return ymd + ' ' + his;
    }
    </script>
</body>
</html>

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM