Skip to content

XRadar — 雷达图

基于 SVG 自研的雷达图组件,零三方依赖(不依赖 ECharts / Canvas 库)。支持自定义维度数据、网格层数、颜色主题,单组与多组对比均可。

实时演示

VueReactTypeScriptNode.jsCSSWebpackVue:95React:85TypeScript:90Node.js:80CSS:92Webpack:75
vue
<XRadar :data="[
  { name: 'Vue', value: 95 },
  { name: 'React', value: 85 },
  { name: 'TypeScript', value: 90 },
  { name: 'Node.js', value: 80 },
  { name: 'CSS', value: 92 },
  { name: 'Webpack', value: 75 }
]" />

不传 data 时使用默认 6 维数据。

Props

属性类型默认值说明
data{ name, value }[]维度数据数组
sizenumber300容器宽高(px),正方形
levelsnumber5网格层数
nameGapnumber12标签与雷达图边缘间距(px)
areaColorstring'rgba(64,158,255,0.3)'数据区域填充色
lineColorstring'#409eff'数据区域边线颜色
pointColorstring'#409eff'数据点颜色
pointRadiusnumber4数据点半径(px)
lineWidthnumber2数据边线宽度(px)
labelColorstring'#666666'维度标签颜色
labelFontSizenumber13维度标签字号(px)
gridColorstring'#e4e7ed'网格和径向线颜色
seriesObject[][]多组对比,传入时优先于 data,自动生成图例并取色
maxnumbernull坐标轴最大值;不传取数据最大值与 100 的较大者

多系列对比

vue
<XRadar :series="[
  { name: '当前版本', data: [{ name: '性能', value: 90 }, { name: '易用性', value: 80 }] },
  { name: '竞品', data: [{ name: '性能', value: 75 }, { name: '易用性', value: 85 }] }
]" />

注意事项

  • 完全基于 SVG,无需安装 echarts
  • 从正上方(12 点钟)顺时针分布维度。
  • 纯矢量渲染,自适应容器,无需 ResizeObserver
  • 鼠标悬停数据点放大并显示 维度:数值 提示(原生 <title>)。

基于 VitePress + Vue 3 构建