Skip to content

Столбчатая диаграмма

Назначение

Этот компонент позволяет создавать столбчатые диаграммы (также с группировкой столбцов стеке). По умолчанию в нем уже включены сетка, оси, подписи и всплывающая подсказка. Исходные данные передаются в виде массива в поле data, а отображаемые серии столбцов - в виде объекта в поле series. По умолчанию поле name внутри объекта данных используется для создания соответствующей метки. Размер и цвет столбца определяются в полях filed и color соответственно для каждого объекта в series. Чтобы расположить столбцы в стеке, вам необходимо задать одинаковое значение поля stack для нескольких столбцов. Вы можете найти все доступные настройки в типе TBarConfig.

Использование

jsx
import { useState, useEffect } from 'react';
import { useBar } from 'effcharts/bar';

// определите пользовательский веб-компонент перед использованием
// обратите внимание, что для SSR функцию необходимо вызывать до того, как браузер проанализирует текст документа
// поэтому вам может потребоваться добавить отдельный скрипт в заголовок документа
const { observe, getConfig } = useBar();

export const App = () => {
    const ref = useRef();
    const [config, setConfig] = useState(getConfig({
        data: [
            {
                name: 'Page A',
                uv: 4000,
                pv: 2400,
                amt: -2400,
            },
            {
                name: 'Page B',
                uv: 3000,
                pv: 1398,
                amt: -2210,
            },
            {
                name: 'Page C',
                uv: 2000,
                pv: 9800,
                amt: -2290,
            }
        ],
        series: {
            def: {
                title: 'Default',
                field: 'uv',
                color: 'blue'
            },
            sec: {
                title: 'Secondary',
                field: 'pv',
                color: 'green'
            }
        }
    }));
    useEffect(() => {
        // вы можете наблюдать за событиями веб-компонента
        const unobserve = observe((e) => {
            // обработчик события
        }, ref.current);
        // и вы можете отписаться от событий
        return () => unobserve();
    }, []);
    // просто используйте веб-компонент в jsx
    return <div ref={ref}>
        <effcharts-bar config={config}>
        </effcharts-bar>
    </div>;
}

Типизация

Вы можете объявить веб-компонент, используя интерфейс IBarChartAttrs. Вы также можете проверить конфигурацию диаграммы, используя тип TBarConfig:

tsx
import { HTMLAttributes } from 'react';
import { IBarChartAttrs, TBarConfig } from 'effcharts/bar';

type CustomElement<T> = Partial<T & HTMLAttributes<T> & { children: any }>;

// declare effcharts components
declare module 'react' {
  namespace JSX {
    interface IntrinsicElements {
        'effcharts-bar': CustomElement<IBarChartAttrs>;
    }
  }
}

// prepare config
const config = {
    data: [
        {
            name: 'Page A',
            uv: 4000,
            pv: 2400,
            amt: -2400,
        },
        {
            name: 'Page B',
            uv: 3000,
            pv: 1398,
            amt: -2210,
        },
        {
            name: 'Page C',
            uv: 2000,
            pv: 9800,
            amt: -2290,
        }
    ],
    series: {
        def: {
            title: 'Default',
            field: 'uv',
            color: 'blue'
        },
        sec: {
            title: 'Secondary',
            field: 'pv',
            color: 'green'
        }
    }
} satisfies TBarConfig;

Опубликовано под лицензией Apache License 2.0