返回顶部
首页 > 资讯 > 精选 >微信小程序如何实现雷达图
  • 116
分享到

微信小程序如何实现雷达图

2023-06-26 09:06:38 116人浏览 薄情痞子
摘要

这篇文章给大家分享的是有关微信小程序如何实现雷达图的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。雷达图(Radar Chart),又可称为戴布拉图、蜘蛛网图(Spider Chart),是财务分析报表的一种。即将

这篇文章给大家分享的是有关微信小程序如何实现雷达图的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。

雷达图(Radar Chart),又可称为戴布拉图、蜘蛛网图(Spider Chart),是财务分析报表的一种。即将一个公司的各项财务分析所得的数字或比率,就其比较重要的项目集中划在一个圆形的图表上,来表现一个公司各项财务比率的情况,使用者能一目了然的了解公司各项财务指标的变动情形及其好坏趋向。

先来看看效果图

开始上菜:

//.wxml ,接下来的操作将在这个canvas上面绘制<view class='radarContainer'><canvas class='radarCanvas' canvas-id='radarCanvas'></canvas></view>
//.wxss.radarContainer{   background-color: black;   width:100%;   height:420px;   display: flex;   justify-content:center;    align-items: center;    position: relative; }.radarCanvas{   width:400px;   height:400px;   margin: 0 auto;   position: absolute;}
//.js初始化数据:(我没写在data中)var numCount = 6;  //元素个数var numSlot = 5;  //一条线上的总节点数var mW = 400;  //Canvas的宽度var mCenter = mW / 2; //中心点var mAngle = Math.PI * 2 / numCount; //角度var mRadius = mCenter - 60; //半径(减去的值用于给绘制的文本留空间)//获取指定的Canvasvar radCtx = wx.createCanvasContext("radarCanvas")
//.js  模拟对战两方的数据  data: {    chanelArray1:[["战绩",88],["生存",30],["团战",66],["发育",90],["输出",95],["推进",88]],    chanelArray2: [["战绩", 24], ["生存", 60], ["团战", 88], ["发育", 49], ["输出", 46], ["推进", 92]]  },


基础数据准备完成,开始画图

// 第一步:绘制6条边 drawEdge: function(){   radCtx.setStrokeStyle("white")   radCtx.setLineWidth(2)  //设置线宽 for (var i = 0; i < numSlot; i++) { //计算半径     radCtx.beginPath() var rdius = mRadius / numSlot * (i + 1) //画6条线段 for (var j = 0; j < numCount; j++) { //坐标 var x = mCenter + rdius * Math.cos(mAngle * j); var y = mCenter + rdius * Math.sin(mAngle * j);       radCtx.lineTo(x, y);     }     radCtx.closePath()     radCtx.stroke()   }  },


 

// 第二步:绘制连接点  drawLinePoint:function(){    radCtx.beginPath(); for (var k = 0; k < numCount; k++) { var x = mCenter + mRadius * Math.cos(mAngle * k); var y = mCenter + mRadius * Math.sin(mAngle * k);      radCtx.moveTo(mCenter, mCenter);      radCtx.lineTo(x, y);    }    radCtx.stroke();  },


 

 

//第三步:绘制文字(文字位置可能需要微调)    drawTextCans: function (mData){      radCtx.setFillStyle("white")      radCtx.font = 'bold 17px cursive' //设置字体 for (var n = 0; n < numCount; n++) { var x = mCenter + mRadius * Math.cos(mAngle * n); var y = mCenter + mRadius * Math.sin(mAngle * n); // radCtx.fillText(mData[n][0], x, y); //通过不同的位置,调整文本的显示位置 if (mAngle * n >= 0 && mAngle * n <= Math.PI / 2) {          radCtx.fillText(mData[n][0], x+5, y+5);        } else if (mAngle * n > Math.PI / 2 && mAngle * n <= Math.PI) {          radCtx.fillText(mData[n][0], x - radCtx.measureText(mData[n][0]).width-7, y+5);        } else if (mAngle * n > Math.PI && mAngle * n <= Math.PI * 3 / 2) {          radCtx.fillText(mData[n][0], x - radCtx.measureText(mData[n][0]).width-5, y);        } else {          radCtx.fillText(mData[n][0], x+7, y+2);        }      }    },


 

