انتقل إلى المحتوى

الرسوم البيانية

احصل على Ritla UI

كل رسوم Ritla البيانية، من الأعمدة والخطوط إلى الخرائط الحرارية والشموع ورسوم البطاقات، تتجه من اليمين في العربية وتُقرأ بلوحة المفاتيح.

المعاينة

«معكوس» هو المحتوى الإنجليزي نفسه من اليمين إلى اليسار، ليفصل خطأ الاتجاه عن خطأ الترجمة.

المعاينةالكود
إنجليزيمعكوسعربي
← RTL

التثبيت

  1. أضف المكوّن

    npx ritla add chart

    ويعمل أيضًا مع shadcn: npx shadcn@latest add @ritla/chart

  2. أو انسخه يدويًا

    التثبيت اليدوي ينسخ مصدر المكوّن إلى مشروعك. المصدر يأتي مع ترخيص Ritla UI، وأداة سطر الأوامر هي الطريق الأقصر إلى الملفات نفسها.

الاستخدام

chart.tsx
import { BarChart, ChartCard, ChartLegend } from "@/components/ui/chart";<ChartCard title="Income and spend" subtitle="SAR" legend={<ChartLegend items={series} />}>  <BarChart label="Income and spend by month" data={data} series={series} /></ChartCard>

أمثلة

أعمدة مكدّسة

المجموع وأجزاؤه في كل فئة.

إنجليزيمعكوسعربي
← RTL

أعمدة أفقية

ترتيب الفئات ذات الأسماء الطويلة، الأكبر أولًا.

إنجليزيمعكوسعربي
← RTL

خط

خط ناعم بمساحة خفيفة، والعام الماضي خط رمادي متقطع، والمتوسط دليل متقطع.

إنجليزيمعكوسعربي
← RTL

مساحات مكدّسة

كيف تتجمع الأجزاء في مجموع عبر الزمن.

إنجليزيمعكوسعربي
← RTL

أعمدة عائمة

نطاق من الأدنى إلى الأعلى في كل فئة.

إنجليزيمعكوسعربي
← RTL

مدرّج تكراري

كم قيمة تقع في كل فئة من فئات المدى.

إنجليزيمعكوسعربي
← RTL

أعمدة وخط

مقياسان معًا: أعمدة وخط بنقاط على المحور نفسه.

إنجليزيمعكوسعربي
← RTL

درجات

قيمة تثبت ثم تقفز، كسعر الفائدة.

إنجليزيمعكوسعربي
← RTL

خط في بطاقة مع نطاق

المحور في جهة النهاية يبدأ من 30K، ونطاق مظلل بتغيّره. مرّر المؤشر أو استخدم الأسهم لرؤية خط التقاطع.

إنجليزيمعكوسعربي
← RTL

تبعثر

مقياسان لكل عنصر نقطةً.

إنجليزيمعكوسعربي
← RTL

فقاعات

الارتفاع قيمة، ومساحة الفقاعة مقياس ثالث.

إنجليزيمعكوسعربي
← RTL

مخطط الصندوق

المدى ونصف القيم الأوسط والوسيط لكل فئة.

إنجليزيمعكوسعربي
← RTL

مصّاصة

ترتيب خفيف: عود ونقطة والقيمة.

إنجليزيمعكوسعربي
← RTL

رصاصة

التقدّم نحو هدف فوق نطاقات ضعيف ومقبول وجيد.

إنجليزيمعكوسعربي
← RTL

خريطة حرارية

متى وكم مرة، بست درجات من لون العلامة.

إنجليزيمعكوسعربي
← RTL

أعمدة البطاقات

إبراز شهر، وتوقّع بأعمدة مظللة، وتدفق داخل وخارج حول الصفر.

إنجليزيمعكوسعربي
← RTL

أعمدة الكثافة

قيمة لكل يوم في لمحة، وعلامة تتبع المؤشر والأسهم.

إنجليزيمعكوسعربي
← RTL

شريط مقسّم

أقسام نحو حد، وحصص مكدّسة، والمتبقي مظللًا.

إنجليزيمعكوسعربي
← RTL

رسوم دائرية

عدّاد وأقواس مقسّمة وحلقات وحلقة تقدّم، تمتلئ عكس عقارب الساعة في العربية.

إنجليزيمعكوسعربي
← RTL

خرائط البطاقات الحرارية

