Component Library
Browse and explore components
Radar chart
A Radar Chart is a data visualization component used to display multivariate data across several variables, with each shown on a separate axis from a common center. It highlights patterns and comparisons by forming a closed shape, making it easy to spot strengths and differences across categories.
Default
Component Code
Copy Code
'use client'
import { PolarAngleAxis, PolarGrid, Radar, RadarChart } from 'recharts'
import {
ChartConfig,
ChartContainer,
ChartTooltip,
ChartTooltipContent,
} from '@/components/ui/chart'
export const description = 'A radar chart'
const chartData = [
{ month: 'January', desktop: 186 },
{ month: 'February', desktop: 305 },
{ month: 'March', desktop: 237 },
{ month: 'April', desktop: 273 },
{ month: 'May', desktop: 209 },
{ month: 'June', desktop: 214 },
]
const chartConfig = {
desktop: {
label: 'Desktop',
color: 'var(--chart-1)',
},
} satisfies ChartConfig
export default function ChartRadarDefaultCode() {
return (
<>
<ChartContainer config={chartConfig}>
<RadarChart data={chartData}>
<ChartTooltip cursor={false} content={<ChartTooltipContent />} />
<PolarAngleAxis dataKey='month' />
<PolarGrid />
<Radar
dataKey='desktop'
fill='var(--color-primary)'
fillOpacity={0.6}
/>
</RadarChart>
</ChartContainer>
</>
)
}
Dots
Component Code
Copy Code
'use client'
import { PolarAngleAxis, PolarGrid, Radar, RadarChart } from 'recharts'
import {
ChartConfig,
ChartContainer,
ChartTooltip,
ChartTooltipContent,
} from '@/components/ui/chart'
export const description = 'A radar chart with dots'
const chartData = [
{ month: 'January', desktop: 186 },
{ month: 'February', desktop: 305 },
{ month: 'March', desktop: 237 },
{ month: 'April', desktop: 273 },
{ month: 'May', desktop: 209 },
{ month: 'June', desktop: 214 },
]
const chartConfig = {
desktop: {
label: 'Desktop',
color: 'var(--chart-1)',
},
} satisfies ChartConfig
export default function ChartRadarDotsCode() {
return (
<>
<ChartContainer config={chartConfig}>
<RadarChart data={chartData}>
<ChartTooltip cursor={false} content={<ChartTooltipContent />} />
<PolarAngleAxis dataKey='month' />
<PolarGrid />
<Radar
dataKey='desktop'
fill='var(--color-secondary)'
fillOpacity={0.6}
dot={{
r: 4,
fillOpacity: 1,
}}
/>
</RadarChart>
</ChartContainer>
</>
)
}
Lines Only
Component Code
Copy Code
'use client'
import { PolarAngleAxis, PolarGrid, Radar, RadarChart } from 'recharts'
import {
ChartConfig,
ChartContainer,
ChartTooltip,
ChartTooltipContent,
} from '@/components/ui/chart'
export const description = 'A radar chart with lines only'
const chartData = [
{ month: 'January', desktop: 186, mobile: 160 },
{ month: 'February', desktop: 185, mobile: 170 },
{ month: 'March', desktop: 207, mobile: 180 },
{ month: 'April', desktop: 173, mobile: 160 },
{ month: 'May', desktop: 160, mobile: 190 },
{ month: 'June', desktop: 174, mobile: 204 },
]
const chartConfig = {
desktop: {
label: 'Desktop',
color: 'var(--chart-1)',
},
mobile: {
label: 'Mobile',
color: 'var(--chart-2)',
},
} satisfies ChartConfig
export default function ChartRadarLinesOnlyCode() {
return (
<>
<ChartContainer config={chartConfig}>
<RadarChart data={chartData}>
<ChartTooltip
cursor={false}
content={<ChartTooltipContent indicator='line' />}
/>
<PolarAngleAxis dataKey='month' />
<PolarGrid radialLines={false} />
<Radar
dataKey='desktop'
fill='var(--color-primary)'
fillOpacity={0}
stroke='var(--color-primary)'
strokeWidth={2}
/>
<Radar
dataKey='mobile'
fill='var(--color-secondary)'
fillOpacity={0}
stroke='var(--color-secondary)'
strokeWidth={2}
/>
</RadarChart>
</ChartContainer>
</>
)
}
Custom Label
Component Code
Copy Code
'use client'
import { PolarAngleAxis, PolarGrid, Radar, RadarChart } from 'recharts'
import {
ChartConfig,
ChartContainer,
ChartTooltip,
ChartTooltipContent,
} from '@/components/ui/chart'
export const description = 'A radar chart with a custom label'
const chartData = [
{ month: 'January', desktop: 186, mobile: 80 },
{ month: 'February', desktop: 305, mobile: 200 },
{ month: 'March', desktop: 237, mobile: 120 },
{ month: 'April', desktop: 73, mobile: 190 },
{ month: 'May', desktop: 209, mobile: 130 },
{ month: 'June', desktop: 214, mobile: 140 },
]
const chartConfig = {
desktop: {
label: 'Desktop',
color: 'var(--chart-1)',
},
mobile: {
label: 'Mobile',
color: 'var(--chart-2)',
},
} satisfies ChartConfig
export default function ChartRadarLabelCustomCode() {
return (
<>
<ChartContainer config={chartConfig}>
<RadarChart
data={chartData}
margin={{
top: 10,
right: 10,
bottom: 10,
left: 10,
}}>
<ChartTooltip
cursor={false}
content={<ChartTooltipContent indicator='line' />}
/>
<PolarAngleAxis
dataKey='month'
tick={({ x, y, textAnchor, value, index, ...props }) => {
const data = chartData[index]
return (
<text
x={x}
y={index === 0 ? y - 10 : y}
textAnchor={textAnchor}
fontSize={13}
fontWeight={500}
{...props}>
<tspan>
{data.desktop}
</tspan>
<tspan className='fill-muted-foreground'>/</tspan>
<tspan>
{data.mobile}
</tspan>
<tspan
x={x}
dy={'1rem'}
fontSize={12}
className='fill-muted-foreground'>
{data.month}
</tspan>
</text>
)
}}
/>
<PolarGrid />
<Radar
dataKey='desktop'
fill='var(--color-primary)'
fillOpacity={0.6}
/>
<Radar dataKey='mobile' fill='var(--color-secondary)' />
</RadarChart>
</ChartContainer>
</>
)
}
Grid Custom
Component Code
Copy Code
'use client'
import { PolarAngleAxis, PolarGrid, Radar, RadarChart } from 'recharts'
import {
ChartConfig,
ChartContainer,
ChartTooltip,
ChartTooltipContent,
} from '@/components/ui/chart'
export const description = 'A radar chart with a custom grid'
const chartData = [
{ month: 'January', desktop: 186 },
{ month: 'February', desktop: 305 },
{ month: 'March', desktop: 237 },
{ month: 'April', desktop: 273 },
{ month: 'May', desktop: 209 },
{ month: 'June', desktop: 214 },
]
const chartConfig = {
desktop: {
label: 'Desktop',
color: 'var(--chart-1)',
},
} satisfies ChartConfig
export default function ChartRadarGridCustomCode() {
return (
<>
<ChartContainer config={chartConfig}>
<RadarChart data={chartData}>
<ChartTooltip
cursor={false}
content={<ChartTooltipContent hideLabel />}
/>
<PolarGrid radialLines={false} polarRadius={[90]} strokeWidth={1} />
<PolarAngleAxis dataKey='month' />
<Radar
dataKey='desktop'
fill='var(--color-primary)'
fillOpacity={0.6}
/>
</RadarChart>
</ChartContainer>
</>
)
}
Grid None
Component Code
Copy Code
'use client'
import { PolarAngleAxis, Radar, RadarChart } from 'recharts'
import {
ChartConfig,
ChartContainer,
ChartTooltip,
ChartTooltipContent,
} from '@/components/ui/chart'
export const description = 'A radar chart with no grid'
const chartData = [
{ month: 'January', desktop: 186 },
{ month: 'February', desktop: 305 },
{ month: 'March', desktop: 237 },
{ month: 'April', desktop: 273 },
{ month: 'May', desktop: 209 },
{ month: 'June', desktop: 214 },
]
const chartConfig = {
desktop: {
label: 'Desktop',
color: 'var(--chart-1)',
},
} satisfies ChartConfig
export default function ChartRadarGridNoneCode() {
return (
<>
<ChartContainer config={chartConfig}>
<RadarChart data={chartData}>
<ChartTooltip
cursor={false}
content={<ChartTooltipContent hideLabel />}
/>
<PolarAngleAxis dataKey='month' />
<Radar
dataKey='desktop'
fill='var(--color-secondary)'
fillOpacity={0.6}
dot={{
r: 4,
fillOpacity: 1,
}}
/>
</RadarChart>
</ChartContainer>
</>
)
}
Grid Circle
Component Code
Copy Code
'use client'
import { PolarAngleAxis, PolarGrid, Radar, RadarChart } from 'recharts'
import {
ChartConfig,
ChartContainer,
ChartTooltip,
ChartTooltipContent,
} from '@/components/ui/chart'
export const description = 'A radar chart with a grid and circle'
const chartData = [
{ month: 'January', desktop: 186 },
{ month: 'February', desktop: 305 },
{ month: 'March', desktop: 237 },
{ month: 'April', desktop: 273 },
{ month: 'May', desktop: 209 },
{ month: 'June', desktop: 214 },
]
const chartConfig = {
desktop: {
label: 'Desktop',
color: 'var(--chart-1)',
},
} satisfies ChartConfig
export default function ChartRadarGridCircleCode() {
return (
<>
<ChartContainer config={chartConfig}>
<RadarChart data={chartData}>
<ChartTooltip
cursor={false}
content={<ChartTooltipContent hideLabel />}
/>
<PolarGrid gridType='circle' />
<PolarAngleAxis dataKey='month' />
<Radar
dataKey='desktop'
fill='var(--color-primary)'
fillOpacity={0.6}
dot={{
r: 4,
fillOpacity: 1,
}}
/>
</RadarChart>
</ChartContainer>
</>
)
}
Grid Circle - No lines
Component Code
Copy Code
'use client'
import { PolarAngleAxis, PolarGrid, Radar, RadarChart } from 'recharts'
import {
ChartConfig,
ChartContainer,
ChartTooltip,
ChartTooltipContent,
} from '@/components/ui/chart'
export const description = 'A radar chart with a grid and circle fill'
const chartData = [
{ month: 'January', desktop: 186 },
{ month: 'February', desktop: 305 },
{ month: 'March', desktop: 237 },
{ month: 'April', desktop: 203 },
{ month: 'May', desktop: 209 },
{ month: 'June', desktop: 214 },
]
const chartConfig = {
desktop: {
label: 'Desktop',
color: 'var(--chart-1)',
},
} satisfies ChartConfig
export default function ChartRadarGridCircleNoLinesCode() {
return (
<>
<ChartContainer config={chartConfig}>
<RadarChart data={chartData}>
<ChartTooltip
cursor={false}
content={<ChartTooltipContent hideLabel />}
/>
<PolarGrid gridType='circle' radialLines={false} />
<PolarAngleAxis dataKey='month' />
<Radar
dataKey='desktop'
fill='var(--color-secondary)'
fillOpacity={0.6}
dot={{
r: 4,
fillOpacity: 1,
}}
/>
</RadarChart>
</ChartContainer>
</>
)
}
Grid Circle Filled
Component Code
Copy Code
'use client'
import { PolarAngleAxis, PolarGrid, Radar, RadarChart } from 'recharts'
import {
ChartConfig,
ChartContainer,
ChartTooltip,
ChartTooltipContent,
} from '@/components/ui/chart'
export const description = 'A radar chart with a grid and circle fill'
const chartData = [
{ month: 'January', desktop: 186 },
{ month: 'February', desktop: 285 },
{ month: 'March', desktop: 237 },
{ month: 'April', desktop: 203 },
{ month: 'May', desktop: 209 },
{ month: 'June', desktop: 264 },
]
const chartConfig = {
desktop: {
label: 'Desktop',
color: 'var(--chart-1)',
},
} satisfies ChartConfig
export default function ChartRadarGridCircleFillCode() {
return (
<>
<ChartContainer config={chartConfig}>
<RadarChart data={chartData}>
<ChartTooltip cursor={false} content={<ChartTooltipContent />} />
<PolarGrid
className='fill-(--color-secondary) opacity-20'
gridType='circle'
/>
<PolarAngleAxis dataKey='month' />
<Radar
dataKey='desktop'
fill='var(--color-primary)'
fillOpacity={0.5}
/>
</RadarChart>
</ChartContainer>
</>
)
}
Grid Filled
Component Code
Copy Code
'use client'
import { PolarAngleAxis, PolarGrid, Radar, RadarChart } from 'recharts'
import {
ChartConfig,
ChartContainer,
ChartTooltip,
ChartTooltipContent,
} from '@/components/ui/chart'
export const description = 'A radar chart with a grid filled'
const chartData = [
{ month: 'January', desktop: 186 },
{ month: 'February', desktop: 285 },
{ month: 'March', desktop: 237 },
{ month: 'April', desktop: 203 },
{ month: 'May', desktop: 209 },
{ month: 'June', desktop: 264 },
]
const chartConfig = {
desktop: {
label: 'Desktop',
color: 'var(--chart-1)',
},
} satisfies ChartConfig
export default function ChartRadarGridFillCode() {
return (
<>
<ChartContainer config={chartConfig}>
<RadarChart data={chartData}>
<ChartTooltip
cursor={false}
content={<ChartTooltipContent hideLabel />}
/>
<PolarGrid className='fill-(--color-secondary) opacity-20' />
<PolarAngleAxis dataKey='month' />
<Radar
dataKey='desktop'
fill='var(--color-primary)'
fillOpacity={0.5}
/>
</RadarChart>
</ChartContainer>
</>
)
}
Multiple
Component Code
Copy Code
'use client'
import { PolarAngleAxis, PolarGrid, Radar, RadarChart } from 'recharts'
import {
ChartConfig,
ChartContainer,
ChartTooltip,
ChartTooltipContent,
} from '@/components/ui/chart'
export const description = 'A radar chart with multiple data'
const chartData = [
{ month: 'January', desktop: 186, mobile: 80 },
{ month: 'February', desktop: 305, mobile: 200 },
{ month: 'March', desktop: 237, mobile: 120 },
{ month: 'April', desktop: 73, mobile: 190 },
{ month: 'May', desktop: 209, mobile: 130 },
{ month: 'June', desktop: 214, mobile: 140 },
]
const chartConfig = {
desktop: {
label: 'Desktop',
color: 'var(--chart-1)',
},
mobile: {
label: 'Mobile',
color: 'var(--chart-2)',
},
} satisfies ChartConfig
export default function ChartRadarMultipleCode() {
return (
<>
<ChartContainer config={chartConfig}>
<RadarChart data={chartData}>
<ChartTooltip
cursor={false}
content={<ChartTooltipContent indicator='line' />}
/>
<PolarAngleAxis dataKey='month' />
<PolarGrid />
<Radar
dataKey='desktop'
fill='var(--color-primary)'
fillOpacity={0.6}
/>
<Radar dataKey='mobile' fill='var(--color-secondary)' />
</RadarChart>
</ChartContainer>
</>
)
}
Legend
Component Code
Copy Code
'use client'
import { PolarAngleAxis, PolarGrid, Radar, RadarChart } from 'recharts'
import {
ChartConfig,
ChartContainer,
ChartLegend,
ChartLegendContent,
ChartTooltip,
ChartTooltipContent,
} from '@/components/ui/chart'
export const description = 'A radar chart with a legend'
const chartData = [
{ month: 'January', desktop: 186, mobile: 80 },
{ month: 'February', desktop: 305, mobile: 200 },
{ month: 'March', desktop: 237, mobile: 120 },
{ month: 'April', desktop: 73, mobile: 190 },
{ month: 'May', desktop: 209, mobile: 130 },
{ month: 'June', desktop: 214, mobile: 140 },
]
const chartConfig = {
desktop: {
label: 'Desktop',
color: 'var(--chart-1)',
},
mobile: {
label: 'Mobile',
color: 'var(--chart-2)',
},
} satisfies ChartConfig
export default function ChartRadarLegendCode() {
return (
<>
<ChartContainer config={chartConfig}>
<RadarChart
data={chartData}
margin={{
top: -40,
bottom: -10,
}}>
<ChartTooltip
cursor={false}
content={<ChartTooltipContent indicator='line' />}
/>
<PolarAngleAxis dataKey='month' />
<PolarGrid />
<Radar
dataKey='desktop'
fill='var(--color-primary)'
fillOpacity={0.6}
/>
<Radar dataKey='mobile' fill='var(--color-secondary)' />
<ChartLegend className='mt-8' content={<ChartLegendContent />} />
</RadarChart>
</ChartContainer>
</>
)
}