# 时间笛卡尔坐标轴
时间刻度用于显示时间和日期。数据根据数据点之间的时间间隔进行分布。在构建刻度时,它会根据刻度的尺寸自动计算最舒适的单位。
# 日期适配器
时间刻度**需要**同时存在日期库和相应的适配器。请从可用的适配器 (在新窗口中打开)中选择。
# 数据集
# 输入数据
参见数据结构.
# 日期格式
在为时间刻度提供数据时,Chart.js 在内部使用以毫秒为单位的自纪元以来的时间戳(1970 年 1 月 1 日午夜,UTC)。但是,Chart.js 也支持你选择的日期适配器接受的所有格式。如果你想设置 parsing: false
以获得更好的性能,则应使用时间戳。
# 配置选项
# 时间轴特定选项
命名空间:options.scales[scaleId]
名称 | 类型 | 默认值 | 描述 |
---|---|---|---|
min | number |string | 要显示的最小项。 更多... | |
max | number |string | 要显示的最大项。 更多... | |
suggestedMin | number |string | 如果在它之前没有数据点,则要显示的最小项。 更多... | |
suggestedMax | number |string | 如果在它之后没有数据点,则要显示的最大项。 更多... | |
adapters.date | object | {} | 如果外部日期库的适配器需要或支持选项,则为该适配器的选项 |
bounds | string | 'data' | 确定刻度范围。 更多... |
offsetAfterAutoskip | boolean | false | 如果为 true,则柱状图偏移量将使用自动跳过的刻度进行计算。 |
ticks.source | string | 'auto' | 刻度的生成方式。 更多... |
time.displayFormats | object | 设置不同时间单位的显示方式。 更多... | |
time.isoWeekday | boolean |number | false | 如果为 boolean 且为 true 且单位设置为 'week',则一周的第一天为星期一。否则,为星期日。如果为 number ,则一周的第一天的索引(0 - 星期日,6 - 星期六) |
time.parser | string |function | 日期的自定义解析器。 更多... | |
time.round | string | false | 如果已定义,日期将四舍五入到此单位的开始。有关允许的单位,请参见下面的时间单位。 |
time.tooltipFormat | string | 用于工具提示的格式字符串。 | |
time.unit | string | false | 如果已定义,将强制单位为特定类型。有关详细信息,请参见下面的时间单位部分。 |
time.minUnit | string | 'millisecond' | 用于时间单位的最小显示格式。 |
# 所有笛卡尔坐标轴的通用选项
命名空间:options.scales[scaleId]
名称 | 类型 | 默认值 | 描述 |
---|---|---|---|
bounds | string | 'ticks' | 确定刻度范围。 更多... |
clip | boolean | true | 如果为 true,则将数据集绘制裁剪到刻度的大小,而不是图表区域 |
position | string | object | 坐标轴的位置。 更多... | |
stack | string | 堆叠组。在同一position 且具有相同stack 的坐标轴将被堆叠。 | |
stackWeight | number | 1 | 堆叠组中刻度的权重。用于确定刻度在组中分配的空间量。 |
axis | string | 此坐标轴的类型。可能的值为:'x' 、'y' 。如果未设置,则从 ID 的第一个字符推断,第一个字符应为'x' 或'y' 。 | |
offset | boolean | false | 如果为 true,则会在两侧添加额外的空间,并且刻度会按比例缩放以适合图表区域。默认情况下,对于柱状图,此项设置为 true 。 |
title | object | 刻度标题配置。 更多... |
# 所有坐标轴的通用选项
命名空间:options.scales[scaleId]
名称 | 类型 | 默认值 | 描述 |
---|---|---|---|
type | string | 正在使用的刻度类型。可以创建自定义刻度,并使用字符串键进行注册。这允许更改图表中坐标轴的类型。 | |
alignToPixels | boolean | false | 将像素值对齐到设备像素。 |
backgroundColor | Color | 刻度区域的背景颜色。 | |
border | object | 边框配置。 更多... | |
display | boolean |string | true | 控制坐标轴的全局可见性(true 时可见,false 时隐藏)。当 display: 'auto' 时,坐标轴仅在至少一个关联的数据集可见时才可见。 |
grid | object | 网格线配置。 更多... | |
min | number | 用户定义的刻度最小值,覆盖数据中的最小值。 更多... | |
max | number | 用户定义的刻度最大值,覆盖数据中的最大值。 更多... | |
reverse | boolean | false | 反转刻度。 |
stacked | boolean |string | false | 数据是否应堆叠。 更多... |
suggestedMax | number | 在计算最大数据值时使用的调整值。 更多... | |
suggestedMin | number | 在计算最小数据值时使用的调整值。 更多... | |
ticks | object | 刻度配置。 更多... | |
weight | number | 0 | 用于对坐标轴进行排序的权重。权重越高,离图表区域越远。 |
# 时间单位
支持以下时间测量单位。这些名称可以作为字符串传递到 time.unit
配置选项以强制使用特定单位。
'millisecond'
'second'
'minute'
'hour'
'day'
'week'
'month'
'quarter'
'year'
例如,要创建一个具有始终显示每月的单位的时间刻度的图表,可以使用以下配置。
const chart = new Chart(ctx, {
type: 'line',
data: data,
options: {
scales: {
x: {
type: 'time',
time: {
unit: 'month'
}
}
}
}
});
# 显示格式
你可以使用每个单位的键指定显示格式的映射
millisecond
second
minute
hour
day
week
month
quarter
year
用作值的格式字符串取决于你选择使用的日期适配器。
例如,要将 quarter
单位的显示格式设置为显示月份和年份,可以将以下配置传递给图表构造函数。
const chart = new Chart(ctx, {
type: 'line',
data: data,
options: {
scales: {
x: {
type: 'time',
time: {
displayFormats: {
quarter: 'MMM YYYY'
}
}
}
}
}
});
# 刻度来源
ticks.source
属性控制刻度的生成。
'auto'
: 根据刻度大小和时间选项生成“最佳”刻度'data'
: 从数据生成刻度(包括来自数据{x|y}
对象的标签)'labels'
: 从用户给定的labels
仅生成刻度
# 解析器
如果此属性定义为字符串,则将其解释为日期适配器用于解析日期的自定义格式。
如果这是一个函数,则它必须返回日期适配器的 parse
方法可以处理的类型。
# 最小值和最大值配置
对于 min
和 max
属性,值必须是日期适配器可解析的 string
,或一个自 UNIX 纪元以来经过的毫秒数的数字。在下面的示例中,x 轴将从 2021 年 11 月 7 日开始。
let chart = new Chart(ctx, {
type: 'line',
data: {
datasets: [{
data: [{
x: '2021-11-06 23:39:30',
y: 50
}, {
x: '2021-11-07 01:00:28',
y: 60
}, {
x: '2021-11-07 09:00:28',
y: 20
}]
}],
},
options: {
scales: {
x: {
min: '2021-11-07 00:00:00',
}
}
}
});
# 将刻度类型从时间刻度更改为对数/线性刻度。
将刻度类型从时间刻度更改为对数/线性刻度时,需要将 bounds: 'ticks'
添加到刻度选项中。更改 bounds
参数是必要的,因为它的默认值为时间刻度的 'data'
。
初始配置
const chart = new Chart(ctx, {
type: 'line',
data: data,
options: {
scales: {
x: {
type: 'time',
}
}
}
});
刻度更新
chart.options.scales.x = {
type: 'logarithmic',
bounds: 'ticks'
};
# 内部数据格式
在内部,时间刻度使用自纪元以来的毫秒数