Skip to content

Конфигурация

Чарт полностью описывается одним объектом ChartOptions — он сериализуем, типобезопасен и одинаково работает в Charts.create и chart.update.

Минимальный рабочий пример:

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

const chart = Charts.create({
  container: document.getElementById('app')!, // куда рендерить
  data: [
    { month: 'Янв', plan: 120, fact: 134 },
    { month: 'Фев', plan: 125, fact: 118 },
  ],
  series: [
    { type: 'bar', xField: 'month', yField: 'plan', name: 'План' },
    { type: 'line', xField: 'month', yField: 'fact', name: 'Факт' },
  ],
});

Этого достаточно: оси, легенда, тултипы, подсветка и анимация входа включены по умолчанию.

Данные и серии

data — массив плоских объектов. Серии не содержат данных — они ссылаются на поля через xField/yField (у специализированных серий свои поля: angleField, sizeField, openField…).

seriesdiscriminated union по полю type: после type: 'bar' TypeScript подсказывает только опции бара и не даст передать чужие. Все 27 типов серий перечислены в разделе «Серии», их общие опции — на странице Общие опции серий.

Оси

Если axes не заданы, виджет создаёт их сам: category снизу + number слева (для горизонтальных баров — наоборот; scatter/histogram просят числовую X-ось; heatmap — категориальные без линий и сетки). Явный блок axes нужен, когда требуется второй тип оси, формат подписей, crossLines и т.п. — см. Оси.

ts
axes: [
  { type: 'time', position: 'bottom', label: { format: '%d %b' } },
  { type: 'number', position: 'left', nice: true },
],

Размер

Без width/height чарт следует за контейнером через ResizeObserver — задайте контейнеру размеры CSS-ом. Числа width/height фиксируют размер.

Заголовки, поля, фон

ОпцияТипПо умолчаниюОписание
title.textstringзаголовок чарта
title.textAlign'left' | 'center' | 'right''center'горизонтальное выравнивание
title.fontSizePixels17размер шрифта заголовка
title.colorColorValueforegroundцвет
title.position'top' | 'bottom''top'над или под областью построения
title.spacingPixels8отступ до области построения
subtitle.textstringподзаголовок (приглушённый, те же опции)
padding.topPixels12внешние поля чарта
padding.rightPixels20
padding.bottomPixels12
padding.leftPixels20
background.fillColorValueфон темызаливка подложки
background.visiblebooleantrueрисовать ли фон

Все опции заголовков с живыми примерами: Заголовок и подзаголовок.

Оверлеи и загрузка

ОпцияТипПо умолчаниюОписание
loadingbooleanfalseпоказать оверлей «Загрузка данных…»
overlays.loading.textstringиз localeтекст оверлея загрузки
overlays.noData.textstringиз localeтекст при пустых data

Конвенции

  • *Field / *Name — пары «ключ данных / отображаемое имя»: *Field указывает на поле в data, *Name показывается в легенде и тултипе.
  • { enabled } — каждый опциональный блок (legend, tooltip, axis.label, series.marker, …) включается/выключается этим флагом; блок без enabled: false включён.
  • format / formatter — формат значений строкой (',.2f', '.0%', '%d %b') или функцией; функции — изолированные листья, остальной объект сериализуем в JSON.
  • Мутации переданного объекта не отслеживаются — обновляйте чарт методами.

Обновление и методы инстанса

ts
await chart.updateDelta({ theme: 'dark' }); // точечное изменение
await chart.update(buildOptions(newData)); // полная замена
МетодОписание
update(options)полная замена options; Promise резолвится после рендера
updateDelta(patch)глубокий merge: объекты сливаются, массивы заменяются целиком
getOptions()текущие options
getState() / setState(state)зум и скрытые серии — см. Состояние
waitForUpdate()дождаться запланированного рендера
getImageDataURL(opts?)PNG/JPEG как data-URL
download(opts?)скачать изображение ({ fileName?, fileFormat? })
destroy()освободить DOM и подписки

Все корневые блоки

БлокЧто делаетПодробнее
container, data, series, axesоснова чартавыше на этой странице
width, heightфиксированный размерРазмер
title, subtitleзаголовкиЗаголовки
padding, backgroundполя и фонЗаголовки
loading, overlaysоверлеиОверлеи
themeимя темы или объектТемы
legendлегендаЛегенда
gradientLegendцветовая шкала colorField-серийHeatmap
tooltipтултипы (режимы, позиция, захват)Тултип
highlightподсветка и приглушение при ховереТултип
crosshairперекрестиеCrosshair
zoom, navigatorзум и полоса диапазонаZoom
syncсинхронизация нескольких чартовСостояние
selectionвыбор данныхВыделение данных
listenersсобытия чартаСобытия
annotationsлинии/диапазоны/текст на чартеАннотации
animationвход и обновленияСостояние
initialStateстартовый зум/скрытые серииСостояние
contextMenuменю по правому кликуСостояние
localeстроки UIДоступность