Chart.js 实现实时动态折线图 并限制最大长度

<!DOCTYPE html>
<html>

<head>
    <title>模拟</title>
    <script src="https://lib.sinaapp.com/js/jquery/3.1.0/jquery-3.1.0.min.js"></script>
    <script src="https://cdn.staticfile.org/Chart.js/3.9.1/chart.js"></script>
</head>
<body>
    <canvas id="lineChart" style="height: 30vh;width: 50vw;"></canvas>
</body>
<script>
    $(document).ready(function () {
        var ctx = $("#lineChart")[0].getContext("2d");
        var lineChart = new Chart(ctx, {
            type: 'line',
            tension: 0.5,
            data: {
                labels: [], // x轴标签
                datasets: [{
                    label: 'cpu', // 数据集1标签
                    data: [], // 数据集1
                    borderColor: 'blue', // 折线1颜色
                    fill: true,// 不填充区域
                    cubicInterpolationMode: 'monotone' //曲线
                },
                {
                    label: '内存', // 数据集2标签
                    data: [], // 数据集2
                    borderColor: 'yellow', // 折线2颜色
                    fill: false, // 不填充区域
                    cubicInterpolationMode: 'monotone' //曲线
                }]
            },
            options: {
                responsive: true,
                scales: {
                    x: {
                        display: true,
                        title: {
                            display: true,
                            text: '时间' // x轴标题
                        }
                    },
                    y: {
                        display: true,
                        title: {
                            display: true,
                            text: '百分比' // y轴标题
                        }
                    }
                }
            }
        });

        // 模拟实时数据更新
        setInterval(function () {
            // 检查数据集的长度 限制最多六十秒的数据
            if (lineChart.data.labels.length >= 60) {
                lineChart.data.labels.shift(); // 删除最开始的x轴标签
                lineChart.data.datasets[0].data.shift(); // 删除最开始的数据点从数据集1
                lineChart.data.datasets[1].data.shift(); // 删除最开始的数据点从数据集2
            }

            var time = new Date().toLocaleTimeString();
            var value1 = Math.random() * 100; // 生成随机数值1
            var value2 = Math.random() * 100; // 生成随机数值2
            lineChart.data.labels.push(time); // 添加新的x轴标签
            lineChart.data.datasets[0].data.push(value1); // 添加新的数据点到数据集1
            lineChart.data.datasets[1].data.push(value2); // 添加新的数据点到数据集2
            lineChart.update(); // 更新图表
        }, 1000); // 每秒更新一次
    });


</script>

</html>
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要使用 Chart.js 实现统计图,需要先引入 Chart.js 库,并在 HTML 页面中创建一个 canvas 元素,作为图表的容器。然后,使用 JavaScript 代码通过调用 Chart.js 提供的 API 来配置和绘制图表。 下面是一个简单的例子,展示如何使用 Chart.js 绘制一个柱状图: 1. 引入 Chart.js 库 在 HTML 文件的 head 部分引入 Chart.js 库: ``` <head> <script src="https://cdn.jsdelivr.net/npm/chart.js"></script> </head> ``` 2. 创建 canvas 元素 在 HTML 文件的 body 部分创建一个 canvas 元素,用于容纳图表: ``` <body> <canvas id="myChart"></canvas> </body> ``` 3. 配置图表 在 JavaScript 文件中编写代码来配置图表。下面是一个简单的例子,展示如何绘制一个柱状图: ``` // 获取 canvas 元素 var ctx = document.getElementById('myChart').getContext('2d'); // 配置数据 var data = { labels: ['Red', 'Blue', 'Yellow', 'Green', 'Purple', 'Orange'], datasets: [{ label: 'My First Dataset', data: [12, 19, 3, 5, 2, 3], backgroundColor: [ 'rgba(255, 99, 132, 0.2)', 'rgba(54, 162, 235, 0.2)', 'rgba(255, 206, 86, 0.2)', 'rgba(75, 192, 192, 0.2)', 'rgba(153, 102, 255, 0.2)', 'rgba(255, 159, 64, 0.2)' ], borderColor: [ 'rgba(255, 99, 132, 1)', 'rgba(54, 162, 235, 1)', 'rgba(255, 206, 86, 1)', 'rgba(75, 192, 192, 1)', 'rgba(153, 102, 255, 1)', 'rgba(255, 159, 64, 1)' ], borderWidth: 1 }] }; // 配置选项 var options = { scales: { y: { beginAtZero: true } } }; // 创建图表 var myChart = new Chart(ctx, { type: 'bar', data: data, options: options }); ``` 上面的代码中,首先获取了 canvas 元素的上下文对象 ctx,然后配置了数据和选项。数据包括标签和数据点,选项包括坐标轴等配置。最后,使用 new Chart() 方法创建了一个柱状图,并将其绘制在 canvas 上。 这只是一个简单的例子,Chart.js 还支持多种类型的图表,以及更加丰富的配置选项,可以根据需求来选择合适的图表类型和配置选项。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值