Javascript Chart.js时间刻度不显示数据
我有一个图表显示得很好,直到我添加了一个。配置如下所示:Javascript Chart.js时间刻度不显示数据,javascript,time,chart.js,Javascript,Time,Chart.js,我有一个图表显示得很好,直到我添加了一个。配置如下所示: this.chart = new Chart(this.ctx, { type: 'line', data: data, options: { legend: { display: false }, scales: { xAxes: [{
this.chart = new Chart(this.ctx, {
type: 'line',
data: data,
options: {
legend: {
display: false
},
scales: {
xAxes: [{
type: 'time',
time: {
unit: 'month',
format: 'timeFormat'
}
}]
}
}
});
let data = {
labels: ["1485903600", "1490738400"],
datasets: [{
label: '',
data: [120, 30],
lineTension: 0
}]
};
数据
对象如下所示:
this.chart = new Chart(this.ctx, {
type: 'line',
data: data,
options: {
legend: {
display: false
},
scales: {
xAxes: [{
type: 'time',
time: {
unit: 'month',
format: 'timeFormat'
}
}]
}
}
});
let data = {
labels: ["1485903600", "1490738400"],
datasets: [{
label: '',
data: [120, 30],
lineTension: 0
}]
};
x轴正确显示两个日期,y轴以正确的限值(即120和30)为界,但是数据没有显示在图表上。转换到时间刻度时,图表没有显示数据的原因是,您正在为标签传递字符串值,而
日期
构造函数无法解析该字符串值
时间刻度需要一个整数(从历元开始的毫秒数)、一个Date
对象、一个矩.js
对象,或者一个日期的字符串表示形式,其格式是Date.parse()
可以理解的
因此,在您的情况下,当图表呈现时,它无法为X轴创建Date
对象(因为您的标签值),因此它使用new Date()
(这就是为什么X轴仍然显示一些日期数据…请注意,它是2017日期,因为new Date()
返回一个日期
初始化为立即)
要纠正这一点,只需将标签值转换为整数(例如,删除引号),图表就会显示您的数据点。但是,该图表看起来仍然很有趣,因为X刻度是以月为单位配置的,但数据值仅相隔一天(1485903600=1970年1月17日10:45下午和1490738400=1970年1月18日12:05上午)
这是一个显示您的原始图表和正确图表的列表,以便您可以看到差异。感谢您的回复。将它们转换为整数确实会使它们按您所说的那样工作。但我很困惑,因为1485903600应该是2017年2月1日,根据它的说法。为什么它在图表上显示为1970年1月17日?这是因为希望接收自历元以来的毫秒数(1485903600是秒数)。因此,当您在标签中使用整数时,这些整数在日期构造函数中用于创建新的日期,由于日期构造函数预期的是毫秒,因此它会生成一个意外的日期值。是的-我乘以1000,就得到了我想要的日期。谢谢。这是一个非常好的答案。解释性和简洁性。我喜欢,谢谢。