当前位置:首页 > VUE

vue实现雷达图

2026-03-09 01:26:46VUE

使用 ECharts 实现雷达图

安装 ECharts 依赖

npm install echarts --save

引入 ECharts 并初始化雷达图

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

<script>
import * as echarts from 'echarts';

export default {
  mounted() {
    this.initRadarChart();
  },
  methods: {
    initRadarChart() {
      const chartDom = this.$refs.radarChart;
      const myChart = echarts.init(chartDom);

      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: [80, 60, 75, 90, 50],
              name: '角色A'
            },
            {
              value: [50, 70, 85, 60, 80],
              name: '角色B'
            }
          ]
        }]
      };

      myChart.setOption(option);
    }
  }
};
</script>

自定义雷达图样式

修改雷达图外观

vue实现雷达图

radar: {
  shape: 'circle',
  splitNumber: 5,
  axisName: {
    color: '#333',
    fontSize: 14
  },
  splitArea: {
    areaStyle: {
      color: ['rgba(255, 255, 255, 0.5)']
    }
  },
  axisLine: {
    lineStyle: {
      color: 'rgba(0, 0, 0, 0.3)'
    }
  }
}

响应式处理

添加窗口大小变化监听

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

动态更新数据

通过 props 或 API 获取数据

vue实现雷达图

props: {
  chartData: {
    type: Array,
    default: () => []
  }
},
watch: {
  chartData: {
    handler(newVal) {
      if (this.myChart) {
        const option = this.myChart.getOption();
        option.series[0].data = newVal;
        this.myChart.setOption(option);
      }
    },
    deep: true
  }
}

使用 Vue-ECharts 组件

安装 vue-echarts

npm install vue-echarts echarts --save

组件实现方式

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

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

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

export default {
  components: {
    VChart
  },
  data() {
    return {
      radarOption: {
        // 同上配置
      }
    };
  }
};
</script>

标签: vue
分享给朋友:

相关文章

vue插槽实现

vue插槽实现

插槽的基本概念 Vue插槽(Slot)是一种内容分发机制,允许父组件向子组件传递模板片段,子组件通过<slot>标签定义接收位置。插槽的核心作用是增强组件的灵活性和复用性。 默认插槽 子…

vue实现粘贴

vue实现粘贴

Vue 实现粘贴功能的方法 在 Vue 中实现粘贴功能通常涉及监听粘贴事件并处理剪贴板数据。以下是几种常见的实现方式: 监听原生粘贴事件 通过 @paste 指令或原生 addEventListen…

vue observer实现

vue observer实现

Vue Observer 实现原理 Vue 的响应式系统核心是通过 Object.defineProperty(Vue 2)或 Proxy(Vue 3)实现的 Observer 模式。以下是关键实现细…

vue diff实现

vue diff实现

Vue Diff 算法实现原理 Vue 的虚拟 DOM Diff 算法(即 patch 过程)是其高效渲染的核心,主要通过对比新旧虚拟节点的差异,最小化 DOM 操作。以下是关键实现要点: 同层级比…

vue mvvm 实现

vue mvvm 实现

Vue MVVM 实现原理 Vue.js 的 MVVM(Model-View-ViewModel)架构通过数据绑定和响应式系统实现视图与数据的自动同步。以下是其核心实现机制: 数据劫持与响应式系统…

vue实现换页

vue实现换页

Vue实现页面切换的方法 在Vue中实现页面切换通常可以通过Vue Router来完成。Vue Router是Vue.js官方的路由管理器,用于构建单页面应用(SPA)。以下是几种常见的实现方式:…