You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将OpenWeatherMap API的windSpeed数据接入Chart.js折线图?

思路提示:从OpenWeatherMap API获取风速数据并接入Chart.js折线图

这里给你几个关键方向来推进你的实现,一步步拆解问题:

  • 先搞定API数据的分组与提取
    OpenWeatherMap的forecast接口返回的是每3小时一条的数据(data.list),你需要把这些数据按日期分组,提取每天的风速值。比如:

    • 遍历data.list,用new Date(item.dt_txt)把时间字符串转成Date对象
    • 按日期(比如getDate())把同一天的风速数据归为一组
    • 对每组数据做处理:可以取当天的平均风速、最大风速,或者固定取某一个时段(比如中午12点)的数据,确保最终得到7个对应一周每天的风速值
  • 更新Chart.js的数据集并刷新图表
    你已经创建了myLineChart实例,在AJAX的success回调里拿到整理好的风速数组后:

    • 找到对应风速的数据集(你的代码里是datasets[1]),把它的data属性替换成你整理好的数组:myLineChart.data.datasets[1].data = processedWindData
    • 调用myLineChart.update()让图表重新渲染,这样新数据就会显示出来了
  • 确保数据与标签的一致性
    现在你的labels是固定的瑞典语星期,要保证你提取的7天风速数据和这些标签的顺序完全对应。如果想让标签动态匹配API返回的日期,可以从分组后的日期里生成对应的星期名称(用toLocaleDateString('sv-SE', {weekday: 'long'})就能得到瑞典语的星期),然后更新myLineChart.data.labels = dynamicLabels再调用update

  • 调试与验证每一步
    每一步都用console.log()输出结果:比如先打印data.list确认数据结构,再打印分组后的每天风速,最后打印替换后的myLineChart.data.datasets[1].data,确保数据长度和格式都正确,再去看图表的变化

附你的当前代码参考:

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
<meta http-equiv="x-ua-compatible" content="ie=edge">
<title>GrafIndex</title>
<!-- Font Awesome -->
<link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.0/css/all.css">
<!-- Bootstrap core CSS -->
<link href="css/bootstrap.min.css" rel="stylesheet">
<!-- Material Design Bootstrap -->
<link href="css/mdb.min.css" rel="stylesheet">
<!-- Your custom styles (optional) -->
<link href="css/style.css" rel="stylesheet">
</head>
<body>
<canvas id="lineChart"></canvas>
<!-- SCRIPTS -->
<!-- JQuery -->
<script type="text/javascript" src="js/jquery-3.3.1.min.js"></script>
<!-- Bootstrap tooltips -->
<script type="text/javascript" src="js/popper.min.js"></script>
<!-- Bootstrap core JavaScript -->
<script type="text/javascript" src="js/bootstrap.min.js"></script>
<!-- MDB core JavaScript -->
<script type="text/javascript" src="js/mdb.js"></script>
<script>
$(document).ready(function() {
var apiPrt1 = "https://api.openweathermap.org/data/2.5/forecast?id=";
var apiKey = "mykey";
var city = "2673730"; //Stockholm-ID
var ctxL = document.getElementById("lineChart").getContext('2d');
var myLineChart = new Chart(ctxL, {
type: 'line',
data: {
labels: ["Måndag", "Tisdag", "Onsdag", "Torsdag", "Fredag", "Lördag", "Söndag"],
datasets: [{
label: "Celsius",
data: [65, 59, 80, 81, 56, 55, 40],
backgroundColor: [
'rgba(105, 0, 132, .2)',
],
borderColor: [
'rgba(200, 99, 132, .7)',
],
borderWidth: 2
}, {
label: "Vindstyrka m/s",
data: [, 48, 40, 19, 86, 27, 10],
backgroundColor: [
'rgba(0, 137, 132, .2)',
],
borderColor: [
'rgba(0, 10, 130, .7)',
],
borderWidth: 2
} ]
},
options: {
responsive: true
}
});
$.ajax({
url: apiPrt1 + city + apiKey,
method: "GET",
dataType: "JSON",
data: "{}",
success: function(data) {
console.log(data.list)
var windSpeed = data.list[0].wind.speed;
console.log(windSpeed)
}
})
})
</script>
</body>
</html>

内容的提问来源于stack exchange,提问作者Ivan Jugo Zujovic

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.12 04:10:25