نمودار خطی

line-chartنمودار

روند یک یا چند سری در طول زمان، با منحنی نرم بدون بیرون‌زدگی، خط‌چین برای پیش‌بینی، خط هدف و شکستن خط در داده‌ی خالی.

فروش و هزینه‌ی ماهانه (تومان)

فروش و هزینه‌ی ماهانه
فروشهزینههدف
فروردین۴۲٬۸۲۱٬۱۸۰ تومان۲۷٬۴۶۴٬۸۸۰ تومان۴۲٬۰۰۰٬۰۰۰ تومان
اردیبهشت۴۷٬۲۴۴٬۱۱۰ تومان۲۸٬۰۳۷٬۳۰۰ تومان۴۴٬۴۰۰٬۰۰۰ تومان
خرداد۴۳٬۲۳۷٬۰۶۰ تومان۲۴٬۰۲۶٬۵۹۰ تومان۴۶٬۸۰۰٬۰۰۰ تومان
تیر۴۶٬۸۳۲٬۴۱۰ تومان۲۶٬۲۵۳٬۹۴۰ تومان۴۹٬۲۰۰٬۰۰۰ تومان
مرداد۵۶٬۲۴۳٬۷۳۰ تومان۳۲٬۵۴۷٬۵۳۰ تومان۵۱٬۶۰۰٬۰۰۰ تومان
شهریور۵۱٬۳۱۷٬۱۸۰ تومان۳۱٬۱۶۴٬۷۵۰ تومان۵۴٬۰۰۰٬۰۰۰ تومان
مهر۵۷٬۴۰۸٬۶۷۰ تومان۳۴٬۳۹۰٬۵۳۰ تومان۵۶٬۴۰۰٬۰۰۰ تومان
آبان۶۱٬۹۶۱٬۳۵۰ تومان۳۷٬۸۷۲٬۸۱۰ تومان۵۸٬۸۰۰٬۰۰۰ تومان
آذر۶۵٬۰۲۸٬۸۹۰ تومان۳۷٬۲۰۷٬۹۱۰ تومان۶۱٬۲۰۰٬۰۰۰ تومان
دی۶۷٬۰۵۰٬۲۸۰ تومان۳۷٬۴۸۵٬۵۵۰ تومان۶۳٬۶۰۰٬۰۰۰ تومان
بهمن۶۶٬۷۶۰٬۵۱۰ تومان۴۱٬۳۰۵٬۵۲۰ تومان۶۶٬۰۰۰٬۰۰۰ تومان
اسفند۶۷٬۱۸۹٬۱۰۰ تومان۳۷٬۱۷۲٬۷۶۰ تومان۶۸٬۴۰۰٬۰۰۰ تومان

نصب

  1. با CLI

    اگر هنوز init نکردید، اول از راهنمای نصب پروژه را آماده کنید. بعد این دستور کامپوننت و وابستگی‌هاش را می‌نویسه.

    $ npx vibefarsi add line-chart
  2. نصب دستی

    محتوای تب «کد» را در components/charts/line-chart.tsx بگذارید. پیش‌نیاز: chart-core.

    $ npm i lucide-react
    کپی کل فایلregistry json

استفاده

usage.tsx
1import { LineChart } from "@/components/charts/line-chart"23const data = [4  { month: "فروردین", sales: 4_200_000, target: 5_000_000 },5  { month: "اردیبهشت", sales: 5_100_000, target: 5_000_000 },6  { month: "خرداد", sales: 4_800_000, target: 5_500_000 },7]89<LineChart10  title="فروش ماهانه"11  data={data}12  x="month"13  series={[{ key: "sales", label: "فروش" }, { key: "target", label: "هدف", dashed: true }]}14  format={formatToman}15/>

پراپ‌ها

پراپنوعپیش‌فرضتوضیح
data / x / seriesRow[] / string / Series[]-ردیف‌ها، اسم فیلد محور افقی و سری‌ها با key و label و رنگ دلخواه.
curve"monotone" | "linear" | "step""monotone"monotone هیچ‌وقت از داده بیرون نمی‌زنه، پس خط زیر صفر نمیره.
format / axisFormat(n) => string-قالب تولتیپ (پیش‌فرض عدد کامل) و قالب محور (پیش‌فرض کوتاه مثل «۱۲ میلیون»).
domain"auto" | "zero" | [min, max]"auto"auto به داده می‌چسبه و zero از صفر شروع می‌کنه.
references{ value, label }[]-خط افقی خط‌چین مثل هدف یا میانگین.
highlightnumber-اندیس نقطه‌ای که پررنگ میشه، مثلاً امروز.
onSelect(row, index) => void-کلیک روی نمودار، مثلاً برای رفتن به جزئیات اون روز.

نکته‌ها

  • اولین ردیف سمت راست می‌نشینه و زمان به چپ می‌ره، همون جهتی که متن فارسی خوانده میشه.
  • مقدار null یا جاافتاده خط را می‌شکنه به‌جای این‌که به صفر سقوط کنه.
  • تاریخ‌های Date خودشون به شمسی مثل «۱۲ مهر» تبدیل میشن.