Графики

Красивые графики. Построен с использованием Recharts. Скопируйте и вставьте в свои приложения.

Коллекция компонентов диаграммы, которые можно копировать и вставлять в свои приложения. Диаграммы созданы так, чтобы выглядеть великолепно сразу после установки. Они хорошо работают с другими компонентами и полностью настраиваются в соответствии с вашим проектом.

Обзор доступных возможностей можно найти на странице Charts.

Компонент

Рефлекс наматывает Recharts под капот. Это означает, что вы создаете свои собственные диаграммы, используя компоненты Recharts, и добавляете жетоны своей темы и пользовательские компоненты, такие как chart_tooltip, только тогда и там, где вам это нужно.

import reflex as rx

rx.recharts.area_chart(
    rx.recharts.cartesian_grid(),
    rx.recharts.x_axis(),
    rx.recharts.y_axis(),
    rx.recharts.area(),
    rx.recharts.area(),
    rx.recharts.tooltip(),
)

Мы не накручиваем речарты. Это означает, что вы не заперты в абстракции. Когда будет выпущена новая версия Recharts, вы сможете воспользоваться официальным путем обновления, чтобы обновить свои графики.

Установка

Buridan/ui предоставляет специальный chart_tooltip, который можно использовать для сопоставления с общими сгенерированными токенами темы.

Ваш первый график

Давайте построим вашу первую диаграмму. Мы построим гистограмму, добавим сетку, ось, подсказку и легенду.

Определение ваших данных

Следующие данные представляют количество пользователей настольных компьютеров и мобильных устройств за каждый месяц.

Примечание. Во всех наших примерах используются статические данные в определенной структуре данных. Вы не ограничены ни статическими данными, ни структурой. Для динамических данных вместо этого используйте rx.State.

data = [
    {"month": "Jan", "desktop": 186, "mobile": 80},
    {"month": "Feb", "desktop": 305, "mobile": 200},
    {"month": "Mar", "desktop": 237, "mobile": 120},
    {"month": "Apr", "desktop": 73, "mobile": 190},
    {"month": "May", "desktop": 209, "mobile": 130},
    {"month": "Jun", "desktop": 214, "mobile": 140},
]

Создайте свою диаграмму

Теперь вы можете построить свою диаграмму, используя компоненты Recharts.

Error: Reference Target 'пример_диаграммы' not found

Добавить сетку

Добавим сетку на диаграмму.

rx.recharts.cartesian_grid(
    horizontal=True, vertical=False, class_name="opacity-30"
)
Error: Reference Target 'пример_диаграммы_с_сеткой' not found

Добавить ось

Чтобы добавить ось X на диаграмму, мы воспользуемся компонентом rx.recharts.x_axis().

rx.recharts.x_axis(
    data_key="month",
    axis_line=False,
    tick_size=10,
    tick_line=False,
    custom_attrs={"fontSize": "12px"},
    interval="preserveStartEnd",
)
Error: Reference Target 'пример_диаграммы_с_осью_x' not found

Добавить подсказку

До сих пор мы использовали только компоненты от Recharts. Они отлично выглядят «из коробки» благодаря некоторой настройке компонента диаграммы.

Чтобы добавить всплывающую подсказку, мы будем использовать пользовательские компоненты chart_tooltip и chart_tooltip_content из диаграммы.

Примечание: небольшой комментарий относительно пользовательской подсказки. Из-за способа составления Recharts и способа его упаковки в Reflex настраиваемая всплывающая подсказка на данный момент работает только для диаграмм с областями, гистограммами и линейными диаграммами.

Чтобы использовать пользовательскую подсказку, сначала импортируйте ее в верхнюю часть файла диаграммы.

from components.charts.chart_tooltip import (
    chart_tooltip,
    chart_tooltip_content,
)

Добавьте компонент в диаграмму и передайте реквизиты.

