Skip to content

Заголовок и подзаголовок

title и subtitle рисуются вокруг области построения. У обоих одинаковые опции: текст, шрифт, цвет, выравнивание, вертикальное размещение и отступ до области построения.

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

// Custom caption fonts, colors and spacing.
export function createOptions(): ChartOptions {
  return {
    data: getData(),
    title: { text: 'Annual revenue', fontSize: 22, fontWeight: 800, color: '#0f766e', spacing: 4 },
    subtitle: { text: 'by quarter, $K', fontSize: 14, color: '#94a3b8', spacing: 16 },
    series: [{ type: 'bar', xField: 'quarter', yField: 'revenue', name: 'Revenue' }],
    legend: { enabled: false },
  };
}
ts
export function getData() {
  return [
    { quarter: 'Q1', revenue: 210 },
    { quarter: 'Q2', revenue: 265 },
    { quarter: 'Q3', revenue: 248 },
    { quarter: 'Q4', revenue: 312 },
  ];
}

Опции

ОпцияТипПо умолчаниюОписание
textstringтекст заголовка
enabledbooleantrueпоказать заголовок
textAlign'left' | 'center' | 'right''center'выравнивание по ширине чарта (с учётом padding)
position'top' | 'bottom''top'над или под областью построения
fontSizePixels17 / 13размер шрифта title / subtitle
fontWeightFontWeight'bold' / 'normal'насыщенность
fontFamilystringшрифт темыгарнитура
colorColorValueforeground / mutedцвет текста
spacingPixels8отступ между заголовком и областью построения

Выравнивание и размещение

textAlign позиционирует заголовок по ширине чарта с привязкой к padding; position переносит его под область построения. Title и subtitle настраиваются независимо — их можно свободно сочетать, например заголовок слева сверху и подпись-сноска справа снизу:

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

// Left-aligned title on top, a footnote-style subtitle at the bottom right.
export function createOptions(): ChartOptions {
  return {
    data: getData(),
    title: { text: 'Weekly sessions', textAlign: 'left', spacing: 12 },
    subtitle: { text: 'updated hourly', textAlign: 'right', position: 'bottom' },
    series: [{ type: 'area', xField: 'day', yField: 'sessions', name: 'Sessions' }],
    legend: { enabled: false },
  };
}
ts
export function getData() {
  return [
    { day: 'Mon', sessions: 320 },
    { day: 'Tue', sessions: 356 },
    { day: 'Wed', sessions: 402 },
    { day: 'Thu', sessions: 384 },
    { day: 'Fri', sessions: 441 },
    { day: 'Sat', sessions: 268 },
    { day: 'Sun', sessions: 214 },
  ];
}

Когда оба заголовка в одной зоне, title всегда выше subtitle; spacing обращён к области построения.

Заголовок с выравниванием влево хорошо сочетается с плавающей легендой в противоположном углу на том же уровне:

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

// A floating legend anchored to the top-right corner of the whole chart —
// on the same level as the left-aligned title.
export function createOptions(): ChartOptions {
  return {
    data: getData(),
    title: { text: 'Site traffic', textAlign: 'left', spacing: 4 },
    subtitle: { text: 'visits per month, thousands', textAlign: 'left', spacing: 12 },
    series: [
      { type: 'line', xField: 'month', yField: 'organic', name: 'Organic' },
      { type: 'line', xField: 'month', yField: 'ads', name: 'Ads' },
    ],
    legend: {
      position: 'top-right',
      floating: true,
      background: { fill: 'rgba(255, 255, 255, 0.85)', stroke: '#cbd5e1', cornerRadius: 6, padding: 10 },
    },
  };
}
ts
export function getData() {
  return [
    { month: 'Jan', organic: 42, ads: 18 },
    { month: 'Feb', organic: 48, ads: 22 },
    { month: 'Mar', organic: 55, ads: 21 },
    { month: 'Apr', organic: 61, ads: 27 },
    { month: 'May', organic: 58, ads: 33 },
    { month: 'Jun', organic: 67, ads: 30 },
    { month: 'Jul', organic: 74, ads: 36 },
    { month: 'Aug', organic: 71, ads: 41 },
  ];
}