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