Когда нужен график
В таблице 12 чисел за 12 месяцев. Глаз их не сравнивает, а на графике тренд виден сразу. В браузере график можно нарисовать тремя способами: на <canvas>, в SVG или готовой библиотекой. Вручную можно, но оси, подписи, подсказки, анимация и ресайз - это много кода.
В этом уроке две библиотеки. Chart.js даёт готовые типы графиков и работает через конфигурацию. D3 готового графика не даёт: он даёт детали - шкалы, оси, data join, - а график вы собираете сами.
Chart.js: первый график
График рисуется на элементе <canvas>. Конфигурация состоит из трёх частей: type (тип графика), data (labels и datasets) и options. Установка: npm install chart.js.
<div style="position: relative; height: 320px">
<canvas id="sales"></canvas>
</div>import { Chart } from 'chart.js/auto';
const chart = new Chart(document.getElementById('sales'), {
type: 'bar',
data: {
labels: ['Jan', 'Feb', 'Mar', 'Apr'],
datasets: [{ label: 'Orders', data: [12, 19, 8, 15] }],
},
options: { responsive: true, maintainAspectRatio: false },
});chart.js/auto регистрирует все типы и шкалы, поэтому для старта это удобнее всего. В продакшене, чтобы уменьшить бандл, подключайте только нужное: Chart.register(BarController, BarElement, CategoryScale, LinearScale, Tooltip, Legend).
💡 Кладите canvas в контейнер с
position: relativeи высотой. Приresponsive: trueChart.jsберёт размер у родительского контейнера.
⚠️ Не задавайте размер canvas напрямую через CSS: при ресайзе график может стать размытым или неверного размера.
Datasets и options
Каждый dataset - одна серия: label, data и поля внешнего вида (borderColor, backgroundColor, tension). На одном графике может быть несколько серий, а у отдельной серии может быть свой type (например, линия поверх столбцов).