我想用 chart.js 绘制折线图,但所有示例都显示单个数组作为数据,我有 2d 数据。X 是天(日期对象),y 是产品的价格。
我有这样的功能来创建数据:
function format(data) {
const result = [];
Object.entries(data).forEach(([key, value]) => {
var data = {
label: key,
backgroundColor: 'rgba(0,0,0,0)',
data: value.map(data => ({y: data[0], x: new Date(data[1])}))
};
result.push(data);
});
return result;
}
从文档中我看到我可以将对象与 {x,y} 一起使用,但这只渲染了 2 点。
数据输出如下所示:
[
{
"label": "cyfrowe.pl",
"backgroundColor": "rgba(0,0,0,0)",
"data": [
{
"y": 9299,
"x": "2020-08-01T05:19:28.000Z"
},
{
"y": 9299,
"x": "2020-08-02T04:15:01.000Z"
},
我的图表代码如下所示:
var canvas = document.querySelector('canvas');
var ctx = canvas.getContext('2d');
console.log(ctx);
fetch('price.json')
.then(res => res.json())
.then(data => {
data = format(data);
console.log(data);
console.log(JSON.stringify(data.slice(0,1), true, 4));
var myLineChart = new Chart(ctx, {
type: 'line',
data:{ datasets: data }
});
});
事实上,时间应该以天为单位,因为我有大约同一时间每个日期的价格。
这是我不工作的演示。(演示已使用答案代码更新)。
拉丁的传说
相关分类