Pie Chart

Pie Charts are ideal for showing changes over time or the magnitude of multiple datasets stacked together. They combine the smoothness of line charts with the visual impact of filled areas.

Usage

Copy the following helper functions into your Reflex application.

import reflex as rx

tooltip = {
    "is_animation_active": False,
    "separator": "",
    "cursor": False,
    "item_style": {
        "color": "currentColor",
        "display": "flex",
        "paddingBottom": "0px",
        "justifyContent": "space-between",
        "textTransform": "capitalize",
    },
    "label_style": {
        "color": rx.color("slate", 10),
        "fontWeight": "500",
    },
    "content_style": {
        "background": rx.color_mode_cond("oklch(0.97 0.00 0)", "oklch(0.14 0.00 286)"),
        "borderColor": rx.color("slate", 5),
        "borderRadius": "5px",
        "fontFamily": "IBM Plex Mono,ui-monospace,monospace",
        "fontSize": "0.875rem",
        "lineHeight": "1.25rem",
        "fontWeight": "500",
        "letterSpacing": "-0.01rem",
        "minWidth": "8rem",
        "width": "175px",
        "padding": "0.375rem 0.625rem ",
        "position": "relative",
    },
}


def info(title: str, size: str, subtitle: str, align: str):
    return rx.vstack(
        rx.heading(title, size=size, weight="bold"),
        rx.text(subtitle, size="1", color=rx.color("slate", 11), weight="medium"),
        spacing="1",
        align=align,
    )


def get_tooltip():
    """Standard tooltip for all charts."""
    return rx.recharts.graphing_tooltip(**tooltip)


def get_cartesian_grid():
    """Standard cartesian grid for charts."""
    return rx.recharts.cartesian_grid(
        horizontal=True, vertical=False, class_name="opacity-25"
    )


def get_x_axis(data_key: str):
    """Standard X axis configuration."""
    return rx.recharts.x_axis(
        data_key=data_key,
        axis_line=False,
        tick_size=10,
        tick_line=False,
        custom_attrs={"fontSize": "12px"},
        interval="preserveStartEnd",
    )

Examples

Below are examples demonstrating how these components and charts can be used.

Basic

A minimal example showing proportional data distribution in a circular format.

Pie Chart

January - June 2024

Trending up by 5.2% this month

Showing total visitors for the last 6 months

Hovering Labels

Displays labels that appear dynamically when hovering over chart segments.

Pie Chart - Hovering Labels

January - June 2024

Trending up by 5.2% this month

Showing total visitors for the last 6 months

Inner Labels

Shows labels positioned inside each pie segment for compact presentation.

Pie Chart - Inner Labels

January - June 2024

Trending up by 5.2% this month

Showing total visitors for the last 6 months

Legend

Adds a built-in legend for easy segment identification and reference.

Pie Chart - Legend

January - June 2024

Trending up by 5.2% this month

Showing total visitors for the last 6 months

Doughnut

Renders the pie chart with a hollow center for a modern doughnut style.

Pie Chart - Doughnut

January - June 2024

Trending up by 5.2% this month

Showing total visitors for the last 6 months

Active

Demonstrates interactive segment highlighting and selection states.

Pie Chart - Active

January - June 2024

Trending up by 5.2% this month

Showing total visitors for the last 6 months