نمودار دایرهای (Pie Chart)
نمودار دایرهای (Pie Chart) کامپوننت نمایش داده در نمودار دایرهای
معرفی
کامپوننت PartoPieChart برای نمایش نسبتها و درصدها به صورت نمودار دایرهای استفاده میشود. این کامپوننت بهطور خودکار از تم رنگی سیستم طراحی استفاده میکند.
پیشنمایش
دایره کامل حلقهای (Donut)
استفاده
import { PartoPieChart } from '@parto/ui' ;
const data = [
{ id : 'محصول A' , label : 'محصول A' , value : 40 },
{ id : 'محصول B' , label : 'محصول B' , value : 25 },
{ id : 'محصول C' , label : 'محصول C' , value : 20 },
{ id : 'محصول D' , label : 'محصول D' , value : 15 },
] ;
< div className = "h-[400px]" >
< PartoPieChart
data = { data }
innerRadius = { 0.5 }
padAngle = { 0.7 }
cornerRadius = { 3 }
activeOuterRadiusOffset = { 8 }
enableArcLinkLabels = { false }
/>
</ div >
نمودار حلقهای (Donut)
< PartoPieChart
data = { data }
innerRadius = { 0.5 }
padAngle = { 0.7 }
cornerRadius = { 3 }
/>
بدون برچسبهای اتصال
< PartoPieChart
data = { data }
enableArcLinkLabels = { false }
enableArcLabels = { true }
/>
با انیمیشن hover
< PartoPieChart
data = { data }
activeOuterRadiusOffset = { 8 }
activeInnerRadiusOffset = { 8 }
/>
با Legend
< PartoPieChart
data = { data }
margin = {{ top : 40 , right : 80 , bottom : 80 , left : 80 }}
legends = { [
{
anchor : 'bottom' ,
direction : 'row' ,
justify : false ,
translateX : 0 ,
translateY : 56 ,
itemsSpacing : 0 ,
itemWidth : 100 ,
itemHeight : 18 ,
itemDirection : 'right-to-left' ,
itemOpacity : 1 ,
symbolSize : 18 ,
symbolShape : 'circle' ,
},
] }
/>
با تنظیمات پیشرفته
< PartoPieChart
data = { data }
margin = {{ top : 40 , right : 80 , bottom : 80 , left : 80 }}
innerRadius = { 0.5 }
padAngle = { 0.7 }
cornerRadius = { 3 }
activeOuterRadiusOffset = { 8 }
borderWidth = { 1 }
arcLinkLabelsSkipAngle = { 10 }
arcLinkLabelsTextColor = "hsl(var(--foreground))"
arcLinkLabelsThickness = { 2 }
arcLabelsSkipAngle = { 10 }
arcLabelsTextColor = {{
from : 'color' ,
modifiers : [[ 'darker' , 2 ]] ,
}}
/>
Props اصلی
Prop Type Default Description dataArray<{id, value, label}>- دادههای نمودار (الزامی) innerRadiusnumber0شعاع داخلی (0 برای pie، >0 برای donut) padAnglenumber0فاصله بین قطعات cornerRadiusnumber0شعاع گوشهها marginobject- حاشیه نمودار
Props تعامل
Prop Type Default Description activeOuterRadiusOffsetnumber0افزایش شعاع خارجی در hover activeInnerRadiusOffsetnumber0افزایش شعاع داخلی در hover
Props برچسب
Prop Type Default Description enableArcLabelsbooleantrueنمایش برچسب روی قطعات enableArcLinkLabelsbooleantrueنمایش برچسبهای اتصال arcLabelsSkipAnglenumber0حداقل زاویه برای نمایش برچسب arcLinkLabelsSkipAnglenumber0حداقل زاویه برای نمایش برچسب اتصال
تنظیمات رنگ
// استفاده از رنگهای خودکار تم
< PartoPieChart data = { data } />
// تنظیم رنگ سفارشی
< PartoPieChart
data = { data }
colors = {{ scheme : 'nivo' }}
/>
// رنگ از داده
const dataWithColor = [
{ id : 'دسته ۱' , value : 35 , color : 'hsl(var(--chart-1))' },
{ id : 'دسته ۲' , value : 25 , color : 'hsl(var(--chart-2))' },
] ;
تمبندی خودکار
این کامپوننت بهطور خودکار:
از رنگهای --chart-1 تا --chart-5 استفاده میکند
با تم dark/light سازگار است
tooltip با رنگ پسزمینه مناسب
برچسبها با رنگ foreground
نکات بهینهسازی
برای دادههای کم از pie استفاده کنید
برای دادههای زیاد از donut بهتر است
arcLabelsSkipAngle برای جلوگیری از شلوغی برچسبها
در موبایل margin کمتری در نظر بگیرید
ملاحظات RTL
برچسبها راستچین هستند
Legend در موقعیت مناسب RTL
دادهها میتوانند فارسی باشند
جهت چرخش برای RTL تنظیم شده
مثال کامل در کارت
< Card >
< CardHeader >
< CardTitle > توزیع فروش </ CardTitle >
< CardDescription > نسبت فروش بر اساس دسته </ CardDescription >
</ CardHeader >
< CardContent >
< div className = "h-[400px]" >
< PartoPieChart
data = { data }
margin = {{ top : 40 , right : 80 , bottom : 80 , left : 80 }}
innerRadius = { 0.5 }
padAngle = { 0.7 }
cornerRadius = { 3 }
activeOuterRadiusOffset = { 8 }
arcLinkLabelsSkipAngle = { 10 }
arcLabelsSkipAngle = { 10 }
/>
</ div >
</ CardContent >
</ Card >
مقایسه با Bar Chart
ویژگی Pie Chart Bar Chart کاربرد نسبتها مقایسه مقادیر داده کم (کمتر از 10) بدون محدودیت دقت متوسط بالا فضا کم بیشتر