نمودار خطی (Line Chart)
کامپوننت نمودار خطی برای نمایش روند دادهها بر پایه Recharts
معرفی
کامپوننت PartoLineChart برای نمایش روند تغییرات دادهها در طول زمان طراحی شده است. این کامپوننت بر پایه Recharts ساخته شده و از چندین سری داده، انواع منحنی، و بارگذاری Skeleton پشتیبانی میکند.
چه زمانی استفاده کنیم:
- برای نمایش روند تغییرات یک یا چند متغیر در طول زمان
- برای مقایسه سریهای زمانی مختلف در یک نمودار
- برای شناسایی الگوها، صعود و نزول دادهها
چه زمانی استفاده نکنیم:
- برای مقایسه مقادیر categorical — از
PartoBarChartاستفاده کنید - برای نقاط داده منفرد بدون روند — از
StatDisplayاستفاده کنید - برای نمایش سهمها — از
PartoPieChartاستفاده کنید
استفاده پایه
import { PartoLineChart } from '@parto-system-design/ui'
const data = [
{ name: 'فروردین', فروش: 50 },
{ name: 'اردیبهشت', فروش: 75 },
{ name: 'خرداد', فروش: 60 },
{ name: 'تیر', فروش: 90 },
{ name: 'مرداد', فروش: 85 },
{ name: 'شهریور', فروش: 100 },
]
<div className="h-[400px]">
<PartoLineChart
data={data}
dataKeys={['فروش']}
margin={{ top: 20, right: 20, bottom: 50, left: 50 }}
/>
</div>نمونههای کاربردی
چند سری داده
برای نمایش چند خط در یک نمودار، کلیدهای مورد نظر را در dataKeys مشخص کنید. هر کلید با رنگ متفاوتی نمایش داده میشود.
const data = [
{ name: 'فروردین', فروش: 50, سود: 30, هزینه: 20 },
{ name: 'اردیبهشت', فروش: 75, سود: 45, هزینه: 30 },
{ name: 'خرداد', فروش: 60, سود: 40, هزینه: 25 },
{ name: 'تیر', فروش: 90, سود: 55, هزینه: 35 },
]
<PartoLineChart
data={data}
dataKeys={['فروش', 'سود', 'هزینه']}
/>با نمایش نقاط
<PartoLineChart data={data} dataKeys={['فروش']} showDots={true} />انواع منحنی
با ویژگی curve میتوانید شکل خط را تغییر دهید.
{
/* منحنی نرم (پیشفرض) */
}
;<PartoLineChart data={data} dataKeys={['فروش']} curve="monotone" />
{
/* خط مستقیم */
}
;<PartoLineChart data={data} dataKeys={['فروش']} curve="linear" />
{
/* منحنی طبیعی */
}
;<PartoLineChart data={data} dataKeys={['فروش']} curve="natural" />
{
/* پلهای */
}
;<PartoLineChart data={data} dataKeys={['فروش']} curve="step" />سفارشیسازی Tooltip
<PartoLineChart
data={data}
dataKeys={['فروش', 'سود']}
tooltipFormatter={(name, value) => (
<span>
{name}: <strong>{value.toLocaleString('fa-IR')}</strong> تومان
</span>
)}
/>حالت بارگذاری
<PartoLineChart data={[]} dataKeys={['فروش']} isLoading={true} />جدول ویژگیها
حالتها و انواع
انواع منحنی (curve)
| مقدار | توضیح |
|---|---|
monotone | منحنی نرم (پیشفرض) — مناسب برای اکثر دادههای time-series |
linear | خط مستقیم بین نقاط — برای دادههای دقیق |
natural | منحنی طبیعی — ظاهر organic |
step | پلهای — برای دادههای گسسته مانند تعداد پست |
حالت بارگذاری (isLoading)
با isLoading={true} یک Skeleton متحرک بهجای نمودار نمایش داده میشود. مناسب برای زمانی که دادهها هنوز از سرور دریافت نشدهاند.
راهنمای استفاده
بکنید
- همیشه
ariaLabelتوصیفی برای نمودار تعریف کنید تا صفحهخوانها محتوا را درک کنند - ازmarginمناسب استفاده کنید تا برچسبهای محورها بریده نشوند - برای نمایش بیش از ۳ سری داده، از legend استفاده کنید تا تمایز خطوط آسان باشد
نکنید
- بیش از ۵ سری داده در یک نمودار قرار ندهید — خوانایی کاهش مییابد - از
curve="step"برای دادههای پیوسته استفاده نکنید — شکل گمراهکننده میشود - رنگها را مستقیماً hardcode نکنید — از توکنهای--chart-*استفاده کنید
تمبندی خودکار
این کامپوننت بهطور خودکار از متغیرهای CSS سیستم طراحی استفاده میکند:
- رنگهای سری داده از
--chart-1تا--chart-5خوانده میشوند - با هر دو تم (روشن و تاریک) سازگار است
- Tooltip و محورها با رنگهای تم هماهنگ هستند
دسترسیپذیری
- کامپوننت دارای
role="img"و پشتیبانی ازariaLabelبرای صفحهخوانها است - در حالت بارگذاری از
role="status"استفاده میشود - Tooltip با تعامل ماوس و لمسی فعال میشود
- رنگهای خطوط کنتراست کافی با پسزمینه دارند
کامپوننتهای مرتبط
- AreaChart — اگر میخواهید حجم یا مقدار تجمعی را با پر کردن ناحیه زیر خط تأکید کنید، از AreaChart استفاده کنید
- BarChart — اگر دادههای شما categorical هستند و نیاز به مقایسه مستقیم مقادیر دارید، BarChart مناسبتر است
- PieChart — برای نمایش توزیع نسبی و سهم هر بخش از کل
- دادهنمایی — راهنمای کامل نمودارها و اصول رنگبندی