Сетка в Chart.js является частью системы scales и отвечает за визуальную структуру графика, формируя направляющие линии для чтения значений по осям X и Y. Она тесно связана с тиками (ticks), но представляет собой отдельный слой отрисовки, который может включать линии делений, границы области построения и вспомогательные элементы.
Конфигурация сетки задаётся внутри объекта scales для
каждой оси отдельно. Основные параметры находятся в
grid:
const config = {
type: 'line',
data: {
labels: ['A', 'B', 'C'],
datasets: [{
label: 'Пример',
data: [10, 20, 15]
}]
},
options: {
scales: {
x: {
grid: {
display: true
}
},
y: {
grid: {
display: true
}
}
}
}
};
Каждая ось имеет собственную независимую сетку, что позволяет различать поведение вертикальных и горизонтальных линий.
Вертикальная сетка связана с осью X, горизонтальная — с осью Y. Их поведение часто различается:
Отключение одной из них выполняется точечно:
scales: {
x: {
grid: {
display: false
}
}
}
В некоторых типах графиков (например, scatter или time series) обе сетки играют критическую роль для интерпретации координат.
Основной параметр визуального оформления — color:
scales: {
y: {
grid: {
color: 'rgba(0, 0, 0, 0.1)'
}
}
}
Дополнительно поддерживаются различные способы стилизации:
grid: {
color: '#e0e0e0',
lineWidth: 1,
borderDash: [5, 5]
}
lineWidth задаёт толщину линииborderDash создаёт пунктирную сеткуborderColor управляет цветом границы области шкалыКомбинация этих параметров позволяет формировать как строгие аналитические графики, так и декоративные визуализации.
Параметр display управляет полной видимостью сетки:
grid: {
display: false
}
Дополнительно доступны тонкие настройки поведения:
drawOnChartArea — включает или отключает линии внутри
области графикаdrawTicks — управляет отрисовкой линий, совпадающих с
делениями осиtickLength — влияет на длину выступающих элементовПример разделения логики:
scales: {
y: {
grid: {
drawTicks: false,
drawOnChartArea: true
}
}
}
Параметр offset влияет на выравнивание сетки
относительно категорий:
scales: {
x: {
grid: {
offset: true
}
}
}
При offset: true линии сетки центрируются между
значениями, а не строго на них. Это особенно важно для категориальных
осей, где точки данных располагаются по центру сегментов.
Сетка тесно связана с параметрами border:
grid: {
borderColor: '#000',
borderWidth: 2
}
borderColor задаёт цвет внешней рамки шкалыborderWidth регулирует толщину границыВ некоторых конфигурациях граница визуально заменяет одну из линий сетки, формируя более строгую структуру графика.
Параметр z определяет порядок отрисовки сетки
относительно других элементов:
grid: {
z: 1
}
Это используется при наложении сетки на элементы аннотаций или пользовательские графические слои.
Можно скрывать конкретные линии сетки через callback-функции:
grid: {
color: (context) => {
if (context.tick.value === 0) {
return '#000';
}
return '#e0e0e0';
}
}
Контекст содержит информацию о текущем тике и позволяет динамически менять стиль каждой линии.
Для управления плотностью используется tick.stepSize
совместно с grid:
scales: {
y: {
ticks: {
stepSize: 10
},
grid: {
color: '#ddd'
}
}
}
Таким образом уменьшается количество линий без изменения исходных данных.
Сетку можно настраивать глобально через defaults:
import { Chart } from 'chart.js';
Chart.defaults.scale.grid = {
color: '#f0f0f0',
lineWidth: 1
};
Это влияет на все графики, если локальная конфигурация не переопределяет значения.
Разные типы диаграмм используют сетку по-разному:
Поведение сетки автоматически адаптируется к типу визуализации, но может быть переопределено вручную.
Параметр прозрачности через RGBA позволяет снижать визуальный шум:
grid: {
color: 'rgba(200, 200, 200, 0.3)'
}
Чем ниже насыщенность сетки, тем выше читаемость данных при большом количестве элементов.
Сетка не влияет напрямую на tooltip, но косвенно улучшает точность восприятия координат. При наведении курсора вычисление позиции часто ориентируется на пересечения сеточных линий и тиков, особенно в линейных графиках.
При изменении размера контейнера сетка пересчитывается:
В динамических интерфейсах это приводит к изменению визуальной структуры без вмешательства в данные.
Комбинированная конфигурация позволяет формировать различные стили:
scales: {
x: {
grid: {
display: false
}
},
y: {
grid: {
color: '#eee',
borderDash: [3, 3],
drawTicks: false
}
}
}
Такой подход часто используется для минималистичных интерфейсов, где требуется акцент на данных, а не на вспомогательной разметке.