rx.recharts.bar_chart(
    ...,
    chart_tooltip(),
    data=data,
    width="100%",
    height=250,
    class_name=chart_tooltip_content([1, 2], "square"),
)
Error: Reference Target 'пример_диаграммы_с_пользовательской_подсказкой' not found

Наведите курсор, чтобы увидеть подсказки. Легко, правда? Два компонента, и у нас есть красивая подсказка.

Добавить легенду

Мы сделаем то же самое с легендой. Хотя для легенд не существует API, который мы создали для всплывающих подсказок, по-прежнему применяется та же логика.

Добавьте компонент на диаграмму.

rx.el.div(
    rx.foreach(
        ["Desktop", "Mobile"],
        lambda device, index: rx.el.div(
            rx.el.div(
                class_name=f"h-3 w-3 rounded-sm bg-chart-{index + 1}"
            ),
            rx.el.p(device, class_name="text-xs text-foreground"),
            class_name="flex flex-row items-center gap-x-2",
        ),
    ),
    class_name="flex items-center gap-4 justify-center",
)

Desktop

Mobile

Готово. Вы построили свою первую диаграмму!

Тематика

Диаграммы имеют встроенную поддержку тем. Вы можете использовать переменные CSS (рекомендуется) или значения цвета в любом цветовом формате, например шестнадцатеричном, hsl или oklch.

CSS-переменные

Определите цвета в CSS-файле.

:root {
  --chart-1: oklch(0.646 0.222 41.116);
  --chart-2: oklch(0.6 0.118 184.704);
}

.dark {
  --chart-1: oklch(0.488 0.243 264.376);
  --chart-2: oklch(0.696 0.17 162.48);
}

hex, hsl или oklch

Вы также можете определить цвета непосредственно в компоненте диаграммы. Используйте тот цветовой формат, который вы предпочитаете.

rx.recharts.bar(data_key="mobile", fill="var(--chart-2)")
rx.recharts.bar(data_key="mobile", fill="#2563eb")
rx.recharts.bar(data_key="mobile", fill="oklch(0.5 0.2 240)")

Вы также можете включить цвета в свою структуру данных и использовать rx.foreach для более краткой базы кода.

data = [
    {"month": "Jan", "desktop": 186, "mobile": 80, "fill": "#2563eb"},
    {"month": "Feb", "desktop": 305, "mobile": 200, "fill": "oklch(0.5 0.2 240)"},
]

Подсказка

Подсказка диаграммы содержит метку и тип образца. Вы можете использовать их комбинацию для настройки всплывающей подсказки.

Display = Literal["show", "hide"]
Swatch = Literal["square", "line", "border"]
Error: Reference Target '\_' not found

Вы можете включить/выключить любой из них с помощью реквизита display и настроить стиль индикатора с помощью реквизита swatch.

Реквизит

Используйте следующие реквизиты, чтобы настроить всплывающую подсказку.

chart_tooltip()

Опора Тип По умолчанию Описание
label "show" \| "hide" "show" Отрисовывать ли метку всплывающей подсказки над элементами.
is_animation_active bool False Анимировать ли всплывающую подсказку по внешнему виду.
separator str "" Строка, помещаемая между именем и значением элемента.
cursor bool False Показывать ли линию/выделение курсора при наведении курсора.
item_style dict {} Переопределения стилей объединены в каждую строку элемента подсказки.
label_style dict {} Переопределения стиля объединены с элементом метки.
content_style dict {} Переопределения стилей объединены в контейнер подсказок.

chart_tooltip_content()

Опора Тип По умолчанию Описание
chart_colors list[int] Количество рядов данных на диаграмме. Должно совпадать с количеством компонентов rx.recharts.bar / line / area.
swatch "square" \| "line" \| "border" "square" Стиль индикатора для каждого элемента. square = маленькая заполненная рамка, line = широкая таблетка, border = левая акцентная линия для каждой серии с использованием --chart-{i}.

chart_tooltip_content() возвращает строку классов Tailwind и должна быть передана в class_name компонента диаграммы, а не в chart_tooltip().