BarChart
ارسم كل عنصر بيانات كشريط، مناسب لمقارنة القيم الفئوية. يمكن ترتيبه أفقيًا أو رأسيًا، وتعيين النطاقات الرقمية، وتسميات الفئات، والتسميات الرقمية، ويدعم القيم الإيجابية والسلبية.
مثال
function main() {
return (
<BarChart
data={[
{ value: 30, label: 'A' },
{ value: 70, label: 'B' },
]}
axis="vertical"
rangeY={[0, 100]}
showLabels={true}
showValueLabels={true}
background={$env.accent}
cornerRadius={6}
yAxis={{ stroke: $env.foreground, lineWidth: 1 }}
/>
);
}
الاستخدام
- كل data عمود حسب ترتيب المصفوفة دون x. horizontal يبقي اسم نطاق القيم rangeY. النطاق التلقائي يشمل صفرًا، والسالب يمتد عبر الأساس؛ background يملأ الأعمدة.
- rangeX/rangeY حدود أرقام لا تسميات. إخفاء التسميات لا يخفي المحاور؛ استخدم stroke="clear". ينتقي العرض تسميات غير متداخلة فلا يضمن ظهورها كلها.
- contentAnimation للنص والصورة والبيانات المركبة. interpolate يحتاج توافق عدد نقاط Polyline وclosed أو أوامر Path أو عينات المخطط. تغيّر البنية يحدث فورًا.
الخصائص
dataReadonlyArray<BarChartDataPoint>فئات بترتيب المصفوفة. لكل عنصر قيمة رقمية وتسمية اختيارية.
[{value: 10, label: "A"}, {value: 20, label: "B"}, {value: 30, label: "C"}]axis?"horizontal" | "vertical"اتجاه الأعمدة: vertical من اليسار إلى اليمين؛ horizontal من الأعلى إلى الأسفل.
"vertical"rangeY?ChartRangeنطاق القيم المرئي [min, max]. عند حذفه يُضبط حسب البيانات ويشمل الصفر.
[0, 100]showLabels?booleanإظهار تسميات الفئات. تبقى المفقودة فارغة ويمنع التخطيط الأصلي التداخل.
trueshowValueLabels?booleanإظهار تسميات رقمية للمحور يتم إنشاؤها تلقائيًا.
truebarThickness?number | "auto"سماكة العمود بالنقاط، أو auto لتناسب تباعد الفئات.
"auto"xAxis?ChartAxisStyleخط المحور الأفقي أسفل الرسم. الافتراضي لون المقدمة بعرض 1pt؛ استخدم stroke بقيمة clear لإخفائه.
{stroke: HDR($env.foreground), lineWidth: 1}yAxis?ChartAxisStyleخط المحور الرأسي يسار الرسم. الافتراضي لون المقدمة بعرض 1pt؛ استخدم stroke بقيمة clear لإخفائه.
{stroke: HDR($env.foreground), lineWidth: 1}background?Paintتعبئة كل عمود. الافتراضي لون مقدمة السمة.
HDR($env.dark ? "white" : "black")cornerRadius?numberنصف قطر زوايا كل عمود، مقيد بحجمه.
0stroke?Paintلون أو تدرج للخط؛ clear يخفيه.
"clear"lineWidth?numberسماكة الخط بالنقاط؛ 0 لا يرسم خطاً.
2strokePosition?"inside" | "center" | "outside"موضع الحد بالنسبة لكل عمود. الافتراضي inside.
"inside"dash?number[]أطوال متناوبة للرسم والفراغ بالنقاط؛ المصفوفة الفارغة خط متصل.
[]dashPhase?numberإزاحة نمط الشرطات بالنقاط.
0contentAnimation?ContentAnimationانتقال محتوى اختياري. يتطلب interpolate نفس عدد الفئات والاتجاه؛ وإلا يُحدّث فورًا.
{type: "interpolate", duration: 0.25}الخصائص المشتركة
width?number | "auto" | "fill"العرض بالنقاط أو الحجم التلقائي أو ملء العنصر الأب.
"fill"height?number | "auto" | "fill"الارتفاع بالنقاط أو الحجم التلقائي أو ملء العنصر الأب.
"fill"x?numberإزاحة بصرية بالنقاط: x يميناً وy لأسفل، دون تغيير المساحة في التخطيط.
0y?numberإزاحة بصرية بالنقاط: x يميناً وy لأسفل، دون تغيير المساحة في التخطيط.
0transform?ViewTransformتحويل View كله دون تغيير التخطيط. الإزاحة بالنقاط، الدوران والميل بالدرجات، المقياس 1 بلا تغيير، والمرساة 0–1.
{rotation: 0}opacity?numberعتامة View بالكامل: 0 شفاف و1 معتم.
1clipped?booleanقص الرسم الذي يتجاوز حدود View.
falseclip?"rectangle" | "ellipse"شكل القص rectangle أو ellipse؛ يقبل Material أيضاً false لتعطيله.
"rectangle"mask?View | nullعرض قناع ألفا. يتم توسيطه دون التأثير على التخطيط؛ تعطل null القناع.
<Circle width="fill" height="fill" background="white"/>zIndex?numberترتيب الرسم بين العناصر الشقيقة؛ القيم الأكبر في الأمام.
0blur?numberنصف قطر التمويه بالنقاط؛ 0 يعطّله.
4innerShadow?DrawingEffectلون التأثير وعتامته ونصف قطر تمويهه وإزاحة x/y؛ المسافات بالنقاط.
{color: HDR("black"), opacity: 0.5, radius: 4, x: 0, y: 2}glow?DrawingEffectلون التأثير وعتامته ونصف قطر تمويهه وإزاحة x/y؛ المسافات بالنقاط.
{color: HDR("cyan"), radius: 8, opacity: 0.8}shadowColor?Colorلون الظل الخارجي.
HDR("black")shadowOpacity?numberعتامة الظل من 0 إلى 1؛ 0 يخفيه.
0shadowRadius?numberنصف قطر تمويه الظل الخارجي بالنقاط.
4shadowX?numberإزاحة الظل بالنقاط: x يميناً وy لأسفل.
0shadowY?numberإزاحة الظل بالنقاط: x يميناً وy لأسفل.
2animations?BarChartAnimation[]تحريك تغير الخاصية. duration/delay بالثواني، from/to للنهايات، repeat/autoreverse للتكرار وwrap للدورة.
[{property: "opacity", duration: 0.25, curve: "easeInOut"}]key?string | numberمعرّف ثابت بين العناصر الشقيقة.
مثال عملي
function main() {
return (
<BarChart
width={260}
height={160}
axis="horizontal"
rangeY={[-50, 100]}
data={[
{ value: 80, label: 'A' },
{ value: -25, label: 'B' },
{ value: 45, label: 'C' },
]}
showLabels={true}
showValueLabels={true}
background={$env.accent}
cornerRadius={4}
xAxis={{ stroke: $env.foreground, dash: [4, 3] }}
yAxis={{ stroke: 'clear' }}
/>
);
}
الحركة
widthheightxyopacitybackgroundcornerRadiusblurshadowColorshadowOpacityshadowRadiusshadowXshadowYbarThicknessstrokelineWidthdashPhasetransform.translateXtransform.translateYtransform.scaleXtransform.scaleYtransform.rotationtransform.skewXtransform.skewYtransform.anchorXtransform.anchorYrangeY.0rangeY.1xAxis.lineWidthxAxis.dashPhaseyAxis.lineWidthyAxis.dashPhasexAxis.strokeyAxis.strokeعند الإغفال
الجدول يوضح سلوك الإغفال المتحقق من التنفيذ؛ الأمثلة ليست افتراضيات. لنتيجة ثابتة مرر قيمة صريحة؛ الأبعاد وألوان الثيم متغيرة بحسب السياق.
| الخصائص | عند الإغفال |
|---|---|
data | [] |
axis | "vertical" |
showLabels | true |
showValueLabels | true |
cornerRadius | 0 |
strokePosition | "inside" |
background | HDR($env.dark ? 'white' : 'black') |
xAxis | { stroke: HDR($env.foreground), lineWidth: 1 } |
yAxis | { stroke: HDR($env.foreground), lineWidth: 1 } |