پرتوپرتو

نمودار پراکندگی (PartoScatterChart)

نمودار scatter/bubble با پشتیبانی از اندازه bubble (zKey)، رنگ‌بندی بر اساس گروه، و برچسب‌های محور فارسی.

معرفی

PartoScatterChart نقاط دوبعدی را روی محور X/Y رسم می‌کند. با zKey اختیاری اندازه نقطه (bubble chart) و با groupKey رنگ‌بندی بر اساس دسته‌بندی.

چه زمانی استفاده کنیم:

  • مقایسه دو متریک برای چند entity (مثل نرخ تعامل × رشد برای چند پیج)
  • نمایش outlier ها در یک dataset
  • نمایش سه متریک همزمان با bubble (x، y، z)
  • تحلیل کلاستر در افکارسنجی

چه زمانی استفاده نکنیم:

  • سری زمانی — از PartoLineChart استفاده کنید
  • مقایسه چند category — از PartoBarChart استفاده کنید
  • نمایش توزیع سهم — از PartoPieChart استفاده کنید

زمین بازی

با تغییر تنظیمات زیر، پیش‌نمایش زنده را مشاهده کنید.

زمین بازی
تنظیمات
محتوا
حالت
کد این نمونه به‌صورت خودکار قابل تولید نیست — برای کد آماده‌ی copy/paste به بخش «استفاده» در بالای صفحه مراجعه کنید.

استفاده

'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

Prop

Type

دسترسی‌پذیری

  • wrapper با role="img" + aria-label محلی.
  • هر نقطه می‌تواند aria-label از labelKey بگیرد.
  • برچسب محور فارسی/عربی؛ ticks خودکار با locale فرمت می‌شوند.

کامپوننت‌های مرتبط