Join our Discord community
Bar chart

Positive/Negative Bar Chart

Bar chart component with negative values and conditional coloring. Built for React applications requiring positive/negative data visualization with Next.js and TypeScript.

Powered by

Loading component...

Installation

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

Features

  • Negative value support with automatic baseline adjustment for proper visualization
  • Conditional coloring using Cell components to differentiate positive and negative values
  • Top labels displaying month names for easy data identification
  • Dynamic color assignment based on data value (positive/negative)
  • TypeScript support with complete type definitions for negative value charts
  • shadcn/ui integration using Chart components with conditional styling

Use Cases

This free open source React component works well for:

  • Financial data - Applications showing profit/loss or gains/losses built with Next.js
  • Performance metrics - Charts displaying improvements and declines using TypeScript and Tailwind CSS
  • Variance analysis - Visualizing positive and negative deviations from targets
  • Change tracking - Showing increases and decreases over time periods

API Reference

ChartBarNegative

PropTypeDefaultDescription
classNamestring-Additional CSS classes for the container

Conditional Cell Coloring

Dynamic color assignment based on value:

<Bar dataKey="visitors">
  <LabelList position="top" dataKey="month" fillOpacity={1} />
  {chartData.map((item) => (
    <Cell
      key={item.month}
      fill={item.visitors > 0 ? "var(--chart-1)" : "var(--chart-2)"}
    />
  ))}
</Bar>

Data Structure with Negative Values

Mixed positive and negative data:

const chartData = [
  { month: "January", visitors: 186 },
  { month: "February", visitors: 205 },
  { month: "March", visitors: -207 },
  { month: "April", visitors: 173 },
  { month: "May", visitors: -209 },
  { month: "June", visitors: 214 },
]

Tooltip Configuration

Enhanced tooltip hiding labels and indicators for clean display:

<ChartTooltip
  cursor={false}
  content={<ChartTooltipContent hideLabel hideIndicator />}
/>

Color Logic

  • Positive values: Use var(--chart-1) (typically primary color)
  • Negative values: Use var(--chart-2) (typically secondary/warning color)
  • Labels: Display month names with full opacity for clarity

Implementation Notes

  • Cell components enable individual bar coloring based on data conditions
  • LabelList adds month identification without cluttering the visualization
  • Automatic baseline adjustment handles negative values properly
  • No X-axis labels to reduce visual noise and focus on data
  • Conditional logic in map function determines color assignment
  • Perfect for applications requiring clear visual distinction between positive and negative data values