Join our Discord community
Bar chart

Multi-Color Bar Chart

Mixed bar chart component with horizontal multi-color bars. Built for React applications requiring categorical data visualization with Next.js and TypeScript.

Powered by

Loading component...

Installation

npx shadcn@latest add https://www.shadcn.io/registry/bar-chart-08.json
npx shadcn@latest add https://www.shadcn.io/registry/bar-chart-08.json
pnpm dlx shadcn@latest add https://www.shadcn.io/registry/bar-chart-08.json
bunx shadcn@latest add https://www.shadcn.io/registry/bar-chart-08.json

Features

  • Multi-color bars with each category using a distinct color scheme
  • Horizontal layout optimized for browser/category name display
  • Individual fill colors defined directly in data with fallback to chart config
  • Custom tick formatting displaying full category labels from chart configuration
  • TypeScript support with complete type definitions for mixed color charts
  • shadcn/ui integration using Chart components with multi-color styling

Use Cases

This free open source React component works well for:

  • Browser analytics - Applications showing browser usage statistics built with Next.js
  • Category comparisons - Data visualization requiring distinct category identification using TypeScript and Tailwind CSS
  • Market share analysis - Charts where each segment needs unique visual identity
  • Performance tracking - Multi-category metrics with clear visual separation

API Reference

ChartBarMixed

PropTypeDefaultDescription
classNamestring-Additional CSS classes for the container

Data Structure with Fill Colors

Each data item includes its own fill color:

const chartData = [
  { browser: "chrome", visitors: 275, fill: "var(--color-chrome)" },
  { browser: "safari", visitors: 200, fill: "var(--color-safari)" },
  { browser: "firefox", visitors: 187, fill: "var(--color-firefox)" },
  { browser: "edge", visitors: 173, fill: "var(--color-edge)" },
  { browser: "other", visitors: 90, fill: "var(--color-other)" },
]

Chart Configuration

Multi-category configuration with individual colors:

const chartConfig = {
  visitors: { label: "Visitors" },
  chrome: { label: "Chrome", color: "var(--chart-1)" },
  safari: { label: "Safari", color: "var(--chart-2)" },
  firefox: { label: "Firefox", color: "var(--chart-3)" },
  edge: { label: "Edge", color: "var(--chart-4)" },
  other: { label: "Other", color: "var(--chart-5)" },
} satisfies ChartConfig

Tick Formatting

Custom Y-axis formatting for category labels:

<YAxis
  dataKey="browser"
  type="category"
  tickFormatter={(value) =>
    chartConfig[value as keyof typeof chartConfig]?.label
  }
/>

Implementation Notes

  • Each bar automatically uses its individual fill color from the data
  • Y-axis displays full category names via chart config lookup
  • X-axis is hidden to focus on relative comparisons
  • Horizontal layout accommodates longer category names
  • Zero left margin maximizes chart display area
  • Perfect for applications requiring distinct visual identity for each data category