记录一次echarts的动态雷达图

效果图

在这里插入图片描述

在main.js 引入

import echarts from 'echarts'

相应的模板导入:import echarts from 'echarts';

雷达图样式:<div id="leiDaTu" class="echart" style="width: 550px;height: 450px;"></div>';

前端相关代码实现:
定义三个数组来存储要渲染到 雷达图的数据:let indicator = [] let ProjectCat = [] let ProjectCatS = []

formatData(data){
                let indicator = []
                let ProjectCat = []
                let ProjectCatS = []
                data.forEach(info => {
                    let key =  info.fname;
                    let value = info.syst;
                    ProjectCat[key] = value                               
                })         
                let projectValues = Object.values(ProjectCat)       //数组中的得分组成的数组      
                let proMax = Math.max(...projectValues)
                let projectkeys = Object.keys(ProjectCat)   //数组中的项目类型组成的数组
                projectkeys.forEach(key => {
                    data.forEach(item=>{
                        if(item.fname == key){
                            ProjectCatS[key] = item.feffe
                        }
                    })  
                })
                
                let ProjectValues = Object.values(ProjectCatS) 
                let ProjectMax = Math.max(...ProjectValues)
                let max = proMax > ProjectMax ? proMax : ProjectMax
                projectkeys.forEach(item => indicator.push({
                    'name':item,
                    'max':max
                }))
                let result = {
                    indicator : indicator,
                    ProjectCat : projectValues,
                    ProjectCatS : ProjectValues
                }
                return result
            },
 eachartCategory(data){
                let eachartCategoryChart = echarts.init(document.getElementById('leiDaTu'))
               
                let option = {
                      title: {
                            text: '制度健全性得分现状与遵循有效性得分现状得分雷达图',
                            textStyle: {
                                color: 'rgba(65	105	225)', //标题颜色
                                fontSize: 14,
                                lineHeight: 20,
                            },
                           
                        },
                       tooltip: {
                        trigger: 'item',
                        position:function(p){    //其中p为当前鼠标的位置
                            return [p[0], p[1]];
                        },
                    },
                    legend: {
                        orient: 'vertical',
                        right: '6%',
                        textStyle: {
                            color:'#1C86EE',
                            fontWeight: 'bold'
                        },
                        data: ['制度健全性得分现状', '遵循有效性得分现状']
                    },
                    radar: {
                        splitNumber: 6, // 雷达图圈数设置
                        center: ['50%','50%'],
                        radius : '75%',
                        name: {
                            textStyle: {
                                color: '#DFE0E5',
                                backgroundColor: '#121E36'
                            }
                        },
                        indicator: data.indicator,
                        splitArea : {
                            show : false,
                            areaStyle : {
                               color: 'rgba(255,0,0,0)', // 图表背景的颜色
                            },
                        },
                    },
                    series: [{
                        name: '制度健全性得分现状 vs 遵循有效性得分现状',
                        type: 'radar',
                        data : [
                            {
                                value : data.ProjectCat,
                                name : '制度健全性得分现状',
                                itemStyle: {
                                    normal: {
                                        color:'#A020F0'  //显示颜色与填充颜色对应
                                    }
                                },
                                areaStyle: {
                                    normal: {
                                        color: '#A020F0'    //填充的颜色
                                    }
                                }
                            },
                            {
                                value : data.ProjectCatS,
                                name : '遵循有效性得分现状',
                                itemStyle: {
                                    normal: {
                                        color:'#EE2C2C'
                                    }
                                },
                                areaStyle: {
                                    normal: {
                                        color: '#EE2C2C'
                                    }
                                }
                            }
                        ]
                    }]
                };
                eachartCategoryChart.clear()
                eachartCategoryChart.setOption(option)
            },

eachartCategoryChart.clear() 方法在每次重新渲染 数据的时候,把之前渲染的雷达图清除。
eachartCategoryChart.setOption(option)雷达图显示

 getList() {
      this.loading = true;
      selectScoe(this.queryParams).then(response => {
        this.projectList = response.rows;
        this.total = response.total;
        this.loading = false;
        this.eachartCategory(this.formatData(this.projectList))
      });
    },

把从后台获取的数据渲染到雷达图this.eachartCategory(this.formatData(this.projectList))

数据的加载:mounted(){ this.getList() },

ECharts是一个流行的JavaScript表库,它可以创建各种复杂的表,包括动态雷达动态雷达是一种用于展示多个类别数据相对于中心点的变化情况的形,通常用于比较分析。在ECharts中,你可以通过以下步骤创建动态雷达: 1. 首先,你需要引入ECharts的库,并创建一个ECharts实例。 ```html <script src="https://cdn.jsdelivr.net/npm/echarts@5.3.0/dist/echarts.min.js"></script> ``` 2. 创建一个空的div元素作为表容器,并设置其宽度和高度。 ```html <div id="radarChart" style="width: 600px;height:400px;"></div> ``` 3. 编写JavaScript代码,初始化表并配置动态雷达的数据和选项: ```javascript var chart = echarts.init(document.getElementById('radarChart')); // 基本配置项 var option = { type: 'radar', // 设置表类型为雷达 data: [], // 初始化数据为空,后续会动态添加 series: [ { // 系列配置 name: '指标', type: 'radar', // radar需要手动指定角度,而不是自动计算 angleAxis: { type: 'value', splitLine: { show: false }, // 雷达的分隔线默认隐藏 }, indicator: [], // 指标列表,也需要动态填充 // 其他如标记点、颜色等配置 } ], }; // 动态添加数据 function addData(labels, values) { var currentSeries = option.series[0]; if (!currentSeries.indicator) { currentSeries.indicator = labels; } currentSeries.data = values; // 更新数据 chart.setOption(option); // 更新表 } // 示例数据,可根据实际需求替换 var labels = ['A', 'B', 'C', 'D']; var randomValues = [Math.random(), Math.random(), Math.random(), Math.random()]; addData(labels, randomValues); ``` 4. 当数据有变化时,调用`addData`函数传入新的数据点。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值