echarts实现3d饼图

上效果先

使用

import*asechartsfrom'echarts'import'echarts-gl'letmyCharts=echarts.init(document.getElementById('yearInventoryStatisticsId'))initChartR2(myCharts)
//3d饼图exportconstinitChartR2=function(echartsM){// 传入数据生成 optionconstoptionsData=[{name:'业务A',value:13.87,itemStyle:{opacity:0.5,color:'#7bc35a'}},{name:'业务B',value:0.6,itemStyle:{opacity:0.5,color:'#2f97df'}},{name:'业务C',value:9.53,itemStyle:{opacity:0.5,color:'#4268d6'}},{name:'业务D',value:72.17,itemStyle:{opacity:0.5,color:'#d35e5f'}},{name:'业务E',value:3.67,itemStyle:{opacity:0.5,color:'#c2c763'}},{name:'业务F',value:0.17,itemStyle:{opacity:0.5,color:'#8fdffe'}}]constseries=getPie3D(optionsData.map(item=>{if(item.value<5){item.value=5}returnitem}),0,240,28,26,0.5)series.push({name:'pie2d',type:'pie',label:{show:false,opacity:1,position:'outside',fontSize:12,lineHeight:20,textStyle:{fontSize:12,color:'#fff'}},labelLine:{show:false,length:30,length2:30},minAngle:10,startAngle:-50,// 起始角度,支持范围[0, 360]。clockwise:false,// 饼图的扇区是否是顺时针排布。上述这两项配置主要是为了对齐3d的样式radius:['0','25%'],center:['50%','50%'],data:optionsData.map(item=>{item.itemStyle.opacity=0returnitem})})// 准备待返回的配置项,把准备好的 legendData、series 传入。constoption={legend:{show:false},animation:true,tooltip:{formatter:(params)=>{if(params.seriesName!=='mouseoutSeries'&&params.seriesName!=='pie2d'){return`${params.seriesName}<br/><span style="display:inline-block;margin-right:5px;border-radius:10px;width:10px;height:10px;background-color:${params.color};"></span>${option.series[params.seriesIndex].pieData.value+'%'}`}},textStyle:{fontSize:14}},title:{x:'center',top:'20',textStyle:{color:'#fff',fontSize:22}},// backgroundColor: '#0E3567',labelLine:{show:true,lineStyle:{color:'#7BC0CB'},normal:{show:true,length:10,length2:10}},label:{show:true,position:'outside',formatter:'{b} \n{d}%',textStyle:{color:'#fff',fontSize:'12px'}},xAxis3D:{min:-1,max:1},yAxis3D:{min:-1,max:1},zAxis3D:{min:-1,max:1},grid3D:{show:false,//圆环的高度boxHeight:0.02,// top: '30%',bottom:'50%',// environment: "rgba(255,255,255,0)",viewControl:{distance:300,//角度alpha:25,beta:60,autoRotate:false// 自动旋转}},series:series}console.log(echartsM,'echartsM')echartsM.setOption(option)}functiongetParametricEquation(startRatio,endRatio,isSelected,isHovered,k,height){// 计算constmidRatio=(startRatio+endRatio)/2conststartRadian=startRatio*Math.PI*2constendRadian=endRatio*Math.PI*2constmidRadian=midRatio*Math.PI*2// 如果只有一个扇形,则不实现选中效果。if(startRatio===0&&endRatio===1){isSelected=false}// 通过扇形内径/外径的值,换算出辅助参数 k(默认值 1/3)k=typeofk!=='undefined'?k:1/3// 计算选中效果分别在 x 轴、y 轴方向上的位移(未选中,则位移均为 0)constoffsetX=isSelected?Math.cos(midRadian)*0.1:0constoffsetY=isSelected?Math.sin(midRadian)*0.1:0// 计算高亮效果的放大比例(未高亮,则比例为 1)consthoverRate=isHovered?1.05:1// 返回曲面参数方程return{u:{min:-Math.PI,max:Math.PI*3,step:Math.PI/32},v:{min:0,max:Math.PI*2,step:Math.PI/20},x:function(u,v){if(u<startRadian){return(offsetX+Math.cos(startRadian)*(1+Math.cos(v)*k)*hoverRate)}if(u>endRadian){return(offsetX+Math.cos(endRadian)*(1+Math.cos(v)*k)*hoverRate)}returnoffsetX+Math.cos(u)*(1+Math.cos(v)*k)*hoverRate},y:function(u,v){if(u<startRadian){return(offsetY+Math.sin(startRadian)*(1+Math.cos(v)*k)*hoverRate)}if(u>endRadian){return(offsetY+Math.sin(endRadian)*(1+Math.cos(v)*k)*hoverRate)}returnoffsetY+Math.sin(u)*(1+Math.cos(v)*k)*hoverRate},z:function(u,v){if(u<-Math.PI*0.5){returnMath.sin(u)}if(u>Math.PI*2.5){returnMath.sin(u)}returnMath.sin(v)>0?1*height:-1}}}// 生成模拟 3D 饼图的配置项functiongetPie3D(pieData,internalDiameterRatio){constseries=[]letsumValue=0letstartValue=0letendValue=0constlegendData=[]constk=typeofinternalDiameterRatio!=='undefined'?(1-internalDiameterRatio)/(1+internalDiameterRatio):1/3// 为每一个饼图数据,生成一个 series-surface 配置for(leti=0;i<pieData.length;i++){sumValue+=pieData[i].valueconstseriesItem={name:typeofpieData[i].name==='undefined'?`series${i}`:pieData[i].name,type:'surface',parametric:true,wireframe:{show:false},pieData:pieData[i],pieStatus:{selected:false,hovered:false,k:k}}if(typeofpieData[i].itemStyle!=='undefined'){constitemStyle={}typeofpieData[i].itemStyle.color!=='undefined'?(itemStyle.color=pieData[i].itemStyle.color):nulltypeofpieData[i].itemStyle.opacity!=='undefined'?(itemStyle.opacity=pieData[i].itemStyle.opacity):nullseriesItem.itemStyle=itemStyle}series.push(seriesItem)}// 使用上一次遍历时,计算出的数据和 sumValue,调用 getParametricEquation 函数,// 向每个 series-surface 传入不同的参数方程 series-surface.parametricEquation,也就是实现每一个扇形。for(leti=0;i<series.length;i++){endValue=startValue+series[i].pieData.value series[i].pieData.startRatio=startValue/sumValue series[i].pieData.endRatio=endValue/sumValue series[i].parametricEquation=getParametricEquation(series[i].pieData.startRatio,series[i].pieData.endRatio,false,false,k,2000)startValue=endValue legendData.push(series[i].name)}returnseries}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/1120363.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

