Chart.js поддерживает несколько типов осей, определяющих способ интерпретации и отображения данных на графиках. Выбор типа оси влияет на масштабирование, форматирование значений, поведение сетки, а также на то, как библиотека обрабатывает входные данные.
Оси в Chart.js задаются в конфигурации через параметр
type внутри объекта scales. Каждая ось может
иметь собственный тип, независимо от других осей на графике.
Основные типы осей:
Каждый тип предназначен для определённого класса задач визуализации данных.
Линейная ось является наиболее универсальной и используется по умолчанию для числовых данных. Значения распределяются равномерно, а шаг между делениями остаётся постоянным.
Основные свойства:
Пример конфигурации:
const config = {
type: 'line',
data: {
labels: ['A', 'B', 'C'],
datasets: [{
label: 'Данные',
data: [10, 20, 30]
}]
},
options: {
scales: {
y: {
type: 'linear',
beginAtZero: true
}
}
}
};
Линейная ось используется в большинстве графиков: столбчатых, линейных, точечных.
Особенность поведения:
Логарифмическая ось применяется для данных с широким диапазоном значений, где линейное масштабирование делает малые значения незаметными.
Основные характеристики:
Пример конфигурации:
const config = {
type: 'line',
data: {
datasets: [{
label: 'Рост',
data: [1, 10, 100, 1000]
}]
},
options: {
scales: {
y: {
type: 'logarithmic'
}
}
}
};
Поведение оси:
Типичные области применения:
Категориальная ось работает с дискретными значениями, которые интерпретируются как категории, а не как числовая шкала.
Характерные особенности:
Пример:
const config = {
type: 'bar',
data: {
labels: ['Январь', 'Февраль', 'Март'],
datasets: [{
label: 'Продажи',
data: [50, 80, 65]
}]
},
options: {
scales: {
x: {
type: 'category'
}
}
}
};
Семантика:
Применение:
Временная ось предназначена для работы с датами и временем, где важна обработка интервалов и форматирование временных значений.
Особенности:
Пример:
const config = {
type: 'line',
data: {
datasets: [{
label: 'Температура',
data: [
{ x: '2026-01-01', y: 5 },
{ x: '2026-01-02', y: 7 },
{ x: '2026-01-03', y: 4 }
]
}]
},
options: {
scales: {
x: {
type: 'time',
time: {
unit: 'day'
}
}
}
}
};
Поведение:
Особенности конфигурации time:
unit задаёт базовую единицу группировкиdisplayFormats определяет отображение метокtooltipFormat управляет отображением в подсказкахTimeseries-ось расширяет подход time и ориентирована на высокопроизводительную работу с большими наборами временных данных.
Основные отличия от time:
Пример:
const config = {
type: 'line',
data: {
datasets: [{
label: 'Трафик',
data: [
{ x: '2026-01-01T10:00:00Z', y: 120 },
{ x: '2026-01-01T11:00:00Z', y: 150 },
{ x: '2026-01-01T12:00:00Z', y: 180 }
]
}]
},
options: {
scales: {
x: {
type: 'timeseries'
}
}
}
};
Особенности:
Семантика:
Логарифмическая ось используется там, где линейная визуализация искажает восприятие данных.
Категориальная ось не поддерживает арифметическую интерпретацию значений.
Обе оси обеспечивают работу с датами, но различаются уровнем оптимизации и требованиями к данным.
Конфигурация осей выполняется через объект scales, где
каждая ось задаётся по ключу:
options: {
scales: {
x: {
type: 'category'
},
y: {
type: 'linear'
}
}
}
Дополнительные параметры:
min, max — фиксация диапазонаticks — управление делениямиgrid — настройка сеткиposition — расположение оси (top, bottom, left,
right)Каждый тип оси использует собственную стратегию формирования меток:
Пример кастомизации:
ticks: {
callback: function(value) {
return value + ' ед.';
}
}
Chart.js автоматически нормализует данные в зависимости от типа оси:
x и
yПри использовании временных осей допустимы разные форматы входных данных:
Сетка адаптируется к типу оси:
Настройка:
grid: {
display: true,
color: '#e0e0e0'
}
В одном графике допускается использование разных типов осей:
scales: {
x: {
type: 'time'
},
y: {
type: 'logarithmic'
}
}
Такое сочетание применяется в аналитических графиках, где время комбинируется с экспоненциальными значениями.
Поведение осей зависит от корректности данных:
Некорректные значения приводят к пропускам точек или искажению шкалы.