Chart Presetsv1.0.0

روندِ یک یا چند مقدار در طولِ زمان، با ناحیهٔ پرشده زیرِ خط. حجم را بهتر از نمودارِ خطی نشان می‌دهد و با stacked جمعِ سری‌ها را هم. نمونهٔ بالا تعاملی است: بازهٔ زمانی را با برگه‌ها عوض کنید.

ری‌اکت ۱۹ و Next.js با پیاده‌سازی دسترس‌پذیری داخلی دیگویو ۳ با Composition API — هنوز برای این کامپوننت پورت نشدهSvelte ۵ با runes — هنوز برای این کامپوننت پورت نشدهانگولار با signals و دایرکتیوهای standalone — هنوز برای این کامپوننت پورت نشده

این کامپوننت فعلاً برای ۱ فریم‌ورک از ۴ فریم‌ورک آماده است.

نمودار ناحیه‌ای، تعاملی
فروشِ روزانهٔ آنلاین و حضوری در ۳۰ روزِ گذشته

این نمونه هنوز برای Vue پورت نشده است؛ آنچه می‌بینید نسخهٔ ری‌اکت است.

این نمونه هنوز برای Svelte پورت نشده است؛ آنچه می‌بینید نسخهٔ ری‌اکت است.

این نمونه هنوز برای Angular پورت نشده است؛ آنچه می‌بینید نسخهٔ ری‌اکت است.

نصب

با CLI اختصاصی digdesign کامپوننت را از رجیستری دیگ نصب کنید؛ وابستگی‌ها و فایل‌ها خودکار اضافه می‌شوند.

پکیج‌منیجر پیش‌فرض Node.jsنصب سریع با لینک سخت و دیسک مشترکYarn نسخهٔ ۲ به بالا (Berry)رانتایم و پکیج‌منیجر Bun
npx digdesign@latest add https://docs.digdesign.ir/r/chart-presets.json
pnpm dlx digdesign@latest add https://docs.digdesign.ir/r/chart-presets.json
yarn dlx digdesign@latest add https://docs.digdesign.ir/r/chart-presets.json
bunx --bun digdesign@latest add https://docs.digdesign.ir/r/chart-presets.json

این کامپوننت هنوز برای Vue پورت نشده است.

نسخهٔ ری‌اکت آماده است؛ پورت این فریم‌ورک در دست کار است.

این کامپوننت هنوز برای Svelte پورت نشده است.

نسخهٔ ری‌اکت آماده است؛ پورت این فریم‌ورک در دست کار است.

این کامپوننت هنوز برای Angular پورت نشده است.

نسخهٔ ری‌اکت آماده است؛ پورت این فریم‌ورک در دست کار است.

استفاده

import { AreaChart } from "@/components/ui/chart-presets"

const data = [
  { month: "فروردین", online: 420, inStore: 310 },
  { month: "اردیبهشت", online: 515, inStore: 298 },
]

<AreaChart
  data={data}
  categoryKey="month"
  series={[{ key: "online", label: "فروشِ آنلاین" }]}
  curve="smooth"
/>

این کامپوننت هنوز برای Vue پورت نشده است.

نسخهٔ ری‌اکت آماده است؛ پورت این فریم‌ورک در دست کار است.

این کامپوننت هنوز برای Svelte پورت نشده است.

نسخهٔ ری‌اکت آماده است؛ پورت این فریم‌ورک در دست کار است.

این کامپوننت هنوز برای Angular پورت نشده است.

نسخهٔ ری‌اکت آماده است؛ پورت این فریم‌ورک در دست کار است.

ترکیب اجزا

AreaChart همان ورودیِ بقیهٔ نمودارهای محوردار را می‌گیرد: data، categoryKey و series. شکلِ خط با curve عوض می‌شود: smooth برای روندِ پیوسته، linear وقتی بینِ نقطه‌ها معنایی ندارد و step برای مقدارهایی که یک‌باره عوض می‌شوند (نرخ، قیمتِ پلن).

