Работа с цветами в Chart.js строится вокруг нескольких уровней конфигурации: глобальных значений, параметров набора данных, свойств отдельных элементов графика и динамических функций, которые вычисляют цвет в зависимости от контекста отрисовки. Цветовая система охватывает фон, границы, точки, заливку областей и состояния взаимодействия.
В конфигурации Chart.js цвета задаются в формате CSS. Поддерживаются:
#ff6384)rgb(255, 99, 132),
rgba(255, 99, 132, 0.5))hsl(340, 82%, 60%))red, blue)Наиболее важное свойство — возможность задавать массивы цветов, где каждый элемент соответствует отдельной точке данных.
const data = {
labels: ['Январь', 'Февраль', 'Март'],
datasets: [{
label: 'Продажи',
data: [10, 20, 15],
backgroundColor: ['#ff6384', '#36a2eb', '#ffcd56']
}]
};
Такой подход позволяет управлять визуальной идентификацией отдельных значений без необходимости писать дополнительные плагины.
Свойство backgroundColor является основным инструментом
управления заливкой.
В линейных графиках фон может применяться к области под линией:
const config = {
type: 'line',
data: {
labels: ['A', 'B', 'C'],
datasets: [{
label: 'Температура',
data: [12, 19, 3],
fill: true,
backgroundColor: 'rgba(54, 162, 235, 0.2)',
borderColor: 'rgba(54, 162, 235, 1)'
}]
}
};
Параметр fill: true активирует заливку под линией, а
backgroundColor задаёт её визуальную плотность.
Для bar-chart фон определяет цвет каждого столбца:
datasets: [{
label: 'Доход',
data: [30, 50, 40],
backgroundColor: '#4bc0c0'
}]
Если передан массив, каждый столбец получает индивидуальный цвет.
В pie и doughnut диаграммах фон сегментов является ключевым визуальным элементом:
datasets: [{
data: [30, 20, 50],
backgroundColor: ['#ff6384', '#36a2eb', '#ffcd56']
}]
Здесь цвет напрямую определяет восприятие долей.
Свойство borderColor отвечает за обводку элементов. Оно
используется для:
datasets: [{
data: [10, 20, 30],
backgroundColor: '#36a2eb',
borderColor: '#1e88e5',
borderWidth: 2
}]
borderWidth управляет толщиной границы и часто
используется для повышения контраста.
Комбинация backgroundColor и borderColor
позволяет создавать визуальную глубину:
В плотных визуализациях часто используется контрастный тёмный border при светлом фоне.
Одной из ключевых возможностей является динамическое вычисление цвета через функцию.
backgroundColor: (context) => {
const value = context.raw;
return value > 50 ? 'rgba(75, 192, 192, 0.7)' : 'rgba(255, 99, 132, 0.7)';
}
Контекст содержит:
context.dataIndexcontext.datasetcontext.rawcontext.chartЭто позволяет строить адаптивную визуализацию, где цвет зависит от значения данных.
Chart.js поддерживает отдельные свойства для hover-состояний:
hoverBackgroundColorhoverBorderColorhoverBorderWidthdatasets: [{
data: [10, 20, 30],
backgroundColor: '#36a2eb',
hoverBackgroundColor: '#1e88e5',
hoverBorderColor: '#0d47a1',
hoverBorderWidth: 3
}]
Эти параметры усиливают обратную связь при взаимодействии с графиком.
Использование RGBA позволяет управлять прозрачностью слоёв:
backgroundColor: 'rgba(255, 99, 132, 0.3)'
Прозрачность особенно важна в многослойных графиках, где пересекаются несколько наборов данных.
Типичные сценарии применения:
Chart.js поддерживает Canvas-градиенты через контекст отрисовки:
const ctx = document.getElementById('chart').getContext('2d');
const gradient = ctx.createLinearGradient(0, 0, 0, 400);
gradient.addColorStop(0, 'rgba(54, 162, 235, 0.6)');
gradient.addColorStop(1, 'rgba(54, 162, 235, 0)');
const config = {
type: 'line',
data: {
datasets: [{
data: [10, 20, 15, 30],
backgroundColor: gradient,
fill: true,
borderColor: 'rgba(54, 162, 235, 1)'
}]
}
};
Градиент часто применяется для:
Для линейных и scatter-графиков используются дополнительные свойства:
pointBackgroundColorpointBorderColorpointRadiusdatasets: [{
data: [5, 10, 15],
pointBackgroundColor: '#ff6384',
pointBorderColor: '#fff',
pointRadius: 5
}]
Точки являются самостоятельными визуальными элементами, поэтому их цветовая логика может отличаться от линии.
В конфигурации options можно задать значения по
умолчанию:
options: {
elements: {
line: {
borderColor: '#36a2eb'
},
point: {
backgroundColor: '#ff6384'
}
}
}
Это позволяет унифицировать стиль всех графиков в приложении без дублирования параметров.
Система наследования в Chart.js работает по следующей логике:
Это важно при создании сложных дашбордов, где несколько уровней конфигурации пересекаются.
При использовании массивов цветов действует правило соответствия индексов:
backgroundColor: ['red', 'green', 'blue']
Каждый цвет привязан к data[i]. Если элементов больше,
чем цветов, происходит циклическое повторение или использование
fallback-значений.
Цвета в Chart.js используются не только для декорации, но и для структурирования данных:
Комбинация этих подходов позволяет строить сложные визуализации с высокой читаемостью без увеличения количества графических элементов.