نمودار خطی
line-chartنمودارروند یک یا چند سری در طول زمان، با منحنی نرم بدون بیرونزدگی، خطچین برای پیشبینی، خط هدف و شکستن خط در دادهی خالی.
فروش و هزینهی ماهانه (تومان)
| فروش | هزینه | هدف | |
|---|---|---|---|
| فروردین | ۴۲٬۸۲۱٬۱۸۰ تومان | ۲۷٬۴۶۴٬۸۸۰ تومان | ۴۲٬۰۰۰٬۰۰۰ تومان |
| اردیبهشت | ۴۷٬۲۴۴٬۱۱۰ تومان | ۲۸٬۰۳۷٬۳۰۰ تومان | ۴۴٬۴۰۰٬۰۰۰ تومان |
| خرداد | ۴۳٬۲۳۷٬۰۶۰ تومان | ۲۴٬۰۲۶٬۵۹۰ تومان | ۴۶٬۸۰۰٬۰۰۰ تومان |
| تیر | ۴۶٬۸۳۲٬۴۱۰ تومان | ۲۶٬۲۵۳٬۹۴۰ تومان | ۴۹٬۲۰۰٬۰۰۰ تومان |
| مرداد | ۵۶٬۲۴۳٬۷۳۰ تومان | ۳۲٬۵۴۷٬۵۳۰ تومان | ۵۱٬۶۰۰٬۰۰۰ تومان |
| شهریور | ۵۱٬۳۱۷٬۱۸۰ تومان | ۳۱٬۱۶۴٬۷۵۰ تومان | ۵۴٬۰۰۰٬۰۰۰ تومان |
| مهر | ۵۷٬۴۰۸٬۶۷۰ تومان | ۳۴٬۳۹۰٬۵۳۰ تومان | ۵۶٬۴۰۰٬۰۰۰ تومان |
| آبان | ۶۱٬۹۶۱٬۳۵۰ تومان | ۳۷٬۸۷۲٬۸۱۰ تومان | ۵۸٬۸۰۰٬۰۰۰ تومان |
| آذر | ۶۵٬۰۲۸٬۸۹۰ تومان | ۳۷٬۲۰۷٬۹۱۰ تومان | ۶۱٬۲۰۰٬۰۰۰ تومان |
| دی | ۶۷٬۰۵۰٬۲۸۰ تومان | ۳۷٬۴۸۵٬۵۵۰ تومان | ۶۳٬۶۰۰٬۰۰۰ تومان |
| بهمن | ۶۶٬۷۶۰٬۵۱۰ تومان | ۴۱٬۳۰۵٬۵۲۰ تومان | ۶۶٬۰۰۰٬۰۰۰ تومان |
| اسفند | ۶۷٬۱۸۹٬۱۰۰ تومان | ۳۷٬۱۷۲٬۷۶۰ تومان | ۶۸٬۴۰۰٬۰۰۰ تومان |
نصب
با CLI
اگر هنوز init نکردید، اول از راهنمای نصب پروژه را آماده کنید. بعد این دستور کامپوننت و وابستگیهاش را مینویسه.
$ npx vibefarsi add line-chartنصب دستی
محتوای تب «کد» را در
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 / series | Row[] / 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 }[] | - | خط افقی خطچین مثل هدف یا میانگین. |
| highlight | number | - | اندیس نقطهای که پررنگ میشه، مثلاً امروز. |
| onSelect | (row, index) => void | - | کلیک روی نمودار، مثلاً برای رفتن به جزئیات اون روز. |
نکتهها
- اولین ردیف سمت راست مینشینه و زمان به چپ میره، همون جهتی که متن فارسی خوانده میشه.
- مقدار null یا جاافتاده خط را میشکنه بهجای اینکه به صفر سقوط کنه.
- تاریخهای Date خودشون به شمسی مثل «۱۲ مهر» تبدیل میشن.