با stacked ناحیه‌ها روی هم می‌نشینند و با expand هر ستون جمعاً ۱۰۰٪ می‌شود تا سهمِ هر سری دیده شود نه مقدارش. gradient پرشدگی را به رنگِ پس‌زمینه محو می‌کند، نه به شفاف، پس روی کارت و در حالتِ تیره هم درست می‌ماند.

برای انتخابِ بازهٔ زمانی، داده را خودتان برش بزنید (data.slice(-30)) و با Tabs بینِ بازه‌ها جابه‌جا شوید؛ نمودار با دادهٔ تازه دوباره انیمیت می‌شود.

دسترس‌پذیری

  • نمودار روی canvas رندر می‌شود؛ کنارش عددِ کلیدی (مثلاً جمعِ بازه) را متنی بنویسید یا جدولِ همان داده را بدهید.
  • برگه‌های بازهٔ زمانی با صفحه‌کلید کار می‌کنند و aria-label دارند؛ عنوانِ کارت بازهٔ انتخاب‌شده را هم بگوید.
  • در ناحیه‌های انباشته رنگ تنها تمایزدهنده نباشد: راهنما را روشن نگه دارید یا سری‌ها را با آیکون بدهید.

مرجع API

داده

ویژگینوعپیش‌فرضتوضیح
dataChartRow[]—آرایهٔ ردیف‌ها؛ همان شکلی که از API می‌آید.
categoryKeystring—فیلدی که روی محورِ دسته‌ها می‌نشیند (مثلاً ماه).
series{ key, label?, color?, icon? }[]—فیلدهایی که رسم می‌شوند. color پیش‌فرض --chart-N است؛ icon در تولتیپ می‌نشیند و راهنما را HTML می‌کند.

AreaChart

ویژگینوعپیش‌فرضتوضیح
curve"smooth" | "linear" | "step""smooth"شکلِ خط.
stackedbooleanfalseناحیه‌ها روی هم؛ وقتی جمعشان معنا دارد.
expandbooleanfalseانباشتهٔ صددرصدی؛ محور به درصد می‌رود.
gradientbooleanfalseپرشدگی از رنگِ سری به پس‌زمینه.
showPointsbooleanfalseنقطه روی هر داده.
pointShape"circle" | "diamond" | "rect" | …"circle"شکلِ نقطه‌ها.

مشترک

ویژگینوعپیش‌فرضتوضیح
showLegendbooleanبیش از یک سریراهنمای رنگ‌ها؛ اولین سری سمتِ راست.
showGridbooleantrueخطوطِ شبکه در امتدادِ محورِ مقدار.
hideValueAxisbooleanfalseعددهای محورِ مقدار پنهان؛ وقتی برچسب یا تولتیپ کافی است.
valueFormatter(value: number) => stringعددِ فارسیروی محور، برچسب و تولتیپ هر سه اثر می‌کند.
cursor"line" | "band" | "none""line"نشانگرِ دستهٔ زیرِ ماوس؛ band نوارِ پرِ پشتِ میله‌هاست.
tooltipChartTooltipOptions—ظاهرِ تولتیپ: indicator، hideLabel، labelFormatter، formatValue و showTotal. جزئیات در برگهٔ «تولتیپ».
defaultTooltipIndexnumber—تولتیپِ این اندیس از اول باز باشد؛ مثلاً مقدارِ امروز.
classNamestringh-72 w-fullارتفاع را از همین‌جا بدهید؛ نمودار ارتفاعِ ذاتی ندارد.

این کامپوننت هنوز برای Vue پورت نشده است.

نسخهٔ ری‌اکت آماده است؛ پورت این فریم‌ورک در دست کار است.

این کامپوننت هنوز برای Svelte پورت نشده است.

نسخهٔ ری‌اکت آماده است؛ پورت این فریم‌ورک در دست کار است.

این کامپوننت هنوز برای Angular پورت نشده است.

نسخهٔ ری‌اکت آماده است؛ پورت این فریم‌ورک در دست کار است.