Skip to content

Быстрый старт

grafit — TypeScript-библиотека графиков на Canvas без зависимостей: декларативная конфигурация одним объектом, 27 типов серий, интерактивность и темы из коробки.

Шаг 1. Контейнер

Чарт рендерится в любой блочный элемент; размеры берёт у него:

html
<div id="chart" style="width: 100%; height: 360px"></div>

Шаг 2. Первый чарт

ts
import { Charts } from 'grafit-charts';

const chart = Charts.create({
  container: document.getElementById('chart')!,
  data: [
    { month: 'Янв', revenue: 42 },
    { month: 'Фев', revenue: 58 },
    { month: 'Мар', revenue: 51 },
  ],
  series: [{ type: 'bar', xField: 'month', yField: 'revenue', name: 'Выручка' }],
  title: { text: 'Выручка по месяцам' },
});

data — плоские объекты; серия указывает, какие поля рисовать (xField/yField) и под каким именем показывать (name). Оси, легенда, тултипы и анимация входа включаются сами.

Так выглядит результат с парой серий:

ts
import { getData } from './data';
import type { ChartOptions } from 'grafit-charts';

export function createOptions(): ChartOptions {
  return {
    data: getData(),
    title: { text: 'Average temperature' },
    subtitle: { text: '°C by month' },
    series: [{ type: 'line', xField: 'month', yField: 'temperature', name: 'Temperature' }],
  };
}
ts
export function getData() {
  return [
    { month: 'Jan', temperature: -8 },
    { month: 'Feb', temperature: -6 },
    { month: 'Mar', temperature: 1 },
    { month: 'Apr', temperature: 9 },
    { month: 'May', temperature: 16 },
    { month: 'Jun', temperature: 21 },
    { month: 'Jul', temperature: 24 },
    { month: 'Aug', temperature: 22 },
    { month: 'Sep', temperature: 15 },
    { month: 'Oct', temperature: 8 },
    { month: 'Nov', temperature: 1 },
    { month: 'Dec', temperature: -5 },
  ];
}

Шаг 3. Обновление

Options иммутабельны — изменения передаются методами и применяются с анимацией:

ts
await chart.updateDelta({ theme: 'dark' }); // точечное изменение
await chart.update({ ...options, data: freshData }); // полная замена
chart.destroy(); // по окончании работы

Шаг 4. Куда дальше

Хочу…Страница
понять устройство optionsКонфигурация
уменьшить бандл или подключить через CDNПодключение и размер бандла
выбрать тип чартараздел «Серии» — от Line до Gauges
общие опции всех серийОбщие опции серий
настроить оси и форматыОси
тултип, легенда, аннотациираздел «Компоненты чарта» — от Легенды
zoom, выделение, событияраздел «Взаимодействие» — от Zoom
тёмная тема и свои цветаТемы
компактные графики в таблицуSparklines
свечной график с навигаторомпресет на странице Candlestick

Статус

Библиотека в активной разработке. API может меняться без обратной совместимости.