实时图表可以实时显示数据。这意味着数据将永久更新以始终显示当前图表。要创建实时图表,我们使用JavaScript和Google Chart API。
这些实时图表通常用于仪表板中,以显示例如温度或价格的变化情况。应用领域多样,它们看起来确实不错。你自己看!
实时图表–折线图
我在这里向您展示,您可以创建此实时图表。它每250毫秒更新一次,并显示(在我们的示例中)随机数据。在生产性使用中,它可以从数据库或直接从传感器读取和显示数据。
那不是全部。可以将相同的概念1:1转移到其他图表中,其中包括:
- 地理图
- 条形图
- 折线图
- 饼形图
- 甜甜圈图
- 时间线
Google Chart API –简短介绍
在谷歌图表API是一个免费的谷歌服务,使我们能够展示我们的网站或网络应用程序的各种图表和图形。
数据静态显示。但是我们围绕它开发我们自己的系统,以便可以在一定间隔内更新数据,从而获得实时图表。然后(实时)实时更新数据,并达到预期的效果。
1.嵌入Google Chart API
必须通过此脚本标记包括Google Chart API。这里无法在本地托管,因为Google的服务条款禁止这样做。
<script type="text/javascript" loading="lazy" src="https://www.gstatic.com/charts/loader.js"></script>
2.创建HTML容器
div
<div id="chart_div"></div>
3.初始化和配置Google Chart API
drawChart()
// load current chart package
google.charts.load("current", {
packages: ["corechart", "line"]
});
// set callback function when api loaded
google.charts.setOnLoadCallback(drawChart);
接下来,我们创建一个带有标签(未显示)和图表默认数据的对象。我们还需要一个带有选项的数组。在这里,我们设置标题和轴标签。
所有参数都可以在Google Chart文档中找到。
chart.draw(data, options)
function drawChart() {
// create data object with default value
let data = google.visualization.arrayToDataTable([
["Year", "CPU Usage"],
[0, 0]
]);
// create options object with titles, colors, etc.
let options = {
title: "CPU Usage",
hAxis: {
title: "Time"
},
vAxis: {
title: "Usage"
}
};
// draw chart on load
let chart = new google.visualization.LineChart(
document.getElementById("chart_div")
);
chart.draw(data, options);
}
使用前面的代码,现在已经绘制了表格,我们可以对其进行初步了解。
没有数据的简单折线图–使用Google Chart API创建
4.动态更新数据
现在我们来谈谈最重要的部分,即为什么要在这里-动态更新数据。这就是我们“创建”实时图表的方式。
我们以250ms的间隔将新数据插入到图表中。
index
您可以例如通过Ajax请求来执行此操作。因此,您可以使用PHP和数据库类直接从数据库中读取数据,也可以编写自己的RestAPI(例如,使用Node.js)。
let index = 0;
setInterval(function() {
// instead of this random, you can make an ajax call for the current cpu usage or what ever data you want to display
let random = Math.random() * 30 + 20;
data.addRow([index, random]);
chart.draw(data, options);
index++;
}, 250);
现在在这里再次将完整代码放在一个文件中。为了清楚起见,我将所有内容打包到一个文件中。但是您应该将JavaScript和CSS放在其他文件中。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<title>Document</title>
<style>
#chart_div {
width: 1200px;
}
body {
display: flex;
justify-content: center;
align-items: center;
}
</style>
</head>
<body>
<!-- CONTAINER FOR CHART -->
<div id="chart_div"></div>
<script type="text/javascript" loading="lazy" src="https://www.gstatic.com/charts/loader.js"></script>
<script>
// load current chart package
google.charts.load("current", {
packages: ["corechart", "line"]
});
// set callback function when api loaded
google.charts.setOnLoadCallback(drawChart);
function drawChart() {
// create data object with default value
let data = google.visualization.arrayToDataTable([
["Year", "CPU Usage"],
[0, 0]
]);
// create options object with titles, colors, etc.
let options = {
title: "CPU Usage",
hAxis: {
title: "Time"
},
vAxis: {
title: "Usage"
}
};
// draw chart on load
let chart = new google.visualization.LineChart(
document.getElementById("chart_div")
);
chart.draw(data, options);
// interval for adding new data every 250ms
let index = 0;
setInterval(function() {
// instead of this random, you can make an ajax call for the current cpu usage or what ever data you want to display
let random = Math.random() * 30 + 20;
data.addRow([index, random]);
chart.draw(data, options);
index++;
}, 250);
}
</script>
</body>
</html>
结论
optionsdata