النشاط بالساعة واليوم، والاحتفاظ حسب أسبوع البدء، وشريط يومي.

إنجليزيمعكوسعربي
← RTL

الشموع

سعر أصل يوميًا مع الحجم وآخر سعر على المحور.

إنجليزيمعكوسعربي
← RTL

حلقة

من جزأين إلى خمسة من كلٍّ واحد، والمجموع في الوسط.

إنجليزيمعكوسعربي
← RTL

مقياس

قيمة نحو حدّ، أو مجموع مقسّم إلى أجزاء.

إنجليزيمعكوسعربي
← RTL

مرجع الخصائص

ChartCard

الخاصيةالنوعالافتراضيالوصف
title / subtitleReactNodeلا يوجدالعنوان والوحدة والفترة.
legendReactNodeلا يوجدChartLegend تحت الرسم.

BarChart

الخاصيةالنوعالافتراضيالوصف
dataChartDatum[]لا يوجدصف لكل فئة: label وقيمة لكل سلسلة.
seriesChartSeries[]لا يوجدkey وlabel بترتيب ألوان الرسم.
stackedbooleanfalseأعمدة مكدّسة بدل المتجاورة.
layout"vertical" | "horizontal""vertical"الأفقي للترتيب.
series[].fromstringلا يوجدمفتاح الطرف الأدنى: أعمدة عائمة.
histogrambooleanfalseأعمدة تملأ فئاتها بفاصل 2px.
lineChartSeriesلا يوجدمقياس ثانٍ خطًا بنقاط فوق الأعمدة.
max / valueFormatnumber / (n) => stringلا يوجدأعلى المحور وتنسيق قيمه.
labelstringلا يوجداسم جدول البيانات المخفي.

LineChart

الخاصيةالنوعالافتراضيالوصف
areabooleanfalseمساحة خفيفة تحت الخط.
stackedbooleanfalseطبقات مكدّسة ممتلئة.
curve"smooth" | "linear" | "step""smooth"منحنٍ أو مستقيم أو درجات.
average{ value, label }لا يوجدخط المتوسط ووسمه.
range{ from, to, label, tone }لا يوجدنطاق مظلل بين فهرسين ووسم بتغيّره.
axis / min"start" | "end" / number"start" / 0جهة محور القيم وأدنى قيمة عليه.
series[].comparisonbooleanلا يوجدخط رمادي متقطع للفترة السابقة.

ScatterChart / BubbleChart

الخاصيةالنوعالافتراضيالوصف
series{ label, points: { x, y }[] }[]لا يوجدالتبعثر: نقاط كل سلسلة.
xLabel / yLabelstringلا يوجدما يمثّله كل محور.
data{ label, value, size, series }[]لا يوجدالفقاعات: الارتفاع والمساحة والسلسلة.

BoxPlot / LollipopChart / BulletChart

الخاصيةالنوعالافتراضيالوصف
data / names (BoxPlot){ label, min, q1, median, q3, max }[] / Recordلا يوجدالإحصاءات الخمسة لكل فئة، وأسماؤها للتلميح والجدول.
data (Lollipop){ label, value }[]لا يوجدمرتبة، الأكبر أولًا.
data (Bullet){ label, value, target, bands? }[]لا يوجدالفعلي والهدف وحدّا النطاقات.

Heatmap

الخاصيةالنوعالافتراضيالوصف
rows / columns / valuesstring[] / string[] / number[][]لا يوجدالصفوف والأعمدة والقيم values[row][column].
labelEverynumber1تسمية كل عمود رقم n.
less / moreReactNodeلا يوجدطرفا المفتاح.

InsightBarChart

الخاصيةالنوعالافتراضيالوصف
style"highlight" | "forecast" | "diverging""highlight"خاصية Style.
highlightnumberلا يوجدالعمود الملوّن: الشهر المقصود أو الحالي.
average / labelEvery{ value, label } / numberلا يوجددليل المتوسط، وتسمية كل عمود رقم n.

DensityBars / SegmentedBar

الخاصيةالنوعالافتراضيالوصف
emphasis / marker[from, to] / numberلا يوجدمقطع أغمق، وموضع العلامة الابتدائي.
type"segments" | "stacked" | "remainder""segments"خاصية Type للشريط المقسّم.
value / max / segments / partsnumber / number / number / { label, value }[]لا يوجدالتقدّم، أو الحصص بالنسبة المئوية.

RadialChart

