Javascript 在Chart.js>;3.0,在类型时间轴上,如何仅显示现有数据点的标签和记号(使标签反映数据)?

Javascript 在Chart.js>;3.0,在类型时间轴上,如何仅显示现有数据点的标签和记号(使标签反映数据)?,javascript,charts,chart.js,Javascript,Charts,Chart.js,在Chart.js 3.0中,当我用类型为time的x轴绘制图表时,Chart.js会显示许多不必要的标签,如下图所示 为了创建这个图表,我为同一天的不同时刻提供了6个datetimes数组:00:05、04:11、12:38、15、10、18:41和22:02。但正如你所见,这些标签并不反映我的数据:它在2点到22点之间每小时显示一个刻度和一个标签 我得到的是: 期望输出: 因此,当且仅当我提供的数据中确实存在一个值时,它应该在x轴上显示标签 因此,在下面的代码中,它应该只显示数组date

在Chart.js 3.0中,当我用类型为
time
的x轴绘制图表时,Chart.js会显示许多不必要的标签,如下图所示

为了创建这个图表,我为同一天的不同时刻提供了6个datetimes数组:00:05、04:11、12:38、15、10、18:41和22:02。但正如你所见,这些标签并不反映我的数据:它在2点到22点之间每小时显示一个刻度和一个标签

我得到的是:

期望输出:

因此,当且仅当我提供的数据中确实存在一个值时,它应该在x轴上显示标签

因此,在下面的代码中,它应该只显示数组
datetimes
中包含的值的标签

我在文档中找不到这方面的信息。我发现了这个相关的SO问题(),但不幸的是,它不适用于时间轴类型

以下是一个可复制的示例:


.图表{
宽度:600px!重要;
高度:600px!重要;
}
var ctx=document.getElementById(“chartjs”).getContext(“2d”);
//要在图表上显示的日期时间
让datetimes=[luxon.DateTime.utc(2000,1,1,0,5),luxon.DateTime.utc(2000,1,1,4,11),luxon.DateTime.utc(2000,1,1,12,38),luxon.DateTime.utc(2000,1,1,15,10),luxon.DateTime.utc(2000,1,1,18,41),luxon.DateTime.utc(2000,1,1,22,2)];
//创建一个ISO字符串数组
设datetimes_isos=[];
forEach(函数(项、索引、数组){
datetimes_isos.push(item.toISO());
});
//图表数据
设data=[{x:datetimes_isos[0],y:0},{x:datetimes_isos[1],y:10},{x:datetimes_isos[2],y:20},{x:datetimes_isos[3],y:40},{x:datetimes_isos[4],y:50},{x:datetimes_isos[5],y:60}];
常量图表数据={
标签:datetimes_isos,
数据集:[{data:data}]
};
常量配置={
键入:“行”,
数据:图表数据,
选项:{
比例:{
x:{
键入:“时间”,
},
},
},
};
var theChart=新图表(ctx,配置);
以下是解决方案

您需要将记号源添加到数据中


.图表{
宽度:600px!重要;
高度:600px!重要;
}
var ctx=document.getElementById(“chartjs”).getContext(“2d”);
//要在图表上显示的日期时间
让datetimes=[luxon.DateTime.utc(2000,1,1,0,5),luxon.DateTime.utc(2000,1,1,4,11),luxon.DateTime.utc(2000,1,1,12,38),luxon.DateTime.utc(2000,1,1,15,10),luxon.DateTime.utc(2000,1,1,18,41),luxon.DateTime.utc(2000,1,1,22,2)];
//创建一个ISO字符串数组
设datetimes_isos=[];
forEach(函数(项、索引、数组){
datetimes_isos.push(item.toISO());
});
//图表数据
设data=[{x:datetimes_isos[0],y:0},{x:datetimes_isos[1],y:10},{x:datetimes_isos[2],y:20},{x:datetimes_isos[3],y:40},{x:datetimes_isos[4],y:50},{x:datetimes_isos[5],y:60}];
常量图表数据={
标签:datetimes_isos,
数据集:[{data:data}]
};
常量配置={
键入:“行”,
数据:图表数据,
选项:{
比例:{
x:{
键入:“时间”,
滴答声:{
资料来源:“数据”
},
时间:{
单位:分钟
},
}
},
},
};
var theChart=新图表(ctx,配置);

不幸的是,它没有按预期工作,因为日期似乎是四舍五入的:例如,1小时5分钟变为“01:00”,4小时11分钟变为“05:00”,等等。但非常感谢,这非常接近我要做的!你知道如何得到准确的时间吗?我算出了:在
x
中,我们必须指定
时间:{unit:'minute},
除了
记号:{source:'data}
,正如你所说的。谢谢!你能用这个编辑你的答案吗?我很高兴它对你有帮助。答案已编辑。