我想使用Chart.js绘制我自己制作的恒温器的温度读数和加热器状态。加热器状态是0或1,但我将其保存为最小表示形式:我只有值,当它打开/关闭。加热时间从来不等于测量时间,而是在两者之间。
我想在同一个时间x轴上绘制时间数据。从至少20个例子、问题和其他资源中,我收集了this Fiddle,这是我最好的猜测。然而,我不能合理地绘制时间轴和它们的数据。如果我在一个非常简化的例子中将其简化为x轴上的数字数据,我会得到在后一个例子的前几个x值上绘制的较小数据集。
js代码为:
var options = {
type: 'line',
data: {
labels: ["2018-12-07 08:45:17",
"2018-12-07 09:30:17", "2018-12-07 10:15:16",
"2018-12-07 11:00:17", "2018-12-07 14:45:16"],
datasets: [
{
label: '1st line',
data: [12, 19, 7, 9, 10, 8],
},
{
steppedLine: 'before',
xAxisID: 'x-axis-2',
label: '2nd line',
data: [
{
x: "2018-12-07 09:15:47",
y: 3
}, {
x: "2018-12-07 10:55:25",
y: 5
}, {
x: "2018-12-07 13:05:00",
y: 3
}],
}
]
},
options: {
scales: {
xAxes: [{}, {
id: 'x-axis-2',
type: 'linear',
position: 'bottom',
//display: false,
}],
}
}
}
var ctx = document.getElementById('chartJSContainer').getContext('2d');
new Chart(ctx, options);
2条答案
按热度按时间yc0p9oo01#
首先,可以使用唯一的
xAxis
并将其定义为time cartesian axis。此外,您不应该提供
data.labels
,而是使用包含x和y属性的对象定义每个数据点。x一个一个一个一个x一个一个二个x
6mw9ycah2#
我终于能够解决javaScript对象的数据结构问题了,它需要
[{ "x": 1, "y":1}, {"x":2, "y":3} ]
结构,其中x和y是每个条目的对象属性x和y,而不是一劳永逸(这对我来说总是更有意义),但是我可以发送数据而不需要额外的标签,然后用javascript动态地转换它们,如下所示: