Временная ось в Chart.js строится поверх шкалы типа
time, которая предназначена для работы с датами, временными
метками и нерегулярными интервалами между точками данных. В отличие от
категориальной оси, где значения равномерно распределены по индексам
массива, временная шкала вычисляет положение каждой точки исходя из
реального временного расстояния между событиями.
Временная ось опирается на числовое представление даты (timestamp в
миллисекундах). Каждая точка данных содержит пару x (время)
и y (значение), где x может быть строкой даты,
объектом Date или числом.
Ключевая особенность заключается в том, что расстояние между точками не фиксировано, а вычисляется:
Такой подход делает временную шкалу подходящей для финансовых графиков, логов, мониторинга и аналитики событий.
Chart.js поддерживает несколько форматов представления времени.
data: [
{ x: '2026-01-01T10:00:00Z', y: 12 },
{ x: '2026-01-01T12:00:00Z', y: 19 },
{ x: '2026-01-03T09:00:00Z', y: 7 }
]
data: [
{ x: new Date('2026-01-01'), y: 12 },
{ x: new Date('2026-01-05'), y: 18 }
]
data: [
{ x: 1767225600000, y: 12 },
{ x: 1767484800000, y: 19 }
]
Все три варианта приводятся к единому внутреннему представлению — числу времени.
Для активации временной шкалы ось x или y
настраивается как type: 'time'.
options: {
scales: {
x: {
type: 'time',
time: {
unit: 'day'
}
}
}
}
Параметр time.unit управляет базовой единицей
отображения:
millisecondsecondminutehourdayweekmonthyearГлавная особенность временной шкалы — поддержка нерегулярных интервалов без дополнительной нормализации данных.
Пример набора с разными промежутками:
data: [
{ x: '2026-01-01', y: 5 },
{ x: '2026-01-02', y: 7 },
{ x: '2026-01-10', y: 3 },
{ x: '2026-02-01', y: 12 }
]
Chart.js автоматически вычисляет:
При этом отсутствует необходимость добавлять пустые значения для «пропущенных» дней.
Временная шкала не содержит собственного полноценного парсера дат и использует адаптеры времени. Основные варианты:
date-fnsluxonmoment (устаревший, но всё ещё поддерживается)Пример подключения через date-fns:
import 'chartjs-adapter-date-fns';
Без адаптера временная ось не сможет корректно интерпретировать строки дат.
Автоматическое определение масштаба можно заменить ручным управлением.
options: {
scales: {
x: {
type: 'time',
time: {
unit: 'month',
stepSize: 2
}
}
}
}
Здесь:
unit задаёт базовую единицу (например, месяц)stepSize определяет шаг между меткамиРезультат — отображение через каждые два месяца независимо от плотности данных.
Ограничение диапазона позволяет фиксировать видимую область:
options: {
scales: {
x: {
type: 'time',
min: '2026-01-01',
max: '2026-03-01'
}
}
}
Это особенно важно при работе с потоковыми данными или историческими срезами.
Формат подписей регулируется через displayFormats.
options: {
scales: {
x: {
type: 'time',
time: {
displayFormats: {
day: 'dd.MM',
month: 'MM.yyyy',
year: 'yyyy'
}
}
}
}
}
Формат зависит от текущего уровня масштаба. При увеличении графика отображение автоматически переключается.
Параметр distribution влияет на интерпретацию
значений:
linear — точки распределяются по реальному времениseries — данные интерпретируются как
последовательностьПример:
options: {
scales: {
x: {
type: 'time',
distribution: 'linear'
}
}
}
Для временных рядов с реальными датами всегда используется линейное распределение.
Если между точками существуют большие интервалы, шкала не заполняет их фиктивными значениями. Это приводит к:
Такая модель полезна для анализа активности, где отсутствие данных является значимым фактором.
Алгоритм формирования тиков учитывает:
При необходимости можно отключить автоматическую генерацию:
options: {
scales: {
x: {
type: 'time',
ticks: {
autoSkip: false
}
}
}
}
Это приводит к отображению всех возможных меток, что может быть полезно при малом объёме данных.
Временная шкала оперирует UTC-значениями при использовании ISO-строк
с суффиксом Z. При отсутствии явного указания зоны время
интерпретируется согласно локальному окружению браузера.
Особенности:
При увеличении количества точек временная шкала начинает требовать оптимизации:
min / maxТакже может применяться декомпозиция данных на интервалы, чтобы снизить нагрузку на вычисление тиков.
Tooltip группирует данные по ближайшему времени. При наведении:
xХотя базовая библиотека не предоставляет полноценного зума, временная шкала рассчитана на динамическое изменение диапазона через:
min и maxМеханизм пересчёта остаётся тем же — все значения преобразуются в временную линию с плавающим масштабом.
При высокой плотности точек временная ось:
Это предотвращает визуальную перегрузку и сохраняет читаемость даже при тысячах точек на коротком промежутке времени.