//绘制红色数据区域(数据和填充颜色)  drawRegion: function (mData,color){       radCtx.beginPath(); for (var m = 0; m < numCount; m++){ var x = mCenter + mRadius * Math.cos(mAngle * m) * mData[m][1] / 100; var y = mCenter + mRadius * Math.sin(mAngle * m) * mData[m][1] / 100;      radCtx.lineTo(x, y);      }      radCtx.closePath();      radCtx.setFillStyle(color)      radCtx.fill();    },


 

//画点    drawCircle: function(mData,color){ var r = 3; //设置节点小圆点的半径 for(var i = 0; i<numCount; i ++){ var x = mCenter + mRadius * Math.cos(mAngle * i) * mData[i][1] / 100; var y = mCenter + mRadius * Math.sin(mAngle * i) * mData[i][1] / 100;          radCtx.beginPath();          radCtx.arc(x, y, r, 0, Math.PI * 2);          radCtx.fillStyle = color;          radCtx.fill();        }    }

 


重复四五步的方法添加另一方的雷达图

 

.js文件完整内容如下var numCount = 6;var numSlot = 5;var mW = 400;var mH = 400;var mCenter = mW / 2; //中心点var mAngle = Math.PI * 2 / numCount; //角度var mRadius = mCenter - 60; //半径(减去的值用于给绘制的文本留空间)//获取Canvasvar radCtx = wx.createCanvasContext("radarCanvas")Page({   data: { stepText:5, chanelArray1:[["战绩",88],["生存",30],["团战",66],["发育",90],["输出",95],["推进",88]], chanelArray2: [["战绩", 24], ["生存", 60], ["团战", 88], ["发育", 49], ["输出", 46], ["推进", 92]]  },   onReady: function () { //雷达图 this.drawRadar()  }, // 雷达图  drawRadar:function(){ var sourceData1 = this.data.chanelArray1 var sourceData2 = this.data.chanelArray2 //调用 this.drawEdge() this.drawLinePoint() //设置数据 this.drawRegion(sourceData1,'rgba(255, 0, 0, 0.5)') //第一个人的 this.drawRegion(sourceData2, 'rgba(255, 200, 0, 0.5)') //第二个人 //设置文本数据 this.drawTextCans(sourceData1) //设置节点 this.drawCircle(sourceData1,'red') this.drawCircle(sourceData2,'yellow') //开始绘制    radCtx.draw()  }, // 绘制6条边  drawEdge: function(){    radCtx.setStrokeStyle("white")    radCtx.setLineWidth(2)  //设置线宽 for (var i = 0; i < numSlot; i++) { //计算半径      radCtx.beginPath() var rdius = mRadius / numSlot * (i + 1) //画6条线段 for (var j = 0; j < numCount; j++) { //坐标 var x = mCenter + rdius * Math.cos(mAngle * j); var y = mCenter + rdius * Math.sin(mAngle * j);        radCtx.lineTo(x, y);      }      radCtx.closePath()      radCtx.stroke()    }   }, // 绘制连接点  drawLinePoint:function(){    radCtx.beginPath(); for (var k = 0; k < numCount; k++) { var x = mCenter + mRadius * Math.cos(mAngle * k); var y = mCenter + mRadius * Math.sin(mAngle * k);      radCtx.moveTo(mCenter, mCenter);      radCtx.lineTo(x, y);    }    radCtx.stroke();  }, //绘制数据区域(数据和填充颜色)  drawRegion: function (mData,color){       radCtx.beginPath(); for (var m = 0; m < numCount; m++){ var x = mCenter + mRadius * Math.cos(mAngle * m) * mData[m][1] / 100; var y = mCenter + mRadius * Math.sin(mAngle * m) * mData[m][1] / 100;      radCtx.lineTo(x, y);      }      radCtx.closePath();      radCtx.setFillStyle(color)      radCtx.fill();    }, //绘制文字    drawTextCans: function (mData){      radCtx.setFillStyle("white")      radCtx.font = 'bold 17px cursive' //设置字体 for (var n = 0; n < numCount; n++) { var x = mCenter + mRadius * Math.cos(mAngle * n); var y = mCenter + mRadius * Math.sin(mAngle * n); // radCtx.fillText(mData[n][0], x, y); //通过不同的位置,调整文本的显示位置 if (mAngle * n >= 0 && mAngle * n <= Math.PI / 2) {          radCtx.fillText(mData[n][0], x+5, y+5);        } else if (mAngle * n > Math.PI / 2 && mAngle * n <= Math.PI) {          radCtx.fillText(mData[n][0], x - radCtx.measureText(mData[n][0]).width-7, y+5);        } else if (mAngle * n > Math.PI && mAngle * n <= Math.PI * 3 / 2) {          radCtx.fillText(mData[n][0], x - radCtx.measureText(mData[n][0]).width-5, y);        } else {          radCtx.fillText(mData[n][0], x+7, y+2);        }      }    }, //画点    drawCircle: function(mData,color){ var r = 3; //设置节点小圆点的半径 for(var i = 0; i<numCount; i ++){ var x = mCenter + mRadius * Math.cos(mAngle * i) * mData[i][1] / 100; var y = mCenter + mRadius * Math.sin(mAngle * i) * mData[i][1] / 100;          radCtx.beginPath();          radCtx.arc(x, y, r, 0, Math.PI * 2);          radCtx.fillStyle = color;          radCtx.fill();        }      }})

