Skip to content

Gauges

Гейджи — серии без данных: значение задаётся прямо в options.

Radial gauge

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

export function createOptions(): ChartOptions {
  return {
    data: getData(),
    title: { text: 'Cluster load' },
    series: [
      {
        type: 'radial-gauge',
        value: 67,
        scale: { min: 0, max: 100 },
        segments: [
          { to: 60, color: '#21a06c' },
          { to: 85, color: '#f4a236' },
          { to: 100, color: '#e5484d' },
        ],
        label: { formatter: (value) => `${value}%` },
      },
    ],
  };
}
ts
/** The gauge does not use data — the value is set in options. */
export function getData() {
  return [];
}

Linear gauge

Линейная шкала с целевой отметкой (bullet):

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

export function createOptions(): ChartOptions {
  return {
    data: getData(),
    title: { text: 'Plan completion' },
    series: [
      {
        type: 'linear-gauge',
        value: 1240,
        target: 1500,
        scale: { min: 0, max: 2000 },
      },
    ],
    height: 180,
  };
}
ts
/** The gauge does not use data — the value is set in options. */
export function getData() {
  return [];
}

Цель на линейном гейдже

target — отметка цели, thickness — высота полосы:

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

export function createOptions(): ChartOptions {
  return {
    data: getData(),
    title: { text: 'Sales vs target' },
    series: [
      {
        type: 'linear-gauge',
        value: 7.4,
        target: 9,
        scale: { min: 0, max: 12 },
        thickness: 22,
        label: { formatter: (value) => `${value.toFixed(1)} of 12M` },
      },
    ],
  };
}
ts
export function getData() {
  return [];
}

Вертикальный гейдж с зонами

orientation: 'vertical' ставит шкалу вертикально. С segments дорожка показывает качественные зоны, а значение идёт поверх них полосой поменьше — как читается bullet chart; label.formatter и ticks.formatter задают формат чисел:

ts
{
  type: 'linear-gauge',
  orientation: 'vertical',
  value: 15_400_000,
  target: 18_000_000,
  scale: { min: 0, max: 24_000_000 },
  segments: [
    { to: 8_000_000, color: '#e5484d' },
    { to: 16_000_000, color: '#f4a236' },
    { to: 24_000_000, color: '#21a06c' },
  ],
  label: { formatter: (value) => `${(value / 1e6).toFixed(1)} млн м³` },
  ticks: { formatter: (value) => `${value / 1e6} млн` },
}
ts
import { getData } from './data';
import type { ChartOptions } from 'grafit-charts';

export function createOptions(): ChartOptions {
  return {
    data: getData(),
    title: { text: 'Reservoir level' },
    series: [
      {
        type: 'linear-gauge',
        orientation: 'vertical',
        value: 15_400_000,
        target: 18_000_000,
        scale: { min: 0, max: 24_000_000 },
        segments: [
          { to: 8_000_000, color: '#e5484d' },
          { to: 16_000_000, color: '#f4a236' },
          { to: 24_000_000, color: '#21a06c' },
        ],
        label: { formatter: (value) => `${(value / 1e6).toFixed(1)} mln m³` },
        ticks: { formatter: (value) => `${value / 1e6} mln` },
      },
    ],
  };
}
ts
/** The gauge does not use data — the value is set in options. */
export function getData() {
  return [];
}

Пресет

ts
Charts.createGauge({
  container,
  type: 'radial-gauge', // | 'linear-gauge'
  value: 67,
  scale: { min: 0, max: 100 },
  title: 'Загрузка кластера',
});
ОпцияТипОписание
valuenumberтекущее значение
needleSwitchableстрелка (radial)
targetnumberцелевая отметка

Полный список опций

segments и target есть у обоих гейджей; orientation — у линейного, углы и стрелка — у круглого. Гейдж сам подбирает размер текста и толщину под доставшееся ему место — опции ниже нужны только там, где значения по умолчанию не подходят плитке.

ОпцияТипПо умолчаниюОписание
startAngleDegrees-110дуга radial-gauge
endAngleDegrees110дуга radial-gauge
orientation'horizontal' | 'vertical''horizontal'направление шкалы linear-gauge
fillsColorValue[]палитрацвета (если не заданы segments)
thicknessPixelsдоля от места, 1436толщина полосы/дуги
scale.minnumber0минимум шкалы
scale.maxnumber100максимум шкалы
targetnumberотметка цели поперёк полосы/дуги
targetColorColorValueforeground темыцвет отметки цели
segments[]{ to, color }[]цветовые зоны шкалы
label.enabledbooleantrueзначение в центре/рядом
label.formatter(value) => stringзначениеформат значения
label.fontSizePixelsпо размеру гейджаразмер значения
label.fontWeightFontWeight'bold'насыщенность значения
label.fontFamilystringшрифт темыгарнитура значения
label.colorColorValueforeground темыцвет значения
ticks.enabledbooleantrueподписи концов шкалы
ticks.formatter(value) => stringзначение границыформат подписей концов
ticks.fontSizePixelsразмер подписей темыразмер подписей концов
ticks.fontWeightFontWeight'normal'насыщенность подписей концов
ticks.fontFamilystringшрифт темыгарнитура подписей концов
ticks.colorColorValuemuted темыцвет подписей концов

Опции

Общие опции всех серий (name, showInLegend, tooltip.renderer, …) — в разделе Общие опции серий.

tooltip.renderer получает NodeTooltipRendererParams{ label, value, share, color }, где value — то число, которое показывает индикатор.