我很喜欢chartjs,但是在时间范围上,我一直难以获得确切的格式。我所追求的是以下几点:
标签永远不应该是对角线(理想情况下-不要大张旗鼓)
理想情况下,我可以在刻度线中指定最小间距,以避免出现上述情况,例如7天
我一直在使用以下xAxes设置:
xAxes: [{
type: 'time',
unit: 'day',
unitStepSize: 10,
minUnit: 'day',
time: {
displayFormats: {
day: 'D-MMM',
week: 'D-MMM',
month: 'D-MMM',
quarter: 'D-MMM',
}
}
}]
我的日期以“ YYYY-MM-DD”格式使用。
现在,它似乎正在忽略
unitStepSize
。完整的示例可以在这里找到:
https://jsfiddle.net/koendirckx/fqhv8cjs/5/
最佳答案
在我自己为同一问题苦苦挣扎了很长时间之后,我终于注意到Chartjs文档中的精美字体http://www.chartjs.org/docs/#scales-time-units unitStepSize参数需要在time子选项中定义。
我在做:
scales: {
xAxes: [{
type: "time",
time: {
unit: 'day',
displayFormats: {
day: 'MMM DD',
},
},
ticks: {
fontColor: "black",
fontSize: 12,
fontStyle: "normal",
fontFamily: "Segoe UI",
},
unitStepSize: 7,
}],
yAxes: yAxes
},
当我应该做的时候:
scales: {
xAxes: [{
type: "time",
time: {
unit: 'day',
displayFormats: {
day: 'MMM DD',
},
unitStepSize: 7,
},
ticks: {
fontColor: "black",
fontSize: 12,
fontStyle: "normal",
fontFamily: "Segoe UI",
},
}],
yAxes: yAxes
},
在更广泛的上下文中:(请注意eleChart1是图表的画布DOM元素,而yAxis,数据集和ChartName是在示例之外构建的对象/变量。)
var Chart1 = new Chart(eleChart1, {
type: 'line',
lineWidth: 15,
data: {
datasets: datasets,
},
options: {
showPointLabels: true,
legend: {
display: true,
//position: "bottom"
},
title: {
display: true,
text: ChartName,
fontSize: 18,
fontStyle: "bold",
fontFamily: "Segoe UI"
},
scales: {
xAxes: [{
type: "time",
time: {
unit: 'day',
displayFormats: {
day: 'MMM DD',
},
unitStepSize: 7,
},
ticks: {
fontColor: "black",
fontSize: 12,
fontStyle: "normal",
fontFamily: "Segoe UI",
},
}],
yAxes: yAxes
},
}
});
底线:将unitStepSize选项放入时间对象后,它便按预期工作。
关于javascript - chartjs的时标格式问题,主要是unitStepSize,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/40827426/