رادار مقایسه (ComparisonRadar)
لایه composition روی PartoRadarChart برای مقایسه دو یا چند entity در چند بعد، با highlight خودکار برنده هر معیار و شمارش برتریها.
معرفی
ComparisonRadar برای مقایسه چند entity (پیج، worker، analysis، …) در چند معیار همزمان است. بهطور خودکار برنده هر معیار را تشخیص میدهد، کنار برچسب محور تاج میگذارد، و در legend تعداد برتریها را برای هر entity نمایش میدهد.
روی PartoRadarChart ساخته شده و فقط لایه دامنهای «مقایسه» اضافه میکند.
چه زمانی استفاده کنیم:
- مقایسه پیج شما با رقبا در ۳-۸ معیار (تعامل، رشد، ثبات، …)
- مقایسه دو worker Booster در پنل ارزیابی عملیاتی
- مقایسه نسخه A/B یک کمپین
- اسلاید bulletin «تحلیل رقابتی»
چه زمانی استفاده نکنیم:
- فقط یک معیار — از
EngagementRateBenchmarkیاCriterionScoreCardاستفاده کنید - بیشتر از ۵ entity — رادار شلوغ میشود، از
BarChartافقی استفاده کنید - معیارهای همواحد نیستند و scale قابل مقایسه ندارند — رادار گمراهکننده میشود
- radar عمومی بدون مفهوم «برنده» — از
PartoRadarChartمستقیم استفاده کنید
مقایسه پیجها
۳۰ روز اخیر — ۴ بعد کلیدی
زمین بازی
با تغییر تنظیمات زیر، پیشنمایش زنده را مشاهده کنید.
استفاده
'use client'
import { ComparisonRadar } from '@parto-system-design/ui'
export function PageComparison({ pages }) {
return (
<ComparisonRadar
title="مقایسه پیجها"
description="۳۰ روز اخیر"
metrics={[
{ key: 'engagement', label: 'تعامل' },
{ key: 'growth', label: 'رشد' },
{ key: 'consistency', label: 'ثبات' },
{ key: 'quality', label: 'کیفیت محتوا' },
]}
entities={pages.map((p) => ({
key: p.id,
label: p.username,
values: p.scores,
}))}
/>
)
}متریک معکوس (higherIsBetter=false)
عملکرد worker
شامل متریکهای معکوس (نرخ خطا، زمان پاسخ)
برای متریکهایی که مقدار کمتر = بهتر (مثل نرخ خطا، زمان پاسخ)، higherIsBetter: false را تنظیم کنید:
{ key: 'errorRate', label: 'نرخ خطا', higherIsBetter: false }با ۳ entity
مقایسه سه نسخه کمپین
رادار خوانا تا ۵ entity میماند. برای بیش از ۳ entity، رنگهای متمایز خودکار از palette chart گرفته میشوند.
تساوی — بدون تاج
مقایسه با تساوی
چند معیار در تساوی بین دو entity
وقتی دو یا چند entity در یک معیار برابر هستند، هیچکدام تاج نمیگیرند (tie). در legend label «تساوی» نمایش داده میشود.
بدون legend
برای embed در کارتهای کوچکتر، showLegend={false}.
رنگهای سفارشی
<ComparisonRadar
metrics={[...]}
entities={[
{ key: 'a', label: 'برند A', color: 'hsl(var(--brand-default))', values: {...} },
{ key: 'b', label: 'برند B', color: 'hsl(var(--destructive-default))', values: {...} },
]}
/>برای هر entity میتوانید یک CSS color (hex، rgb، hsl، یا hsl(var(--token))) پاس دهید تا override رنگ palette پیشفرض شود.
راهنمای استفاده
بکنید
- برای مقایسه چندمعیاری بین ۳ تا ۷ entity استفاده کنید — پروفایل creator، نمره معیارها، نسخههای A/B کمپین. - معیارها
را با scale همواحد یا normalizeشده پاس دهید تا geometry رادار قابل مقایسه باشد. - برای متریکهای معکوس (نرخ خطا،
زمان پاسخ)
higherIsBetter: falseرا تنظیم کنید تا winner درست محاسبه شود.
نکنید
- بیشتر از ۷ محور (معیار) قرار ندهید — رادار بصری ناخوانا میشود. - وقتی یک متریک بهشدت بر بقیه غالب است استفاده
نکنید — مقادیر بهصورت ناخوانا normalize میشوند و شکل رادار گمراهکننده میشود. - برای سری زمانی یا مقایسه بیش از ۵
entity استفاده نکنید — از
PartoLineChartیاBarChartافقی استفاده کنید.
Props
ComparisonMetric
ComparisonEntity
helpers
import { computeComparisonWinners, countComparisonWins, type ComparisonWinner } from '@parto-system-design/ui'
const winners = computeComparisonWinners(metrics, entities)
// winners['engagement'] → { winnerKey: 'a', topKeys: ['a'], topValue: 85 }
const wins = countComparisonWins(winners)
// wins → { a: 2, b: 1 } — outright wins per entity, ties ignoredدسترسیپذیری
- chart wrapper دارای
aria-labellocalized است — screen reader میفهمد که این رادار مقایسه است. - Legend tileها متن + رنگ swatch + شمارش برتری دارند — معنا فقط با رنگ منتقل نمیشود.
- تاج معیار برنده یک emoji در subject string است — screen reader آن را به عنوان آیکون برنده میخواند.
data-topروی tile entity برتر برای CSS targeting.role="img"از PartoRadarChart به ارث میرسد.
کامپوننتهای مرتبط
- PartoRadarChart — رادار عمومی بدون مفهوم مقایسه. این کامپوننت روی آن بنا شده
- EngagementRateBenchmark — مقایسه یک متریک با benchmarkهای مرجع (نه دو entity)
- CriterionScoreCard — نمایش یک معیار برای یک entity (نه مقایسه)
- ComparisonCard — کارت مقایسه دو entity (text-based، نه رادار)
- BarChart — وقتی بیش از ۵ entity دارید، از bar chart افقی استفاده کنید