نمودار پراکندگی (PartoScatterChart)
نمودار scatter/bubble با پشتیبانی از اندازه bubble (zKey)، رنگبندی بر اساس گروه، و برچسبهای محور فارسی.
معرفی
PartoScatterChart نقاط دوبعدی را روی محور X/Y رسم میکند. با zKey اختیاری اندازه نقطه (bubble chart) و با groupKey رنگبندی بر اساس دستهبندی.
چه زمانی استفاده کنیم:
- مقایسه دو متریک برای چند entity (مثل نرخ تعامل × رشد برای چند پیج)
- نمایش outlier ها در یک dataset
- نمایش سه متریک همزمان با bubble (x، y، z)
- تحلیل کلاستر در افکارسنجی
چه زمانی استفاده نکنیم:
- سری زمانی — از
PartoLineChartاستفاده کنید - مقایسه چند category — از
PartoBarChartاستفاده کنید - نمایش توزیع سهم — از
PartoPieChartاستفاده کنید
زمین بازی
با تغییر تنظیمات زیر، پیشنمایش زنده را مشاهده کنید.
استفاده
'use client'
import { PartoScatterChart } from '@parto-system-design/ui'
const data = [
{ x: 0.8, y: 1.2, z: 800, label: 'پیج الف', group: 'micro' },
{ x: 3.5, y: 5.2, z: 2500, label: 'پیج ج', group: 'mid' },
{ x: 6.2, y: 4.1, z: 5100, label: 'پیج و', group: 'macro' },
]
<div style={{ height: 320 }}>
<PartoScatterChart
data={data}
xKey="x" yKey="y" zKey="z" labelKey="label" groupKey="group"
xLabel="نرخ تعامل" yLabel="رشد" xUnit="٪" yUnit="٪"
/>
</div>حالتها و انواع
scatter ساده — تعامل در برابر reach
سادهترین حالت بدون zKey و groupKey. همه نقاط هماندازه و همرنگ. مناسب برای بررسی correlation دو متریک کمی.
const data = [
{ engagement: 1.2, reach: 8000 },
{ engagement: 3.5, reach: 22000 },
{ engagement: 5.1, reach: 14000 },
{ engagement: 2.8, reach: 31000 },
]
<PartoScatterChart
data={data}
xKey="engagement"
yKey="reach"
xLabel="نرخ تعامل"
yLabel="reach"
xUnit="٪"
/>bubble — افزودن بُعد سوم با zKey
با zKey اندازه نقطه متناسب با بُعد سوم (مثلاً تعداد دنبالکننده) میشود. با zRange بازه radius را کنترل کنید.
const data = [
{ x: 1.2, y: 8000, followers: 500, label: 'پیج خرد' },
{ x: 3.5, y: 22000, followers: 25000, label: 'پیج میانی' },
{ x: 2.8, y: 31000, followers: 120000, label: 'پیج کلان' },
]
<PartoScatterChart
data={data}
xKey="x" yKey="y" zKey="followers" labelKey="label"
zRange={[60, 600]}
xLabel="نرخ تعامل" yLabel="reach"
/>چند سری با groupKey — رنگبندی بر اساس احساس
هر مقدار متفاوت در فیلد groupKey به یک رنگ palette متفاوت map میشود. مناسب برای متمایز کردن کلاسترها (مثلاً پستهای مثبت/منفی/خنثی).
const data = [
{ x: 2, y: 30, sentiment: 'positive', label: 'پست ۱' },
{ x: 4, y: 50, sentiment: 'positive', label: 'پست ۲' },
{ x: 1, y: 20, sentiment: 'negative', label: 'پست ۳' },
{ x: 3, y: 15, sentiment: 'negative', label: 'پست ۴' },
{ x: 2.5, y: 25, sentiment: 'neutral', label: 'پست ۵' },
]
<PartoScatterChart
data={data}
xKey="x" yKey="y" labelKey="label" groupKey="sentiment"
xLabel="ساعت انتشار" yLabel="تعداد بازدید"
/>تنظیم دامنه محورها برای quadrant analysis
با xDomain و yDomain میتوانید دامنه ثابت تعیین کنید تا مقایسه بین داشبوردهای مختلف معنادار باشد. برای تحلیل چارکبندی (high-engagement / low-reach و …) مفید است.
<PartoScatterChart
data={data}
xKey="engagement"
yKey="reach"
xDomain={[0, 10]}
yDomain={[0, 50000]}
xLabel="نرخ تعامل"
yLabel="reach"
enableGrid={true}
/>حالت خالی و بارگذاری
<PartoScatterChart data={[]} xKey="x" yKey="y" />
<PartoScatterChart data={[]} xKey="x" yKey="y" isLoading={true} />راهنمای استفاده
بکنید
- برای correlation دو متریک کمی استفاده کنید — تعامل در برابر reach، follower در برابر influence، رشد در برابر کیفیت.
- وقتی بُعد سوم اهمیت دارد،
zKeyرا برای bubble size اضافه کنید (مثل تعداد پست یا حجم). - ازgroupKeyبرای رنگبندی دستهها استفاده کنید تا کلاسترها بصری متمایز شوند.
نکنید
- برای category × value استفاده نکنید — از
PartoBarChartاستفاده کنید. - با کمتر از ۲۰ نقطه استفاده نکنید — توزیع و الگو واضح نیست و scatter بیمعنا میشود. - برای سری زمانی استفاده نکنید — ازPartoLineChartاستفاده کنید.
Props
دسترسیپذیری
- wrapper با
role="img"+aria-labelمحلی. - هر نقطه میتواند
aria-labelازlabelKeyبگیرد. - برچسب محور فارسی/عربی؛ ticks خودکار با locale فرمت میشوند.
کامپوننتهای مرتبط
- PartoLineChart — برای سری زمانی
- PartoBarChart — برای مقایسه category
- ComparisonRadar — مقایسه چند entity در چند بعد