Объект конфигурации в Chart.js представляет собой центральную структуру, через которую определяется поведение, данные и визуальное представление графика. Он передаётся при создании экземпляра диаграммы и формирует всю логику от типа графика до тонкой настройки анимаций и осей.
Базовая структура конфигурации включает три ключевых блока:
Дополнительно могут использоваться:
Типовая форма объекта выглядит следующим образом:
const config = {
type: 'bar',
data: {},
options: {}
};
Каждый из этих разделов имеет собственную вложенную структуру и влияет на конкретную часть визуализации.
Поле type задаёт базовый шаблон рендера. Chart.js использует его для выбора внутреннего контроллера, отвечающего за построение графика.
Основные значения:
line — линейный графикbar — столбчатая диаграммаpie — круговая диаграммаdoughnut — кольцевая диаграммаradar — радарная диаграммаpolarArea — полярная диаграммаscatter — диаграмма рассеянияПример:
const config = {
type: 'line',
data: {},
options: {}
};
Тип может быть переопределён на уровне набора данных в смешанных графиках, где разные dataset используют разные представления.
Блок data описывает содержимое графика. Он включает метки и наборы данных.
data: {
labels: [],
datasets: []
}
Массив labels задаёт подписи по оси X (или категориальной оси). В зависимости от типа графика они могут интерпретироваться по-разному.
Пример:
labels: ['Январь', 'Февраль', 'Март']
Для временных шкал labels могут отсутствовать, если используется адаптер дат.
Массив datasets содержит объекты, каждый из которых описывает отдельную серию данных.
datasets: [
{
label: 'Продажи',
data: [10, 20, 30]
}
]
Каждый dataset включает:
Пример расширенного dataset:
{
label: 'Выручка',
data: [120, 190, 300],
backgroundColor: 'rgba(54, 162, 235, 0.2)',
borderColor: 'rgba(54, 162, 235, 1)',
borderWidth: 2,
tension: 0.4
}
Блок options является наиболее сложным и содержит иерархию параметров.
Общая структура:
options: {
responsive: true,
plugins: {},
scales: {},
interaction: {},
animation: {}
}
Параметр responsive управляет реакцией графика на изменение размеров контейнера.
true — график адаптируетсяfalse — фиксированные размерыДополнительно используется:
options: {
responsive: true,
maintainAspectRatio: false
}
Блок scales определяет поведение координатных осей. В Chart.js каждая ось является отдельным объектом.
scales: {
x: {},
y: {}
}
category — категориальнаяlinear — линейнаяlogarithmic — логарифмическаяtime — временнаяПример настройки линейной оси:
scales: {
y: {
beginAtZero: true,
min: 0,
max: 100
}
}
Объект ticks управляет отображением подписей:
y: {
ticks: {
stepSize: 10,
color: '#666',
callback: function(value) {
return value + ' ₽';
}
}
}
x: {
grid: {
display: false
}
}
Сетка может управляться отдельно для каждой оси.
Блок plugins управляет встроенными и сторонними расширениями.
plugins: {
legend: {},
tooltip: {},
title: {}
}
legend: {
display: true,
position: 'top',
labels: {
color: '#333'
}
}
tooltip: {
enabled: true,
mode: 'index',
intersect: false
}
Параметр mode определяет логику отображения:
nearestindexdatasetpointtitle: {
display: true,
text: 'Динамика продаж'
}
Блок interaction управляет тем, как график реагирует на курсор и события.
interaction: {
mode: 'nearest',
axis: 'x',
intersect: false
}
nearest — ближайшая точкаindex — все элементы по индексуdataset — весь datasetpoint — конкретная точкаtrue — событие только при точном попаданииfalse — более широкая зона срабатыванияБлок animation отвечает за переходы и плавность отрисовки.
animation: {
duration: 1000,
easing: 'easeOutQuart'
}
Пример:
animation: {
duration: 1500,
easing: 'easeInOutQuad',
delay: 200
}
Плагины могут подключаться локально:
plugins: [ChartDataLabels]
options: {
parsing: {
xAxisKey: 'date',
yAxisKey: 'value'
}
}
Используется при работе с объектами вместо массивов.
data: {
datasets: [{
data: largeDataset,
normalized: true
}]
}
Chart.js поддерживает комбинированные графики, где разные datasets имеют разные типы.
datasets: [
{
type: 'bar',
data: [10, 20, 30]
},
{
type: 'line',
data: [15, 25, 35]
}
]
В этом случае глобальный type становится базовым, но может переопределяться локально.
Chart.js позволяет задавать глобальные параметры:
Chart.defaults.font.size = 14;
Chart.defaults.color = '#444';
Это влияет на все создаваемые графики, если не переопределено локально.
При инициализации Chart.js выполняет многоуровневое слияние:
Приоритет всегда отдается наиболее специфичному уровню.
В актуальных версиях Chart.js наблюдается усиление модульности:
Это привело к тому, что конфигурационный объект стал не просто JSON-структурой, а декларативной моделью поведения визуализации.