الخاصيةالنوعالافتراضيالوصف
type"gauge" | "arc-segments" | "rings" | "progress-ring""gauge"خاصية Type.
value / max / ringsnumber / number / { label, value, max? }[]لا يوجدالقيمة، أو حتى ثلاث حلقات من الخارج.
childrenReactNodeلا يوجدالرقم والسطر في الوسط.

ActivityHeatmap / CohortHeatmap / HeatStrip / CandlestickChart

الخاصيةالنوعالافتراضيالوصف
columns / rows / valuesstring[] / string[] / number[][]لا يوجدالنشاط: الأيام والساعات والقيم.
rows (Cohort){ label, values: number[] }[]لا يوجدالنسبة النشطة لكل أسبوع.
days / labels("up" | "down" | "flat")[] / { up, down, flat }لا يوجدالشريط اليومي وكلمات مفتاحه.
data / last / names{ label, open, high, low, close, volume? }[] / number / { open, high, low, close }لا يوجدالشموع وآخر سعر وأسماء القيم الأربع.

ChartValueTooltip / ChartAxisTag / ChartDot

الخاصيةالنوعالافتراضيالوصف
label / valueReactNodeلا يوجدالتلميح: التسمية فوق القيمة.
tone"inverse" | "brand" | "positive" | "negative" | "neutral""neutral" / "brand"لون الوسم أو النقطة حسب المعنى.

DonutChart

الخاصيةالنوعالافتراضيالوصف
data{ label, value }[]لا يوجدالأجزاء.
total / totalLabelReactNodeلا يوجدالرقم في الوسط وتحته.

ChartMeter

الخاصيةالنوعالافتراضيالوصف
type"single" | "proportional""single"خاصية Type.
value / maxnumberلا يوجدللمقياس المفرد.
parts{ label, value }[]لا يوجدللمقياس النسبي.
start / endReactNodeلا يوجدتحت الشريط في البداية والنهاية.

البنية

كل رسم بياني هو البطاقة نفسها: رأس، ومساحة الرسم بمحاورها، ومفتاح. والأجزاء مكوّنات داخلية مشتركة، فيصل أي تغيير إلى كل رسم.

  1. 1. الرأسtitle / subtitleالعنوان يقول ما يُقاس؛ والعنوان الفرعي يعطي الوحدة والفترة.
  2. 2. محور القيم وخطوط الشبكةخمسة خطوط شبكة من الصفر، والتسميات في جهة البداية، بأرقام غربية.
  3. 3. البياناتseriesالألوان تتبع ترتيب السلاسل؛ والأعمدة تبدأ من الصفر.
  4. 4. محور الفئاتdata[].labelأشهر أو أيام أو نطاقات أو مدن، في وسط كل خانة.
  5. 5. المفتاحChartLegendمدخل لكل سلسلة، بترتيب البيانات نفسه.
  6. 6. التلميحالفئة، ثم صف لكل سلسلة بقيمتها؛ عند التمرير والتركيز.
  7. 7. المؤشرخط عمودي يتبع المؤشر ويثبّت التلميح.

إرشادات الاستخدام

الرسم البياني يُري شكل الأرقام عبر الفئات أو الزمن. هنا: متى تصبح الأعمدة أوضح من القطاعات، وكيف تفصل السلاسل، وكيف تقول الوحدة والفترة، وكيف ينعكس الرسم كله في العربية.

1. رتّب الأجزاء الكثيرة في أعمدة

خمسة أجزاء أو أكثر تُقرأ أعمدةً مرتّبة أفضل منها قطاعات.

رتّب الأجزاء الكثيرة في أعمدة

افعل: أعمدة مرتّبةالأكبر أولًا، والقيم عند أطراف الأعمدة: كل جزء سهل المقارنة.
تجنّب: ستة قطاعاتالقطاعات المتقاربة الحجم لا تُقارن بالعين؛ وينتهي القارئ إلى فك رموز المفتاح.

2. افصل السلاسل المتجاورة

استخدم ألوان السلاسل بترتيبها؛ فهي تتغير في درجة اللون والإضاءة من واحدة إلى التالية. ست سلاسل على الأكثر، بترتيب المتغيرات: أزرق، كحلي، رمادي، ثم أزرق مخضر وأصفر وبرتقالي. وبعد ست، أبقِ الخمس الأولى واجمع البقية في «أخرى» بالرمادي.

افصل السلاسل المتجاورة

