Bar Chart

Bar charts are ideal for visualizing categorical data and comparing multiple series side by side. They can be stacked, oriented horizontally, or customized with legends and axes.

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.

Multiple Series

A simple vertical bar chart comparing data categories.

Bar Chart - Multiple

Showing total visitors for the last 6 months

Trending up by 5.2% this month

January - June 2024

Horizontal

Display multiple datasets within the same chart for comparison.

Bar Chart - Horizontal

Showing total visitors for the last 6 months

Trending up by 5.2% this month

January - June 2024

Stacked with Legends

Combine related values by stacking bars for cumulative insights.

Bar Chart - Legend

Showing total visitors for the last 6 months

Trending up by 5.2% this month

January - June 2024

Labeled

Flip the orientation to show bars horizontally for improved readability.

Bar Chart - Labeled

Showing total visitors for the last 6 months

Trending up by 5.2% this month

January - June 2024

Dynamic

Demonstrate dynamic updates or data-driven interactivity in your bar chart.

Bar Chart - Dynamic

Showing total visitors for the last 6 months

Trending up by 5.2% this month

January - June 2024

Active

Add a built-in legend for clarity when displaying multiple series.

Bar Chart - Active

Showing total visitors for the last 6 months

Trending up by 5.2% this month

January - June 2024

Mixed Horizontal

Create a fully custom legend layout using Reflex components.

Bar Chart - Mixed

Showing total visitors for the last 6 months

Trending up by 5.2% this month

January - June 2024

Custom Tabs

Customize and format your x and y axes for improved presentation.

Online Transactions

Custom Legends

Show how the chart adapts across different screen sizes and layouts.

Desktop

Mobile

Tablet

Alternating Colors

Apply gradient fills to your bars for a modern, polished look.