vue echarts 雷达图(radar)动态获取数据并渲染

一、给个容器

 

二、获取数据

mounted(){
            this._getCategory()
        },
复制代码
_getCategory(){
            getCategory().then(res=>{
                 let data = res.data.data
                 this.bookCategory(this.formatData(data))
              })
          },
            formatData(data){
                let indicator = []
                let bookCat = []
                let borrowCat = []
                data.book.forEach(info => {
                    let key =  info.category;
                    let value = info.number;
                    bookCat[key] = value                 
                })
                let bookValues = Object.values(bookCat)       //book中的number组成的数组      
                let bookMax = Math.max(...bookValues)
                let bookKeys = Object.keys(bookCat)   //book数组中的category组成的数组
                bookKeys.forEach(key => {
                    data.borrow.forEach(item=>{
                        if(item.category == key){
                            borrowCat[key] = item.number
                        }
                    })  
                })
                
                let borrowValues = Object.values(borrowCat) 
                let borrowMax = Math.max(...borrowValues)
                let max = bookMax > borrowMax ? bookMax : borrowMax
                bookKeys.forEach(item => indicator.push({
                    'name':item,
                    'max':max
                }))
                let result = {
                    indicator : indicator,
                    bookCat : bookValues,
                    borrowCat : borrowValues
                }
                return result
            },
            bookCategory(data){
                let bookCategoryChart = echarts.init(document.getElementById('book-category'))
                let option = {
                    tooltip: {
                        trigger: 'item',
                        position:function(p){    //其中p为当前鼠标的位置
                            return [p[0], p[1]];
                        },
                    },
                    legend: {
                        orient: 'vertical',
                        right: '5%',
                        textStyle: {
                            color:'#DFE0E5',
                            fontWeight: 'bold'
                        },
                        data: ['书刊类别分布', '借阅类别分布']
                    },
                    radar: {
                        splitNumber: 2, // 雷达图圈数设置
                        center: ['50%','50%'],
                        radius : '65%',
                        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.bookCat,
                                name : '书刊类别分布',
                                itemStyle: {
                                    normal: {
                                        color:'#F75325'  //显示颜色与填充颜色对应
                                    }
                                },
                                areaStyle: {
                                    normal: {
                                        color: '#F75325'    //填充的颜色
                                    }
                                }
                            },
                            {
                                value : data.borrowCat,
                                name : '借阅类别分布',
                                itemStyle: {
                                    normal: {
                                        color:'#7B52CC'
                                    }
                                },
                                areaStyle: {
                                    normal: {
                                        color: '#7B52CC'
                                    }
                                }
                            }
                        ]
                    }]
                };
                bookCategoryChart.setOption(option)
            }
复制代码

 

 五、效果如下:

 

posted @   王大师  阅读(8620)  评论(1编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
阅读排行:
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!
点击右上角即可分享
微信分享提示