当前位置:首页 > VUE

如何实现vue雷达图

2026-02-24 23:08:22VUE

使用 ECharts 实现 Vue 雷达图

安装 ECharts 依赖

npm install echarts --save

在 Vue 组件中引入 ECharts

import * as echarts from 'echarts'

创建雷达图容器

<template>
  <div id="radarChart" style="width: 600px; height: 400px;"></div>
</template>

初始化雷达图

mounted() {
  this.initRadarChart()
},
methods: {
  initRadarChart() {
    const chart = echarts.init(document.getElementById('radarChart'))

    const option = {
      title: {
        text: '能力雷达图'
      },
      radar: {
        indicator: [
          { name: '技术', max: 100 },
          { name: '沟通', max: 100 },
          { name: '领导力', max: 100 },
          { name: '创新', max: 100 },
          { name: '执行力', max: 100 }
        ]
      },
      series: [{
        type: 'radar',
        data: [
          {
            value: [90, 70, 80, 85, 75],
            name: '能力评估'
          }
        ]
      }]
    }

    chart.setOption(option)
  }
}

使用 Vue-ECharts 封装组件

安装 vue-echarts

npm install echarts vue-echarts

创建可复用的雷达图组件

<template>
  <v-chart :option="option" autoresize />
</template>

<script>
import { use } from 'echarts/core'
import { RadarChart } from 'echarts/charts'
import {
  TitleComponent,
  TooltipComponent,
  LegendComponent,
  RadarComponent
} from 'echarts/components'
import { CanvasRenderer } from 'echarts/renderers'
import VChart from 'vue-echarts'

use([
  RadarChart,
  TitleComponent,
  TooltipComponent,
  LegendComponent,
  RadarComponent,
  CanvasRenderer
])

export default {
  components: { VChart },
  props: {
    indicators: Array,
    seriesData: Array
  },
  computed: {
    option() {
      return {
        title: { text: '技能评估' },
        tooltip: {},
        legend: { data: ['当前能力'] },
        radar: { indicator: this.indicators },
        series: [{
          name: '能力',
          type: 'radar',
          data: this.seriesData
        }]
      }
    }
  }
}
</script>

自定义雷达图样式

修改雷达图外观

option: {
  radar: {
    shape: 'circle',
    splitNumber: 5,
    radius: '70%',
    axisName: {
      color: '#333',
      fontSize: 14
    },
    splitArea: {
      areaStyle: {
        color: ['rgba(114, 172, 209, 0.2)']
      }
    },
    axisLine: {
      lineStyle: {
        color: 'rgba(114, 172, 209, 0.8)'
      }
    }
  },
  series: [{
    itemStyle: {
      color: '#4bacc6'
    },
    lineStyle: {
      width: 2,
      color: '#4bacc6'
    },
    areaStyle: {
      color: 'rgba(75, 172, 198, 0.4)'
    }
  }]
}

响应式雷达图实现

添加窗口大小变化监听

mounted() {
  this.initRadarChart()
  window.addEventListener('resize', this.handleResize)
},
beforeDestroy() {
  window.removeEventListener('resize', this.handleResize)
},
methods: {
  handleResize() {
    this.chart.resize()
  }
}

使用 computed 属性动态生成数据

如何实现vue雷达图

computed: {
  radarData() {
    return this.$store.getters.skillData.map(item => {
      return {
        name: item.skillName,
        max: 100,
        color: this.getColor(item.level)
      }
    })
  }
}

标签: 如何实现vue
分享给朋友:

相关文章

vue实现点击

vue实现点击

实现点击事件的基本方法 在Vue中实现点击事件可以通过v-on指令或@简写方式绑定。以下是常见的点击事件绑定方法: <template> <button v-on:click=…

vue tag实现

vue tag实现

Vue 标签实现方法 在 Vue 中实现标签功能可以通过多种方式完成,常见场景包括动态标签生成、标签输入框、标签管理等。以下是几种典型实现方案: 动态标签列表渲染 使用 v-for 指令渲染标签数组…

antd vue 实现

antd vue 实现

使用 Ant Design Vue 实现功能 Ant Design Vue 是基于 Vue.js 的 UI 组件库,提供了丰富的组件和设计规范。以下是一些常见功能的实现方法。 安装 Ant Desi…

vue分类实现

vue分类实现

Vue分类实现方法 在Vue中实现分类功能通常涉及数据分组、动态渲染和交互逻辑。以下是几种常见的实现方式: 基于计算属性的分类 通过计算属性对原始数据进行分组处理,适合静态或少量数据分类: com…

vue 实现单选

vue 实现单选

使用 v-model 绑定单选值 在 Vue 中,可以通过 v-model 绑定单选按钮的值。定义一个响应式数据(如 selectedOption),并将其与单选按钮的 value 属性关联。…

实现vue datepicker

实现vue datepicker

安装依赖 使用 vue-datepicker 或第三方库如 v-calendar 或 vue2-datepicker。以 vue2-datepicker 为例: npm install vue2…