水库大坝安全监测:无人测量船的关键应用场景

水库大坝是水利工程关键设施&#xff0c;其安全运行关乎下游生命财产、社会经济和生态平衡。传统大坝安全监测靠人工巡检与固定式传感器网络结合。但人工巡检效率低、强度大、主观性强、数据不连续&#xff0c;恶劣条件下巡检人员安全难保障&#xff0c;也难全面覆盖监测点&…

【计算机毕业设计案例】深度学习基于CNN卷积网络的蔬菜识别基于CNN卷积网络的蔬菜识别

博主介绍&#xff1a;✌️码农一枚 &#xff0c;专注于大学生项目实战开发、讲解和毕业&#x1f6a2;文撰写修改等。全栈领域优质创作者&#xff0c;博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围&#xff1a;&am…

python基于django的社区流浪动物领养管理系统_65kwrn28

目录基于Django的社区流浪动物领养管理系统核心功能模块技术实现社会价值关于博主开发技术路线相关技术介绍核心代码参考示例结论源码lw获取/同行可拿货,招校园代理 &#xff1a;文章底部获取博主联系方式&#xff01;基于Django的社区流浪动物领养管理系统 该系统旨在通过数字…

提示工程数据坑:架构师视角下的6个数据质量导致的失败案例

提示工程数据坑:架构师视角下的6个数据质量导致的失败案例 引言:提示工程的“地基”为何比技巧更重要? 2023年,某头部医疗AI公司的辅助诊断系统发生了一起严重事故:一位30岁男性患者因“咳嗽、发热3天”使用该系统,提示工程生成的诊断建议为“肺炎”,但后续CT检查显示…

andorid 学习之ContentProvider 和 ContentResolver 使用笔记

&#x1f4da; 概述这个教程将帮助你理解 Android 中的 ContentProvider 和 ContentResolver&#xff0c;它们是 Android 四大组件之一&#xff0c;用于实现应用间的数据共享。&#x1f3af; 学习目标理解 ContentProvider 和 ContentResolver 的作用学会创建和注册 ContentPro…

python基于django的群众网上高效办事系统的设计与实现_6e4j9xi1

目录基于Django的群众网上高效办事系统设计与实现关于博主开发技术路线相关技术介绍核心代码参考示例结论源码lw获取/同行可拿货,招校园代理 &#xff1a;文章底部获取博主联系方式&#xff01;基于Django的群众网上高效办事系统设计与实现 该系统旨在利用Django框架构建一个高…

python基于django的食品仓库管理系统_2i4gc8z0

目录食品仓库管理系统概述核心功能模块技术实现要点扩展性与优化关于博主开发技术路线相关技术介绍核心代码参考示例结论源码lw获取/同行可拿货,招校园代理 &#xff1a;文章底部获取博主联系方式&#xff01;食品仓库管理系统概述 基于Django框架的食品仓库管理系统旨在实现食…

python基于django的企业人力资源招聘管理系统_fsjuwx26

目录基于Django的企业人力资源招聘管理系统概述系统功能模块技术实现特点关于博主开发技术路线相关技术介绍核心代码参考示例结论源码lw获取/同行可拿货,招校园代理 &#xff1a;文章底部获取博主联系方式&#xff01;基于Django的企业人力资源招聘管理系统概述 该系统采用Pyt…

