پرتوپرتو

داده‌نمایی

راهنمای استفاده از نمودارها و ویژوالیزیشن داده در پرتو — رنگ، دسترسی‌پذیری، و الگوها

پلتفرم‌های سوشال لیسنینگ داده-محور هستند. این صفحه اصول و الگوهای استفاده از نمودارها در پرتو را توضیح می‌دهد.


نمودارهای موجود

کامپوننتکاربرد
LineChartروند زمانی (ذکر، engagement در طول زمان)
BarChartمقایسه (پلتفرم‌ها، دسته‌ها)
PieChartتوزیع (احساسات، سهم پلتفرم)
HeatMapتراکم زمانی (بهترین ساعات پست)
WordCloudفراوانی کلمات (هشتگ‌ها، موضوعات)

رنگ‌های نمودار

پنج رنگ پایه

پرتو پنج توکن رنگی اختصاصی برای نمودارها دارد که در هر سه تم کار می‌کنند:

--chart-1  /* رنگ اول — اصلی */
--chart-2  /* رنگ دوم */
--chart-3  /* رنگ سوم */
--chart-4  /* رنگ چهارم */
--chart-5  /* رنگ پنجم */

این رنگ‌ها توسط hook useRootStyles() در زمان رندر خوانده می‌شوند:

import { useRootStyles } from '@parto-system-design/ui'

// داخل نمودارها به صورت خودکار اعمال می‌شود
const styles = useRootStyles()
const chartColors = [
  styles['--chart-1'],
  styles['--chart-2'],
  styles['--chart-3'],
]

رنگ‌های احساسات در نمودار

برای نمودارهای sentiment، از توکن‌های اختصاصی استفاده کنید:

const sentimentColors = {
  positive: styles['--sentiment-positive'],
  neutral:  styles['--sentiment-neutral'],
  negative: styles['--sentiment-negative'],
}

رنگ‌های تعامل در نمودار

const engagementColors = {
  excellent:  styles['--engagement-excellent'],
  'very-good': styles['--engagement-very-good'],
  good:       styles['--engagement-good'],
  average:    styles['--engagement-average'],
  poor:       styles['--engagement-poor'],
  'very-poor': styles['--engagement-very-poor'],
}

تغییر تم

برای مشاهده نمودارها در تم‌های مختلف:

رنگ‌های نمودار به صورت خودکار با تغییر تم به‌روز می‌شوند — نیازی به هیچ تنظیم اضافه‌ای نیست.


الگوهای کاربردی

نمودار خط — روند ذکرها

import { LineChart } from '@parto-system-design/ui'

<LineChart
  data={mentionData}
  isLoading={isLoading}
  xKey="date"
  yKeys={['count']}
  labels={{ count: 'تعداد ذکر' }}
/>

نمودار دایره — توزیع احساسات

import { PieChart } from '@parto-system-design/ui'

<PieChart
  data={[
    { id: 'positive', label: 'مثبت', value: 65 },
    { id: 'neutral',  label: 'خنثی',  value: 25 },
    { id: 'negative', label: 'منفی', value: 10 },
  ]}
  isLoading={isLoading}
/>

نمودار میله‌ای — مقایسه پلتفرم

import { BarChart } from '@parto-system-design/ui'

<BarChart
  data={platformData}
  isLoading={isLoading}
  xKey="platform"
  yKeys={['mentions', 'engagement']}
  labels={{
    mentions: 'ذکر',
    engagement: 'تعامل',
  }}
/>

حالت بارگذاری

همه نمودارها از prop isLoading پشتیبانی می‌کنند. در حالت loading، نمودار با Skeleton جایگزین می‌شود:

<LineChart
  data={data}
  isLoading={isLoading}  // ← Skeleton نمایش می‌دهد
/>

دسترسی‌پذیری نمودارها

نمودارها به تنهایی برای screen readerها قابل درک نیستند. همیشه یک خلاصه متنی ارائه دهید:

<div>
  <LineChart data={data} isLoading={isLoading} />

  {/* خلاصه برای screen readers */}
  <p className="sr-only">
    نمودار روند ذکرها در ۳۰ روز گذشته. بیشترین ذکر در تاریخ ۱۵ اسفند با ۲۳۴ مورد بوده است.
  </p>
</div>

بهترین روش‌ها

انتخاب نمودار مناسب

سوالنمودار پیشنهادی
روند در طول زمان چیست؟LineChart
چند دسته را با هم مقایسه کنم؟BarChart
سهم هر بخش چقدر است؟PieChart
پیک‌های زمانی کجاست؟HeatMap
پرتکرارترین کلمات کدام‌اند؟WordCloud

محدودیت‌ها

  • برای PieChart بیش از ۵ بخش استفاده نکنید — خوانایی کاهش می‌یابد
  • برای LineChart بیش از ۴ خط هم‌زمان نمایش ندهید
  • همیشه isLoading را هندل کنید
  • همیشه sr-only خلاصه متنی اضافه کنید