Skip to content

Biểu Đồ Radar

Hiển thị so sánh dữ liệu đa chiều trên lưới hình tròn với hình dạng và tùy chọn tô tùy chỉnh.

Loading chart...

Cài Đặt

bash
npx @galaxy-stack/nebula-cli@latest add radar-chart
bash
pnpm dlx @galaxy-stack/nebula-cli@latest add radar-chart
bash
yarn dlx @galaxy-stack/nebula-cli@latest add radar-chart
bash
bunx @galaxy-stack/nebula-cli@latest add radar-chart
bash
# Nếu bạn đã cài đặt galaxy-design toàn cục
galaxy-design add radar-chart

Dependencies

Component này tự động cài đặt các dependencies sau:

  • Vue: vue-echarts@^7.0.3, echarts@^5.5.1
  • React: echarts-for-react@^3.0.2, echarts@^5.5.1
  • Angular: ngx-echarts@^18.0.0, echarts@^5.5.1
  • React Native: @wuba/react-native-echarts@^3.0.1, echarts@^5.5.1, @shopify/react-native-skia@^1.6.4
  • Flutter: fl_chart@^0.68.0

Không cần cài đặt thủ công!

Sử Dụng

Biểu Đồ Radar Cơ Bản

vue
<script setup lang="ts">
import { RadarChart } from '@/components/ui/charts'

const data = {
  labels: ['Kỹ Năng 1', 'Kỹ Năng 2', 'Kỹ Năng 3', 'Kỹ Năng 4', 'Kỹ Năng 5'],
  datasets: [{
    label: 'Nhân Viên A',
    data: [80, 90, 70, 85, 75],
    color: '#3b82f6'
  }]
}
</script>

<template>
  <RadarChart :data="data" :height="300" />
</template>
tsx
import { RadarChart } from "@/components/ui/charts"

const data = {
  labels: ['Kỹ Năng 1', 'Kỹ Năng 2', 'Kỹ Năng 3', 'Kỹ Năng 4', 'Kỹ Năng 5'],
  datasets: [{
    label: 'Nhân Viên A',
    data: [80, 90, 70, 85, 75],
    color: '#3b82f6'
  }]
}

export default function App() {
  return <RadarChart data={data} height={300} />
}

Biểu Đồ Radar Với Multiple Datasets

vue
<script setup lang="ts">
const comparisonData = {
  labels: ['Tốc Độ', 'Chất Lượng', 'Giá Cả', 'Dịch Vụ', 'Thương Hiệu'],
  datasets: [
    { label: 'Đối Thủ A', data: [80, 70, 90, 75, 85], color: '#3b82f6' },
    { label: 'Đối Thủ B', data: [70, 85, 75, 90, 80], color: '#10b981' },
    { label: 'Chúng Tôi', data: [90, 85, 80, 85, 75], color: '#f59e0b' }
  ]
}
</script>

<template>
  <RadarChart :data="comparisonData" :height="300" />
</template>
tsx
const comparisonData = {
  labels: ['Tốc Độ', 'Chất Lượng', 'Giá Cả', 'Dịch Vụ', 'Thương Hiệu'],
  datasets: [
    { label: 'Đối Thủ A', data: [80, 70, 90, 75, 85], color: '#3b82f6' },
    { label: 'Đối Thủ B', data: [70, 85, 75, 90, 80], color: '#10b981' },
    { label: 'Chúng Tôi', data: [90, 85, 80, 85, 75], color: '#f59e0b' }
  ]
}

<RadarChart data={comparisonData} height={300} />

Biểu Đồ Radar Với Filled Area

vue
<RadarChart :data="data" :height="300" :filled="true" />
tsx
<RadarChart data={data} height={300} filled />

Biểu Đồ Radar Với Custom Shape

vue
<RadarChart :data="data" :height="300" shape="circle" />
tsx
<RadarChart data={data} height={300} shape="circle" />

API Reference

Props

PropTypeDefaultMô Tả
dataChartDatarequiredDữ liệu biểu đồ với labels và datasets
heightnumber300Chiều cao biểu đồ (pixels)
widthnumber | string'100%'Chiều rộng biểu đồ
theme'light' | 'dark''light'Chủ đề màu sắc
filledbooleantrueTô vùng bên trong shape
shape'polygon' | 'circle''polygon'Hình dạng lưới
showLabelbooleantrueHiển thị giá trị trên điểm
legendbooleantrueHiển thị chú thích
legendPosition'top' | 'bottom' | 'left' | 'right''top'Vị trí chú thích
animationbooleantrueBật/tắt animation
loadingbooleanfalseHiển thị trạng thái loading
emptyTextstring'Không có dữ liệu'Thông báo khi không có dữ liệu

ChartData Interface

typescript
interface ChartData {
  labels: string[]
  datasets: ChartDataset[]
}

interface ChartDataset {
  label: string
  data: number[]
  color?: string
  backgroundColor?: string
}

Use Cases

  • So Sánh Sản Phẩm - So sánh nhiều sản phẩm qua các tiêu chí
  • Đánh Giá Kỹ Năng - Hiển thị competency matrix
  • Phân Tích Đối Thủ - So sánh competitive advantages
  • Performance Review - Đánh giá hiệu suất nhân viên
  • Product Features - So sánh tính năng sản phẩm

Best Practices

1. Giới Hạn Số Lượng Axes

vue
<!-- ✅ Tốt: 4-8 axes -->
<RadarChart :data="data" />

<!-- ❌ Tránh: Quá nhiều axes gây rối -->
<RadarChart :data="tooManyAxes" />

2. Sử Dụng Màu Sắc Phân Biệt

typescript
// ✅ Sử dụng palette có sẵn
const colors = ['#3b82f6', '#10b981', '#f59e0b']

// ❌ Tránh màu sắc quá giống nhau
const colors = ['#3b82f6', '#3a81f5', '#3980f4']

3. Sắp Xếp Labels Hợp Lý

typescript
// ✅ Sắp xếp theo thứ tự logic
const labels = ['Chất Lượng', 'Giá Cả', 'Dịch Vụ', 'Tốc Độ']

// ❌ Tránh sắp xếp ngẫu nhiên
const labels = ['Dịch Vụ', 'Chất Lượng', 'Tốc Độ', 'Giá Cả']

4. Responsive Design

vue
<template>
  <div class="w-full aspect-square">
    <RadarChart :data="data" />
  </div>
</template>

Accessibility

  • Screen Reader: Mô tả văn bản thay thế cho dữ liệu
  • Keyboard Navigation: Điều hướng bằng bàn phím
  • Color Contrast: Tỷ lệ tương phản màu sắc đạt chuẩn
  • Focus Indicators: Chỉ báo focus rõ ràng

Các Ví Dụ Khác

Biểu Đồ Radar Với Circle Shape

vue
<RadarChart :data="data" :height="300" shape="circle" :filled="true" />
tsx
<RadarChart data={data} height={300} shape="circle" filled />

Biểu Đồ Radar Không Filled

vue
<RadarChart :data="data" :height="300" :filled="false" />
tsx
<RadarChart data={data} height={300} filled={false} />

Framework Support

FrameworkThư ViệnVersion
VueECharts^5.5.1
ReactECharts for React^3.0.2
Angularngx-echarts^18.0.0
React Native@wuba/react-native-echarts^3.0.1
Flutterfl_chart^0.68.0

Các Trang Liên Quan

Phát hành theo Giấy phép MIT.