感谢各位的阅读!关于“微信小程序如何实现雷达图”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,让大家可以学到更多知识,如果觉得文章不错,可以把它分享出去让更多的人看到吧!

--结束END--

本文标题: 微信小程序如何实现雷达图

本文链接: https://lsjlt.com/news/308406.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • 微信小程序如何实现雷达图
    这篇文章给大家分享的是有关微信小程序如何实现雷达图的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。雷达图(Radar Chart),又可称为戴布拉图、蜘蛛网图(Spider Chart),是财务分析报表的一种。即将...
    99+
    2023-06-26
  • 微信小程序实现扫雷游戏
    本文实例为大家分享了微信小程序实现扫雷游戏的具体代码,供大家参考,具体内容如下 实验小提醒,打开微信小程序模板时,一定要看清楚,要选js模板,不要选ts模板,因为ts中对数据类型检查...
    99+
    2024-04-02
  • 微信小程序中如何实现地图map
    这篇文章主要介绍微信小程序中如何实现地图map,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!微信小程序 地图map微信小程序map地图属性名类型默认值说明longitudeNumbe...
    99+
    2024-04-02
  • 微信小程序中如何实现轮播图
    这篇文章主要介绍了微信小程序中如何实现轮播图,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。业务需求:5个图片轮番播放,可以左右滑动,点击指示...
    99+
    2024-04-02
  • 微信小程序如何实现上传图片
    这篇文章主要介绍微信小程序如何实现上传图片,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完! 一 小程序端user.wxml<view class='u...
    99+
    2024-04-02
  • 微信小程序中如何实现map地图
    小编给大家分享一下微信小程序中如何实现map地图,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!前言微信小程序地图操作比较简单,a...
    99+
    2024-04-02
  • 微信小程序如何实现拼图游戏
    这篇文章给大家分享的是有关微信小程序如何实现拼图游戏的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。具体内容如下页面展示项目链接微信小程序实现拼图游戏项目设计首页面wxml<!--index.wxml--&g...
    99+
    2023-06-20
  • 微信小程序如何实现地图划线
    这篇文章将为大家详细讲解有关微信小程序如何实现地图划线,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。微信小程序地图划线,是小程序很基本的功能,那么小程序地图划线要怎么实现呢。var point&...
    99+
    2023-06-26
  • 微信小程序如何实现裁剪图片大小
    这篇文章主要介绍“微信小程序如何实现裁剪图片大小”,在日常操作中,相信很多人在微信小程序如何实现裁剪图片大小问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”微信小程序如何实现裁剪图片大小”的疑惑有所帮助!接下来...
    99+
    2023-06-30
  • 微信小程序实现经典window扫雷游戏
    前言 打开手机游戏列表发现了一款经典的扫雷游戏,在玩的过程中发现游戏逻辑应该不难,想着是不是能自己写写这个游戏,后来用了1天实现了整体游戏开发,于是有了这篇文章来总结整体的游戏开发思...
    99+
    2024-04-02
  • 微信小程序如何实现slider
    这篇文章给大家分享的是有关微信小程序如何实现slider的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。实现效果图:滑动选择器属性名类型默认值说明minNumber0最小值maxN...
    99+
    2024-04-02
  • 微信小程序如何实现tabBar
    这篇文章主要介绍了微信小程序如何实现tabBar,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。具体如下:1、效果展示2、原理:在app.js...
    99+
    2024-04-02
  • 微信小程序如何实现图片自适应
    这篇文章主要介绍了微信小程序如何实现图片自适应,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。首先我们来看看图片组件给的一些说明:属性名类型默...
    99+
    2024-04-02
  • 微信小程序带图片弹窗如何实现
    本篇内容主要讲解“微信小程序带图片弹窗如何实现 ”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“微信小程序带图片弹窗如何实现 ”吧!下面我来介绍一种使用官方组件就能实现的方法:首先找到官方文档:显...
    99+
    2023-06-26
  • 微信小程序图片懒加载如何实现
    这篇文章主要介绍“微信小程序图片懒加载如何实现”,在日常操作中,相信很多人在微信小程序图片懒加载如何实现问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”微信小程序图片懒加载如何实现”的疑惑有所帮助!接下来,请跟...
    99+
    2023-06-26
  • 微信小程序中如何实现微信支付
    微信支付是微信公众平台提供的一种在线支付服务,可以为用户提供快速、方便、安全的支付体验。而在微信小程序中实现微信支付,则可以为应用程序提供更多的功能和服务,提高用户体验和商业价值。因此,在本文中,我们将介绍如何在微信小程序中实现微信支付。 ...
    99+
    2023-08-16
    微信小程序 微信 小程序 前端 javascript
  • 微信小程序实现拼图游戏
    本文实例为大家分享了微信小程序实现拼图游戏的具体代码,供大家参考,具体内容如下 页面展示 项目链接 微信小程序实现拼图游戏 项目设计 首页面 wxml <!--inde...
    99+
    2024-04-02
  • 微信小程序实现上传图片
    本文实例为大家分享了微信小程序实现上传图片的具体代码,供大家参考,具体内容如下 //wxml <button class='button' bingtap="uploadSom...
    99+
    2024-04-02
  • 微信小程序实现图片上传
    微信小程序实现图片上传 最近做了个小程序,涉及到了图片上传的功能,今天给大家详细介绍下如何实现小程序图片上传,话不多说先上代码 首先是静态布局和样式部分 .wxml代码部分 ...
    99+
    2023-09-07
    微信小程序 小程序 微信
  • 微信小程序开发如何实现地图功能
    这篇文章主要讲解了“微信小程序开发如何实现地图功能”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“微信小程序开发如何实现地图功能”吧!基本使用地图组件使用起来也很简单。.wxml<map...
    99+
    2023-06-26
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作