Chart/chart-line-label-custom

PreviousNext

A chart/chart-line-label-custom example

Docs
shadcnblocksblock

Preview

Loading preview…
code/example/chart/chart-line-label-custom.tsx
"use client";

import { CartesianGrid, LabelList, Line, LineChart } from "recharts";

import {
  type ChartConfig,
  ChartContainer,
  ChartTooltip,
  ChartTooltipContent,
} from "@/components/ui/chart";

export const title = "A line chart with a custom label";

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)" },
];

const chartConfig = {
  visitors: {
    label: "Visitors",
    color: "var(--chart-2)",
  },
  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;

const ChartLineLabelCustom = () => (
  <div className="w-full max-w-xl rounded-md border bg-background p-4">
    <ChartContainer config={chartConfig}>
      <LineChart
        accessibilityLayer
        data={chartData}
        margin={{
          top: 24,
          left: 24,
          right: 24,
        }}
      >
        <CartesianGrid vertical={false} />
        <ChartTooltip
          content={
            <ChartTooltipContent
              hideLabel
              indicator="line"
              nameKey="visitors"
            />
          }
          cursor={false}
        />
        <Line
          activeDot={{
            r: 6,
          }}
          dataKey="visitors"
          dot={{
            fill: "var(--color-visitors)",
          }}
          stroke="var(--color-visitors)"
          strokeWidth={2}
          type="natural"
        >
          <LabelList
            className="fill-foreground"
            dataKey="browser"
            fontSize={12}
            formatter={(value: keyof typeof chartConfig) =>
              chartConfig[value]?.label
            }
            offset={12}
            position="top"
          />
        </Line>
      </LineChart>
    </ChartContainer>
  </div>
);

export default ChartLineLabelCustom;

Installation

npx shadcn@latest add @shadcnblocks/chart-chart-line-label-custom

Usage

import { ChartChartLineLabelCustom } from "@/components/chart-chart-line-label-custom"
<ChartChartLineLabelCustom />