افعل: السلسلتان 1 و2الأزرق والكحلي يختلفان في درجة اللون والإضاءة، والمفتاح تحت مساحة الرسم.
تجنّب: درجتان من الأزرقدرجتان من صبغة واحدة تذوبان معًا، خاصة لمن لديهم عمى ألوان.

3. قل الوحدة والفترة

يحمل العنوان الفرعي الوحدة والفترة، فيصبح لأرقام المحور معنى. والأعمدة والمساحات تبدأ من الصفر؛ والخط يمكن أن يبدأ من غيره حين يكون التغير هو المقصود، وقل ذلك في العنوان الفرعي.

قل الوحدة والفترة

افعل: الوحدة والفترةبآلاف الريالات، من يناير إلى يونيو: المحور يُقرأ الآن مالًا على نصف سنة.
تجنّب: أرقام فقط1,000 من ماذا، ومتى؟ على القارئ أن يخمّن.

4. اعكس الرسم كله في العربية

في العربية ينعكس الرسم كله: ينتقل محور القيم إلى اليمين ويسير الزمن من اليمين إلى اليسار. والأرقام لا تنعكس. استخدم النسخة العربية؛ فترجمة النص وحده تترك الزمن يسير في الاتجاه الخطأ.

الجزءفي العربيةالسبب
محور القيمعلى اليمين؛ والصفر يبقى في الأسفلالمحور حيث تبدأ القراءة؛ والأعلى ما زال أكثر
الفئات والزمنمن اليمين إلى اليسار، الشهر الأول على اليمينيطابق ترتيب قراءة التسميات
الأعمدة الأفقيةالتسميات على اليمين، والأعمدة تمتد إلى اليسارتُقرأ التسمية قبل عمودها
الحلقي والدائريتسير الأجزاء عكس عقارب الساعة من الأعلىيبدأ الجزء الأول حيث تبدأ القراءة
المفتاحالسلسلة الأولى على اليمينبترتيب البيانات نفسه
الأرقامأرقام غربية 0123456789، كما في Ritla كلهاالأرقام تحتفظ بترتيبها داخل النص العربي
النسب المئوية والقيم بإشارةداخل عزل من اليسار إلى اليمين (U+2066 إلى U+2069)كي لا تظهر 80% أبدًا بصورة %80 وتبقى إشارة السالب في المقدمة

اعكس الرسم كله في العربية

افعل: النسخة العربيةيناير على اليمين، ومحور القيم على اليمين، والمفتاح على اليمين.
تجنّب: نص عربي على رسم من اليسار إلى اليمينيسير الزمن من اليسار إلى اليمين عكس ترتيب القراءة، والمحور في الجهة الخطأ.

رموز التصميم والمواصفات

كل لون وقياس في الرسم البياني متغيّر. ألوان السلاسل الست بترتيبها، ثم متغيرات أجزاء البطاقة.

ألوان السلاسل

السلاسل من 1 إلى 6، بهذا الترتيب. التباين مقيس مقابل background/surface/lowest في كل ثيم، والمعيار WCAG يطلب 3:1 لعلامات الرسوم. الثلاثة الأولى هادئة وتغطي معظم الرسوم؛ ولا تدخل الثلاثة الأخرى إلا بعد ثلاث سلاسل.

المتغيّرالتباين، فاتح / داكنالاستخدام
chart/series-13.35:1 / 6.27:1أزرق. السلسلة 1، وكل رسم بسلسلة واحدة
chart/series-211.31:1 / 16.01:1كحلي (أزرق فاتح في الوضع الداكن). السلسلة 2
chart/series-35.25:1 / 5.85:1رمادي. السلسلة 3، وكذلك «أخرى» والفترة السابقة
chart/series-43.13:1 / 12.36:1أزرق مخضر. السلسلة 4، بعد ثلاث سلاسل فقط
chart/series-53.08:1 / 12.49:1أصفر. السلسلة 5
chart/series-63.05:1 / 8.50:1برتقالي. السلسلة 6
theme/brand/50 to theme/brand/800ست درجات: 50 و100 و200 و400 و600 و800سلّم الخريطة الحرارية من الفاتح إلى الداكن؛ وينقلب في الوضع الداكن

الأجزاء

متغيرات البطاقة والشبكة والنصوص والتلميح. البطاقة بعرض 560، والرسوم في صف واحد من لوحة المعلومات بالارتفاع نفسه لتصطف مساحات الرسم.