【Python】五大数据容器之间的区别

1、Python五大数据容器及其方法容器类型元素存储方式有哪些方法List列表以[]存储多个元素index、insert、append、extend、del、pop、remove、clear、count、reverse、sort等方法Tuple元组以()存储元素index、count、len方法Str字符串以""存储字符index、replace、sp…

深度学习毕设项目推荐-基于CNN深度学习的遥感图片识别沙漠湖泊和森林基于CNN深度学习的遥感图片识别沙漠湖泊和森林

博主介绍&#xff1a;✌️码农一枚 &#xff0c;专注于大学生项目实战开发、讲解和毕业&#x1f6a2;文撰写修改等。全栈领域优质创作者&#xff0c;博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围&#xff1a;&am…

python基于django的汽车租赁买卖管理系统_189h7k1a

目录汽车租赁买卖管理系统概述核心功能模块技术实现亮点系统优势关于博主开发技术路线相关技术介绍核心代码参考示例结论源码lw获取/同行可拿货,招校园代理 &#xff1a;文章底部获取博主联系方式&#xff01;汽车租赁买卖管理系统概述 该系统基于Django框架开发&#xff0c;旨…

python基于django的申家沟村务管理系统_村委会管理系统3bm52uvo

目录项目背景技术架构核心功能创新点应用价值关于博主开发技术路线相关技术介绍核心代码参考示例结论源码lw获取/同行可拿货,招校园代理 &#xff1a;文章底部获取博主联系方式&#xff01;项目背景 申家沟村务管理系统基于Django框架开发&#xff0c;旨在实现村委会工作的数字…

深度学习毕设项目推荐-基于CNN卷积网络的蔬菜识别基于深度学习卷积网络的蔬菜识别

博主介绍&#xff1a;✌️码农一枚 &#xff0c;专注于大学生项目实战开发、讲解和毕业&#x1f6a2;文撰写修改等。全栈领域优质创作者&#xff0c;博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围&#xff1a;&am…

python基于django的社区健身器材报修系统 公园管理系统_g9741947

目录基于Django的社区健身器材报修系统与公园管理系统关于博主开发技术路线相关技术介绍核心代码参考示例结论源码lw获取/同行可拿货,招校园代理 &#xff1a;文章底部获取博主联系方式&#xff01;基于Django的社区健身器材报修系统与公园管理系统 该系统旨在通过数字化手段提…

HTTP 错误码

500 internal server error这通常是服务器内部错误&#xff0c;如代码有问题503 service unavailable通常由于服务器过载&#xff0c;不能响应当前的请求&#xff0c;简单点说&#xff0c;用户请求数(并发)过大&#xff0c;超过了服务器的限制&#xff0c;服务器拒绝了用户的请…

毕业论文AI率太高怎么办?降ai率从80%降到15%!免费降ai率工具实测。

国庆假期一过&#xff0c;又到“论文人”的修罗场。朋友们&#xff0c;你是不是也被AIGC检测折磨过&#xff1f; 明明一行一字都自己写的&#xff0c;结果检测报告红得像过年&#xff1a;AI率99%&#xff01;那一刻真的想原地删库跑路。 不过话说回来&#xff0c;这两年确实有…

学长亲荐2026研究生AI论文工具TOP10:开题文献综述全攻略

学长亲荐2026研究生AI论文工具TOP10&#xff1a;开题文献综述全攻略 2026年研究生AI论文工具测评&#xff1a;精准匹配学术需求的实用指南 随着人工智能技术在学术领域的深度渗透&#xff0c;越来越多的研究生开始依赖AI工具提升论文写作效率。然而&#xff0c;面对市场上琳琅满…

python基于django的社区团购系统_0d5k06f6

目录 社区团购系统概述核心功能模块技术实现要点扩展性与优化 关于博主开发技术路线相关技术介绍核心代码参考示例结论源码lw获取/同行可拿货,招校园代理 &#xff1a;文章底部获取博主联系方式&#xff01; 社区团购系统概述 基于Django的社区团购系统是一个结合电子商务与社…

【k8s设置污点/容忍】

背景&#xff1a; 一个应用占用的资源很大&#xff0c;而节点不是很大时&#xff0c;需要让这个应用单独占据一个节点&#xff0c;不让别的应用调度到这个节点上&#xff0c;从而避免业务高峰时资源不够在node上设置污点kubectl taint nodes node-1 dedicatedadmin-server:NoSc…

2026毕业生必看!4个实测降ai率工具4,教你如何利用ai降ai技巧,轻松实现免费降低ai率。

写论文最怕什么&#xff1f;不是写不出来&#xff0c;而是写出来被系统一测&#xff0c;AI率高得吓人。明明自己花了不少心思&#xff0c;结果报告上红彤彤一片&#xff0c;动不动就是 80% 以上。别提多崩溃了。 其实呢&#xff0c;想要顺利过关&#xff0c;关键是要学会降低ai…