Radar Chart

Charts
Data Visualization

Multi-variable comparison for skills, features, and performance metrics with spider/radar visualization.

Preview

Radar chart cards with single and dual series

Skills Assessment

Current vs Target

JavaScriptReactTypeScriptNode.jsCSSTesting
Current
Target

Team Performance

Q4 2024 metrics

VelocityQualityCollaborationInnovationDeliveryCommunication
Score

Multiple Series

Compare three products across different features

Product Comparison

Feature analysis

PerformanceUsabilityFeaturesSupportPrice
Product A
Product B
Product C

Standalone Chart

RadarChart component without card wrapper

JavaScriptReactTypeScriptNode.jsCSSTesting
Current Level
Target Level

Props

Component API reference

RadarChart

PropTypeDefaultDescription
data*Record<string, unknown>[]Data points with values for each axis
series*Series[]Series config with key, label, and color
labelKey*stringData key for axis labels
maxValuenumber100Maximum value for scale
sizenumber300Chart size in pixels
levelsnumber5Number of grid levels
fillOpacitynumber0.25Area fill opacity

RadarChartCard

PropTypeDefaultDescription
title*stringCard title
subtitlestringCard subtitle

Usage

Import and implementation examples

import { RadarChart, RadarChartCard } from '@/blocks/charts/radar-chart'

// Basic Radar Chart
<RadarChart
  data={[
    { skill: 'JavaScript', level: 90 },
    { skill: 'React', level: 85 },
    { skill: 'TypeScript', level: 75 },
    { skill: 'Node.js', level: 70 },
    { skill: 'CSS', level: 80 },
  ]}
  series={[
    { key: 'level', label: 'Skill Level', color: 'var(--color-indigo-500)' }
  ]}
  labelKey="skill"
  maxValue={100}
/>

// Multiple Series Comparison
<RadarChart
  data={productData}
  series={[
    { key: 'productA', label: 'Product A', color: 'var(--color-indigo-500)' },
    { key: 'productB', label: 'Product B', color: 'var(--color-teal-500)' },
    { key: 'productC', label: 'Product C', color: 'var(--color-amber-500)' },
  ]}
  labelKey="feature"
  maxValue={100}
/>

// Radar Chart Card
<RadarChartCard
  title="Skills Assessment"
  subtitle="Current vs Target"
  data={skillsData}
  series={[
    { key: 'current', label: 'Current', color: 'var(--color-indigo-500)' },
    { key: 'target', label: 'Target', color: 'var(--color-teal-500)' },
  ]}
  labelKey="skill"
  maxValue={100}
/>

Features

Built-in functionality

  • Multiple series: Compare multiple data series on one chart
  • Interactive hover: Highlight series on hover
  • Configurable grid: Adjustable grid levels and max value
  • Animated transitions: Smooth animation on data changes
  • Legend with highlighting: Click legend to focus series
  • Dark mode: Full dark mode support

Accessibility

Accessibility considerations

ARIA Attributes

Uses role="img" for chart containeraria-label describes the chart contentLegend provides text alternative

Keyboard Navigation

KeyAction
N/ARadar chart is not keyboard interactive

Notes

  • Consider providing data table alternative
  • Legend shows all series with labels
  • Color is supplemented with series names