المتغيّرالموضعالاستخدام
background/surface/lowestالبطاقةتعبئة البطاقة؛ والحلقة بعرض 2 بكسل حول النقاط
border/gray/softالبطاقة وخطوط الشبكةحدّ البطاقة وخطوط الشبكة
border/gray/dimخط الأساسخط الصفر
text/gray/intenseالعنوانbody-16/Semibold
text/gray/dimالعنوان الفرعي وتسميات المحورbody-12/Regular
text/gray/mutedالمفتاح وتسميات الفئاتbody-12/Regular
background/surface/inverseالتلميحمع text/invert/white وlabel-12/Medium وbody-12/Regular
radius/12البطاقةزوايا البطاقة
radius/4الأعمدةالزوايا الخارجية فقط، فيبقى التكديس مستقيمًا عند الوصلات
space-24, space-16البطاقةالحشوة، والمسافة بين الرأس ومساحة الرسم والمفتاح

اللون وحده لا يكفي

لا يحمل اللون وحده المعنى أبدًا: أبقِ المفتاح، وسمِّ القيم حيث تتسع، واستخدم الموضع أو فجوة 2 بكسل بين الأجزاء (WCAG 1.4.1).

إمكانية الوصول

لوحة المفاتيح

المفاتيح مكتوبة للاتجاه من اليسار إلى اليمين. في الاتجاه من اليمين يتبادل السهمان دورهما: السهم المتجه مع اتجاه القراءة ينقلك إلى الأمام.

المفتاحما يفعله
Tabينقل التركيز إلى منطقة الرسم.
ArrowRightArrowLeftالفئة التالية أو السابقة وتلميحها. في العربية التالية ArrowLeft.
HomeEndالفئة الأولى أو الأخيرة.
Escapeيخفي التلميح.

ARIA

  • كل رسم يُعرض أيضًا جدولًا مخفيًا بصريًا، فالأرقام في متناول قارئ الشاشة ولوحة المفاتيح دون الصورة.
  • البطاقة figure وعنوانها figcaption.
  • المقياس المفرد role="meter" بقيمه.
  • منطقة الرسم role="group" باسم الرسم، وتُقرأ الفئة التي يصلها المؤشر في منطقة حيّة.
  • الشريط المقسّم والعدّاد وحلقة التقدّم meter، والحلقات قائمة مسمّاة.
  • لا تعتمد على اللون وحده: سمِّ السلاسل في المفتاح وفي التلميح.

افعل

  • أظهر التلميح عند التمرير وعند التركيز بلوحة المفاتيح.
  • قدّم الأرقام جدولًا لقارئات الشاشة.
  • ألوان السلاسل الست تبلغ تباين 3:1 على السطحين، الفاتح والداكن.
  • أبقِ المفتاح وفجوة 2 بكسل بين الأجزاء، كي لا يحمل اللون المعنى وحده.

ملاحظات العربية والاتجاه

ينعكس

  • الفئات والزمن تجري من اليمين إلى اليسار، ومحور القيم على اليمين.
  • الأعمدة الأفقية والمقاييس تبدأ من اليمين، والحلقة تدور عكس عقارب الساعة.
  • العدّادات والحلقات تمتلئ عكس عقارب الساعة، والشموع وأعمدة الكثافة تجري من اليمين.

لا ينعكس

  • المحور الرقمي يبقى من الأسفل إلى الأعلى، وترتيب التكديس من الأسفل.
  • الأرقام غربية في العربية، كما في Figma.
  • النسب والقيم بإشارة داخل عزل من اليسار إلى اليمين، فلا تظهر 80% كـ %80 وتبقى الإشارة أمام الرقم.
الأرقام
قيم الرسوم بأرقام غربية دائمًا؛ مرّر valueFormat لتنسيق آخر.
الخط العربي
العنوان body-16 Semibold، والعلامات body-12 وnumeric-12.

افعل

  • النسخة العربية: ينعكس الرسم كله، فمحور القيم على اليمين، والزمن من اليمين إلى اليسار، والمفتاح على اليمين.
  • أبقِ الأرقام غربية، والنسب المئوية والقيم بإشارة داخل عزل من اليسار إلى اليمين.

تجنّب

  • ترجمة النص وحده على رسم من اليسار إلى اليمين.
  • عكس الأرقام، أو نقل الصفر إلى الأعلى.