В библиотеке Chart.js пунктирные и штриховые линии задаются через
свойство borderDash, которое определяет
шаблон штриховки линии. Это свойство применяется как к линиям графиков
(datasets), так и к элементам сетки (grid), позволяя гибко управлять
визуальным стилем диаграмм.
Параметр borderDash представляет собой массив чисел:
Простейшая форма:
borderDash: [5, 5]
Это означает: 5 пикселей линия, 5 пикселей пропуск, повторение цикла.
Для линейных графиков borderDash задаётся внутри объекта
dataset:
const config = {
type: 'line',
data: {
labels: ['Янв', 'Фев', 'Мар', 'Апр'],
datasets: [{
label: 'Продажи',
data: [10, 20, 15, 30],
borderColor: 'blue',
borderWidth: 2,
borderDash: [8, 4]
}]
}
};
В результате линия графика становится штриховой с равномерным чередованием 8px линии и 4px пробела.
borderDash не ограничивается простыми парами значений.
Можно задавать сложные паттерны:
borderDash: [10, 5, 2, 5]
Такой шаблон интерпретируется как:
Подобные комбинации позволяют создавать визуально различимые стили линий на одной диаграмме.
Свойство borderDashOffset управляет
сдвигом шаблона штриховки вдоль линии:
borderDashOffset: 4
Используется для:
При анимации значение может изменяться, создавая иллюзию «бегущего пунктира».
Штриховка применяется не только к графикам, но и к сетке через
grid:
options: {
scales: {
x: {
grid: {
borderDash: [3, 3]
}
},
y: {
grid: {
borderDash: [6, 2]
}
}
}
}
Здесь каждая ось получает собственный стиль сетки, что позволяет разделять визуальные уровни данных.
Помимо основной сетки, borderDash применяется к:
Пример:
grid: {
borderDash: [1, 4],
borderColor: '#ccc'
}
Chart.js позволяет задавать borderDash как функцию,
зависящую от контекста:
borderDash: (context) => {
return context.datasetIndex === 0 ? [5, 5] : [2, 2];
}
Это используется для:
Комбинация нескольких dataset с разными шаблонами:
datasets: [
{
label: 'План',
data: [30, 40, 35],
borderDash: [10, 4],
borderColor: 'green'
},
{
label: 'Факт',
data: [25, 38, 33],
borderDash: [2, 2],
borderColor: 'red'
}
]
Такое разделение усиливает визуальную читаемость между прогнозом и реальными данными.
Комбинирование borderDashOffset с анимацией
Chart.js:
options: {
animation: {
duration: 0
},
elements: {
line: {
borderDashOffset: 0
}
}
}
Далее значение offset можно изменять вручную через
requestAnimationFrame, создавая эффект «движущейся
линии».
Для более выразительных графиков используются комбинированные подходы:
borderDash для сравнения серийborderWidthborderDashOffsetborderColorПример визуальной стратегии:
borderDash работает в различных типах визуализаций:
В bar charts применяется косвенно через границы
(border), а не саму заливку.
borderDash часто используется вместе с:
borderCapStyle (round, butt, square)borderJoinStyle (miter, bevel, round)tension (кривизна линий)stepped (ступенчатая интерполяция)Комбинация этих параметров формирует итоговый визуальный язык графика.
Неправильная конфигурация часто приводит к неожиданным результатам:
borderWidth → штриховка плохо читаетсяКорректная настройка требует согласованности между масштабом данных и длиной штрихов.